Given two integers as input in an array, draw a rectangle, using the first integer as width and second as height.
Or, if your language supports it, the two integers can be given as separate inputs.
Assume the width and height will never be less than 3, and they will always be given.
Example Outputs:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
This is code-golf, so the answer with the lowest amount of bytes wins.
45 Answers 45
Jelly, 14 bytes
,þ%,ỊḄị"-|| "Y
Try it online! or verify all test cases.
How it works
,þ%,ỊḄị"-|| "Y Main link. Left argument: w. Right argument: h
,þ Pair table; yield a 2D array of all pairs [i, j] such that
1 ≤ i ≤ w and 1 ≤ j ≤ h.
, Pair; yield [w, h].
% Take the remainder of the element-wise division of each [i, j]
by [w, h]. This replaces the highest coordinates with zeroes.
Ị Insignificant; map 0 and 1 to 1, all other coordinates to 0.
Ḅ Unbinary; convert each pair from base 2 to integer.
[0, 0] -> 0 (area)
[0, 1] -> 1 (top or bottom edge)
[1, 0] -> 2 (left or right edge)
[1, 1] -> 3 (vertex)
"-|| " Yield that string. Indices are 1-based and modular in Jelly, so the
indices of the characters in this string are 1, 2, 3, and 0.
ị At-index; replace the integers by the correspoding characters.
Y Join, separating by linefeeds.
-
\$\begingroup\$ This is a wonderful use of
Ị
:) \$\endgroup\$lynn– lynn2016年09月19日 12:01:03 +00:00Commented Sep 19, 2016 at 12:01
Matlab, (削除) 69 (削除ここまで) (削除) 65 (削除ここまで) 56 bytes
Thanks @WeeingIfFirst and @LuisMendo for some bytes=)
function z=f(a,b);z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])='|'
This is really simple in Matlab: First make a matrix of the desired size, then index the first and last row to insert the -
, and do the same with the first and last column to insert |
.
For example f(4,3)
returns
|--|
| |
|--|
-
\$\begingroup\$ @WeeingIfFirst Oh, of course, thank you very much! \$\endgroup\$flawr– flawr2016年09月18日 14:22:06 +00:00Commented Sep 18, 2016 at 14:22
-
\$\begingroup\$ 6 bytes shorter:
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
\$\endgroup\$Stewie Griffin– Stewie Griffin2016年09月18日 14:31:10 +00:00Commented Sep 18, 2016 at 14:31 -
\$\begingroup\$ Even shorter:
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
\$\endgroup\$Luis Mendo– Luis Mendo2016年09月18日 14:54:21 +00:00Commented Sep 18, 2016 at 14:54 -
\$\begingroup\$ @LuisMendo Thanks! We still need the string tough, otherwise the array is converted to a numerical one. \$\endgroup\$flawr– flawr2016年09月18日 14:55:46 +00:00Commented Sep 18, 2016 at 14:55
-
\$\begingroup\$ @flawr
z(b,a)=' '
initiallizes as char. After that you can fill with numbers and they are automatically cast to char.z
maintains its original type \$\endgroup\$Luis Mendo– Luis Mendo2016年09月18日 14:56:50 +00:00Commented Sep 18, 2016 at 14:56
JavaScript (ES6), 63 bytes
f=
(w,h,g=c=>`|${c[0].repeat(w-2)}|
`)=>g`-`+g` `.repeat(h-2)+g`-`
;
<div oninput=o.textContent=f(w.value,h.value)><input id=w type=number min=3 value=3><input id=h type=number min=3 value=3><pre id=o>
-
\$\begingroup\$ Passing a template function as a default argument? Clever! \$\endgroup\$Nebula– Nebula2016年09月19日 01:04:08 +00:00Commented Sep 19, 2016 at 1:04
-
\$\begingroup\$ If we allow nested functions (i.e.
f(3)(5)
instead off(3,5)
), one more byte can be saved \$\endgroup\$Weird Glyphs– Weird Glyphs2025年07月07日 09:58:07 +00:00Commented Jul 7 at 9:58
Haskell, (削除) 62 (削除ここまで) 55 bytes
f[a,b]n=a:(b<$[3..n])++[a]
g i=unlines.f[f"|-"i,f"| "i]
Usage example:
*Main> putStr $ g 10 3
|--------|
| |
|--------|
The helper function f
takes a two element list [a,b]
and a number n
and returns a list of one a
followed by n-2
b
s followed by one a
. We can use f
thrice: to build the top/bottom line: f "|-" i
, a middle line: f "| " i
and from those two the whole rectangle: f [<top>,<middle>] j
(note: j
doesn't appear as a parameter in g i
because of partial application).
Edit: @dianne saved some bytes by combining two Char
arguments into one String
of length 2. Thanks a lot!
-
\$\begingroup\$ I like the
#
idea! \$\endgroup\$flawr– flawr2016年09月18日 15:54:29 +00:00Commented Sep 18, 2016 at 15:54 -
2\$\begingroup\$ I think you can save a few bytes by defining
(a:b)#n=a:([3..n]>>b)++[a]
and writing["|-"#i,"| "#i]#j
\$\endgroup\$dianne– dianne2016年09月18日 20:00:08 +00:00Commented Sep 18, 2016 at 20:00 -
\$\begingroup\$ @dianne: Very clever. Thanks a lot! \$\endgroup\$nimi– nimi2016年09月18日 20:33:00 +00:00Commented Sep 18, 2016 at 20:33
Python 2, (削除) 61 (削除ここまで) 58 bytes
-3 bytes thanks to @flornquake (remove unnecessary parentheses; use h
as counter)
def f(w,h):exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
Test cases are at ideone
-
\$\begingroup\$
('- '[1<i<h])
doesn't need the parentheses. \$\endgroup\$flornquake– flornquake2016年09月19日 12:24:01 +00:00Commented Sep 19, 2016 at 12:24 -
\$\begingroup\$ Save another byte by using h as the counter:
exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
\$\endgroup\$flornquake– flornquake2016年09月19日 12:35:07 +00:00Commented Sep 19, 2016 at 12:35 -
\$\begingroup\$ @flornquake I had meant to check the necessity of those parentheses, but forgot. Using
h
as the counter is smart! Thanks. \$\endgroup\$Jonathan Allan– Jonathan Allan2016年09月19日 17:23:45 +00:00Commented Sep 19, 2016 at 17:23
Vimscript, (削除) 93 (削除ここまで) (削除) 83 (削除ここまで) (削除) 75 (削除ここまで) (削除) 74 (削除ここまで) (削除) 73 (削除ここまで) (削除) 66 (削除ここまで) (削除) 64 (削除ここまで) 63 bytes
Code
fu A(...)
exe "norm ".a:1."i|\ehv0lr-YpPgvr dd".a:2."p2dd"
endf
Example
:call A(3,3)
Explanation
fun A(...) " a function with unspecified params (a:1 and a:2)
exe " exe(cute) command - to use the parameters we must concatenate :(
norm " run in (norm) al mode
#i| " insert # vertical bars
\e " return (`\<Esc>`) to normal mode
hv0l " move left, enter visual mode, go to the beginning of the line, move right (selects inner `|`s)
r- " (r)eplace the visual selection by `-`s
YpP " (Y) ank the resulting line, and paste them twice
gv " re-select the previous visual selection
r<Space> " replace by spaces
dd " Cut the line
#p " Paste # times (all inner rows)
2dd " Remove extra lines
Note that it is not using norm!
so it might interfere with vim custom mappings!
PHP, 74 Bytes
for(;$i<$n=$argv[2];)echo str_pad("|",$argv[1]-1,"- "[$i++&&$n-$i])."|\n";
-
1\$\begingroup\$ You can still win one byte with a physical linebreak. \$\endgroup\$Titus– Titus2016年09月18日 14:16:27 +00:00Commented Sep 18, 2016 at 14:16
-
1\$\begingroup\$ -2 bytes with
!$i|$n==++$i
instead of!$i|$n-1==$i++
\$\endgroup\$Titus– Titus2016年09月18日 14:22:00 +00:00Commented Sep 18, 2016 at 14:22 -
1\$\begingroup\$ another byte with
$i++&&$n-$i?" ":"-"
\$\endgroup\$Titus– Titus2016年09月18日 14:58:27 +00:00Commented Sep 18, 2016 at 14:58 -
1\$\begingroup\$
$i++&&$n-$i?" ":"-"
-->"- "[$i++&&$n-$i]
(-2) \$\endgroup\$Titus– Titus2016年09月28日 08:05:16 +00:00Commented Sep 28, 2016 at 8:05
Jolf, 6 bytes
,ajJ'|
Try it here! My box builtin finally came in handy! :D
,ajJ'|
,a draw a box
j with width (input 1)
J and height (input 2)
' with options
| - corner
- the rest are defaults
MATL, 19 bytes
'|-| '2:"iqWQB]E!+)
Explanation
The approach is similar to that used in this other answer. The code builds a numerical array of the form
3 2 2 2 3
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
3 2 2 2 3
and then its values are used as (1-based, modular) indices into the string '|-| '
to produce the desired result.
'|-| ' % Push this string
2:" ] % Do this twice
i % Take input
q % Subtract 1
W % 2 raised to that
Q % Add 1
B % Convert to binary
E % Multiply by 2
! % Transpose
+ % Add with broadcast
) % Index (modular, 1-based) into the string
05AB1E, (削除) 23 (削除ここまで) (削除) 22 (削除ここまで) 20 bytes
Input taken as height, then width.
F„ -N_N1&l×ばつ'|.ø,
Explanation
F # height number of times do
N_ # current row == first row
~ # OR
N1<Q # current row == last row
„ - è # use this to index into " -"
×ばつ # repeat this char width-2 times
'| # push a pipe
.ø # surround the repeated string with the pipe
, # print with newline
Saved 2 bytes thanks to Adnan
-
\$\begingroup\$ Using substrings instead of the if-else statement saves two bytes:
F„ -N_N¹<Q~è²Í×'|.ø,
. \$\endgroup\$Adnan– Adnan2016年09月18日 15:01:31 +00:00Commented Sep 18, 2016 at 15:01
C, 73 bytes
i;f(w,h){for(i=++w*h;i--;)putchar(i%w?~-i%w%~-~-w?i/w%~-h?32:45:124:10);}
Python 2, 56 bytes
w,h=input()
for c in'-%*c'%(h-1,45):print'|'+c*(w-2)+'|'
flornquake saved one byte.
-
1\$\begingroup\$ Nice use of string formatting! You can save a byte using
%c
conversion:'-%*c'%(h-1,45)
\$\endgroup\$flornquake– flornquake2016年09月19日 12:47:16 +00:00Commented Sep 19, 2016 at 12:47 -
\$\begingroup\$ Oh, I thought
%*c
wasn’t even a thing! Thank you. :) \$\endgroup\$lynn– lynn2016年09月19日 13:41:58 +00:00Commented Sep 19, 2016 at 13:41 -
\$\begingroup\$
'-%%%dc'%~-h%45
also works for the same length. \$\endgroup\$xnor– xnor2016年09月19日 19:33:06 +00:00Commented Sep 19, 2016 at 19:33
Common Lisp, 104 bytes
Golfed:
(defun a(w h)(flet((f(c)(format t"|~v@{~A~:*~}|~%"(- w 2)c)))(f"-")(loop repeat(- h 2)do(f" "))(f"-")))
Ungolfed:
(defun a (w h)
(flet ((f (c) (format t "|~v@{~A~:*~}|~%" (- w 2) c)))
(f "-")
(loop repeat (- h 2) do
(f " "))
(f "-")))
Turtlèd, 40 bytes
Interpreter is (削除) slightly (削除ここまで) no longer buggèd
?;,u[*'|u]'|?@-[*:l'|l[|,l]d@ ],ur[|'-r]
Explanation
? - input integer into register
; - move down by the contents of register
, - write the char variable, default *
u - move up
[* ] - while current cell is not *
'| - write |
u - move up
'| - write | again
? - input other integer into register
@- - set char variable to -
[* ] - while current char is not *
:l'|l - move right by amount in register, move left, write |, move left again
[|,l] - while current cell is not |, write char variable, move left
d@ - move down, set char variable to space (this means all but first iteration of loop writes space)
,ur -write char variable, move up, right
[| ] -while current char is not |
'-r - write -, move right
Mathematica, (削除) 67 (削除ここまで) 64 bytes
Thanks to lastresort and TuukkaX for reminding me that golfers should be sneaky and saving 3 bytes!
Straightforward implementation. Returns an array of strings.
Table[Which[j<2||j==#,"|",i<2||i==#2,"-",0<1," "],{i,#2},{j,#}]&
-
1\$\begingroup\$ Use
0<1
in place ofTrue
\$\endgroup\$user58632– user586322016年09月19日 11:59:52 +00:00Commented Sep 19, 2016 at 11:59 -
1\$\begingroup\$ I think that
j==1
can be reduced toj<1
, andi==1
toi<1
. \$\endgroup\$Yytsi– Yytsi2016年09月19日 17:34:57 +00:00Commented Sep 19, 2016 at 17:34
Python 3, (削除) 104 (削除ここまで) 95 bytes
( feedback from @mbomb007 : -9 bytes)
def d(x,y):return'\n'.join(('|'+('-'*(x-2)if n<1or n==~-y else' '*(x-2))+'|')for n in range(y))
(my first code golf, appreciate feedback)
-
\$\begingroup\$ Welcome! You can remove some of the spaces, use
range(y)
instead ofrange(0,y)
, and ifn
is never negative you can useif n<1or n==~-y else
\$\endgroup\$mbomb007– mbomb0072016年09月19日 13:56:18 +00:00Commented Sep 19, 2016 at 13:56 -
\$\begingroup\$ See the Python tips page \$\endgroup\$mbomb007– mbomb0072016年09月19日 13:56:34 +00:00Commented Sep 19, 2016 at 13:56
Batch, 128 bytes
@set s=
@for /l %%i in (3,1,%1)do @call set s=-%%s%%
@echo ^|%s%^|
@for /l %%i in (3,1,%2)do @echo ^|%s:-= %^|
@echo ^|%s%^|
Takes width and height as command-line parameters.
Haxe, (削除) 112 (削除ここまで) 106 bytes
function R(w,h){for(l in 0...h){var s="";for(i in 0...w)s+=i<1||i==w-1?'|':l<1||l==h-1?'-':' ';trace(s);}}
Testcases
R(5, 8)
|---|
| |
| |
| |
| |
| |
| |
|---|
R(10, 3)
|---------|
| |
|---------|
Java 135 bytes
public String rect(int x, int y){
String o="";
for(int i=-1;++i<y;){
o+="|";
for(int j=2;++j<x)
if(i<1||i==y-1)
o+="-";
else
o+=" ";
o+="|\n";
}
return o;
}
Golfed:
String r(int x,int y){String o="";for(int i=-1;++i<y;){o+="|";for(int j=2;++j<x;)if(i<1||i==y-1)o+="-";else o+=" ";o+="|\n";}return o;}
-
\$\begingroup\$ I count 136 :) You can also save a char by removing the space after the first comma. \$\endgroup\$Christian Rondeau– Christian Rondeau2016年09月18日 20:31:12 +00:00Commented Sep 18, 2016 at 20:31
-
1\$\begingroup\$ First of all, this code doesn't compile. Even if this would compile, it wouldn't 'draw' a rectangle as the OP currently wants. -1. \$\endgroup\$Yytsi– Yytsi2016年09月18日 20:49:01 +00:00Commented Sep 18, 2016 at 20:49
-
\$\begingroup\$ @TuukkaX I fixed that newline problem, but I don't see any reason why it should not compile. Of course you have to put that code in a class, but then it should work. \$\endgroup\$Linnea Gräf– Linnea Gräf2016年09月19日 04:42:36 +00:00Commented Sep 19, 2016 at 4:42
-
1\$\begingroup\$ "I don't see any reason why it should not compile". What's this then:
o+=x "|\n"
? Did you mean to put an+
there? \$\endgroup\$Yytsi– Yytsi2016年09月19日 04:55:11 +00:00Commented Sep 19, 2016 at 4:55 -
\$\begingroup\$ Thanks. I didn't wanted to place any characters there. \$\endgroup\$Linnea Gräf– Linnea Gräf2016年09月19日 05:12:47 +00:00Commented Sep 19, 2016 at 5:12
PowerShell v3+, 55 bytes
param($a,$b)1..$b|%{"|$((' ','-')[$_-in1,$b]*($a-2))|"}
Takes input $a
and $b
. Loops from 1
to $b
. Each iteration, we construct a single string. The middle is selected from an array of two single-length strings, then string-multiplied by $a-2
, while it's surrounded by pipes. The resulting strings are left on the pipeline, and output via implicit Write-Output
happens on program completion, with default newline separator.
Alternatively, also at 55 bytes
param($a,$b)1..$b|%{"|$((''+' -'[$_-in1,$b])*($a-2))|"}
This one came about because I was trying to golf the array selection in the middle by using a string instead. However, since [char]
times [int]
isn't defined, we lose out on the savings by needing to cast as a string with parens and ''+
.
Both versions require v3 or newer for the -in
operator.
Examples
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 10 3
|--------|
| |
|--------|
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 7 6
|-----|
| |
| |
| |
| |
|-----|
PHP, 82 bytes
list(,$w,$h)=$argv;for($p=$h--*$w;$p;)echo$p--%$w?$p%$w?$p/$w%$h?" ":"-":"|
":"|";
indexing a static string including the newline
list(,$w,$h)=$argv; // import arguments
for($p=$h--*++$w;$p;) // loop $p through all positions counting backwards
// decrease $h and increase $w to avoid parens in ternary conditions
echo" -|\n"[
$p--%$w // not (last+1 column -> 3 -> "\n")
? $p%$w%($w-2) // not (first or last row -> 2 -> "|")
?+!($p/$w%$h) // 0 -> space for not (first or last row -> 1 -> "-")
:2
:3
];
-
\$\begingroup\$ Dear downvoter: why? \$\endgroup\$Titus– Titus2016年09月19日 13:55:03 +00:00Commented Sep 19, 2016 at 13:55
-
1\$\begingroup\$ It could be because a user saw that your answer was flagged as low quality in the review queue. If you post an explanation of your code, or anything more than a one-liner, you can avoid it being automatically flagged. \$\endgroup\$mbomb007– mbomb0072016年09月19日 14:33:58 +00:00Commented Sep 19, 2016 at 14:33
-
\$\begingroup\$ @mbomb: I have never seen anyone post a description for a oneliner in a non-eso language. \$\endgroup\$Titus– Titus2016年09月19日 16:06:41 +00:00Commented Sep 19, 2016 at 16:06
-
\$\begingroup\$ Or output, or a non-golfed version. It doesn't matter as long as the content is not too short. But you probably haven't been around long if you haven't seen that. Some Python one-liners can be pretty complicated. Look at some of @xnor's. \$\endgroup\$mbomb007– mbomb0072016年09月19日 18:12:16 +00:00Commented Sep 19, 2016 at 18:12
Ruby, (削除) 59 (削除ここまで) (削除) 54 (削除ここまで) 52 bytes
Oh, that's a lot simpler :)
->x,y{y.times{|i|puts"|#{(-~i%y<2??-:' ')*(x-2)}|"}}
-
1\$\begingroup\$ You can save a couple bytes by using a literal newlines instead of
\n
. \$\endgroup\$Jordan– Jordan2016年09月18日 16:29:33 +00:00Commented Sep 18, 2016 at 16:29 -
1\$\begingroup\$ You can save bytes by not defining
i
andj
. Replacei
's definition withx-=2
. Instead ofj
, just use(y-2)
. \$\endgroup\$m-chrzan– m-chrzan2016年09月19日 05:25:27 +00:00Commented Sep 19, 2016 at 5:25
Perl, 48 bytes
Includes +1 for -n
Give sizes as 2 lines on STDIN
perl -nE 'say"|".$_ x($`-2)."|"for"-",($")x(<>-1-/$/),"-"'
3
8
^D
Just the code:
say"|".$_ x($`-2)."|"for"-",($")x(<>-1-/$/),"-"
-
\$\begingroup\$ Nice one, as always. Note that you've got a backtick at the end of the line while you probably wanted to write a single quote ;-) \$\endgroup\$Dada– Dada2016年09月19日 21:21:55 +00:00Commented Sep 19, 2016 at 21:21
-
\$\begingroup\$ @Dada Fixed. Thanks. \$\endgroup\$Ton Hospel– Ton Hospel2016年09月19日 22:00:34 +00:00Commented Sep 19, 2016 at 22:00
Lua, (削除) 120 (削除ここまで) 93 bytes
Saved quite a few bytes by removing stupid over complexities.
function(w,h)function g(s)return'|'..s:rep(w-2)..'|\n'end b=g'-'print(b..g' ':rep(h-2)..b)end
Ungolfed:
function(w,h) -- Define Anonymous Function
function g(s) -- Define 'Row Creation' function. We use this twice, so it's less bytes to function it.
return'|'..s:rep(w-2)..'|\n' -- Sides, Surrounding the chosen filler character (' ' or '-'), followed by a newline
end
b=g'-' -- Assign the top and bottom rows to the g of '-', which gives '|---------|', or similar.
print(b..g' ':rep(h-2)..b) -- top, g of ' ', repeated height - 2 times, bottom. Print.
end
bash, sed and coreutils, (削除) 95 (削除ここまで) 89 bytes
You can define a function like this
f(){ n=$[1ドル-2];yes \ |sed $[2ドル*n]q|tr -d \\n|fold -w$n|sed 's/^\|$/|/g;1!{$!b};s/ /-/g';}
Or in a more readable format:
f() {
n=$((1ドル-2))
# The next couple of lines create a rectangle of spaces
# matching the desired size
yes ' ' |
head -n$((2ドル*n)) |
tr -d '\n' |
fold -w$n |
# Add the pipes and dashes
sed '
s/^\|$/|/g # Replace first and last character by a pipe
1! {$!b } # Do nothing if not on first or last line
s/ /-/g # Add the dashes
'
echo
}
You can now say f 4 3
:
|--|
| |
|--|
If you care about trailing new-line, add an echo at the end of function.
Bash and seq, (削除) 132 (削除ここまで) 108 bytes
b(){ echo -n "|";for i in $(seq 3 1ドル);do echo -n "2ドル";done;echo "|";}
r(){ b 1ドル "-";for i in $(seq 3 2ドル);do b 1ドル " ";done;b 1ドル "-";}
Use calling r, like r 8 4
:
|------|
| |
| |
|------|
Update with manatwork suggestions, reducing to 108 byte (not EOL in the last line):
b(){ echo "|`for i in $(seq 3 1ドル);{ echo -n "2ドル";}`|";}
r(){ b 1ドル -;for i in `seq 3 2ドル`;{ b 1ドル \ ;};b 1ドル -;}
-
2\$\begingroup\$ Nice first solution. But size could be reduced a bit. 1) Change
echo -n "before"; something; echo "after"
toecho "before`something`after"
. 2) Apply DigitalTrauma's tip. 3) Remove unnecessary double quotes. 4) Use`
..`
instead of$(
..)
for command substitution where not embedded. Try it online! \$\endgroup\$manatwork– manatwork2025年06月16日 10:30:08 +00:00Commented Jun 16 at 10:30
Python 2, 67 bytes
def f(a,b):c="|"+"-"*(a-2)+"|\n";print c+c.replace("-"," ")*(b-2)+c
Examples
f(3,3)
|-|
| |
|-|
f(5,8)
|---|
| |
| |
| |
| |
| |
| |
|---|
f(10,3)
|--------|
| |
|--------|
MATL, (削除) 21 (削除ここまで) 17 bytes
Z"45ILJhY('|'5MZ(
This is a slightly different approach than the one of the MATL-God.
Z" Make a matrix of spaces of the given size
45ILJhY( Fill first and last row with '-' (code 45)
'|'5MZ( Fill first and last column with '|' (using the automatic clipboard entry 5M to get ILJh back)
Thanks @LuisMendo for all the help!
PHP 4.1, 76 bytes
<?$R=str_repeat;echo$l="|{$R('-',$w=$W-2)}|
",$R("|{$R(' ',$w)}|
",$H-2),$l;
This assumes you have the default php.ini
settings for this version, including short_open_tag
and register_globals
enabled.
This requires access through a web server (e.g.: Apache), passing the values over session/cookie/POST/GET variables.
The key W
controls the width and the key H
controls the height.
For example: http://localhost/file.php?W=3&H=5
-
\$\begingroup\$ @Titus You should read the link. Quoting: "As of PHP 4.2.0, this directive defaults to off". \$\endgroup\$Ismael Miguel– Ismael Miguel2016年09月28日 08:56:36 +00:00Commented Sep 28, 2016 at 8:56
-
\$\begingroup\$ Ouch sorry I take everything back. You have the version in your title. I should read more carefully. \$\endgroup\$Titus– Titus2016年09月28日 09:16:18 +00:00Commented Sep 28, 2016 at 9:16
-
\$\begingroup\$ @Titus That's alright, don't worry. Sorry for being harsh on you. \$\endgroup\$Ismael Miguel– Ismael Miguel2016年09月28日 09:50:51 +00:00Commented Sep 28, 2016 at 9:50
-
\$\begingroup\$ Nevermind; that´s the price I pay for being pedantic. :D \$\endgroup\$Titus– Titus2016年09月28日 10:59:28 +00:00Commented Sep 28, 2016 at 10:59
-
\$\begingroup\$ @Titus Don't worry about it. Just so you know, around half of my answers are written in PHP 4.1. It saves tons of bytes with input \$\endgroup\$Ismael Miguel– Ismael Miguel2016年09月28日 14:22:10 +00:00Commented Sep 28, 2016 at 14:22