Zeichnen Sie bei zwei Ganzzahlen als Eingabe in einem Array ein Rechteck, wobei Sie die erste Ganzzahl als Breite und die zweite als Höhe verwenden.
Wenn Ihre Sprache dies unterstützt, können die beiden Ganzzahlen auch als separate Eingaben eingegeben werden.
Angenommen, die Breite und Höhe betragen niemals weniger als 3, und sie werden immer angegeben.
Beispielausgaben:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
Das ist Code-Golf, also gewinnt die Antwort mit der geringsten Anzahl von Bytes.
Ị
:)Matlab,
696556 BytesDanke @WeeingIfFirst und @LuisMendo für ein paar Bytes =)
Dies ist in Matlab ganz einfach: Erstellen Sie zuerst eine Matrix mit der gewünschten Größe, indizieren Sie dann die erste und letzte Zeile, um die einzufügen
-
, und tun Sie dasselbe mit der ersten und letzten einzufügenden Spalte|
.Zum Beispiel
f(4,3)
kehrt zurückquelle
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
z(b,a)=' '
als char initialisiert . Danach können Sie Zahlen eingeben, die automatisch in char umgewandelt werden.z
behält seinen ursprünglichen Typ beiJavaScript (ES6), 63 Byte
quelle
Haskell,
62-55BytesAnwendungsbeispiel:
Die Hilfsfunktion
f
nimmt eine Zwei-Elemente-Liste[a,b]
und eine Zahln
und gibt eine Liste von einsa
gefolgt vonn-2
b
s gefolgt von eins zurücka
. Wir können verwendenf
dreimal: die obere / untere Zeile zu bauen:f "|-" i
eine mittlere Linie:f "| " i
und von den beiden die ganze Rechteck:f [<top>,<middle>] j
(Anmerkung:j
nicht erscheint als Parameter ing i
wegen der Teilanmeldung).Edit: @dianne sparte einige Bytes, indem er zwei
Char
Argumente zu einemString
der Länge 2 kombinierte . Vielen Dank!quelle
#
Idee!(a:b)#n=a:([3..n]>>b)++[a]
und schreiben["|-"#i,"| "#i]#j
Python 2,
61-58Bytes-3 Bytes dank @flornquake (unnötige Klammern entfernen;
h
als Zähler verwenden)Testfälle sind bei ideone
quelle
('- '[1<i<h])
braucht keine Klammern.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
als Theke ist klug! Vielen Dank.PHP, 74 Bytes
quelle
!$i|$n==++$i
statt!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 BytesCode
Beispiel
Erläuterung
Beachten Sie, dass es nicht verwendet wird,
norm!
so dass vim benutzerdefinierte Zuordnungen beeinträchtigt werden können!quelle
MATL , 19 Bytes
Probieren Sie es online!
Erläuterung
Der Ansatz ähnelt dem in dieser anderen Antwort verwendeten . Der Code erstellt ein numerisches Array des Formulars
und dann werden seine Werte als (1-basierte, modulare) Indizes in die Zeichenfolge verwendet
'|-| '
, um das gewünschte Ergebnis zu erzielen.quelle
05AB1E ,
232220 BytesEingabe als Höhe, dann Breite.
Erläuterung
Probieren Sie es online!
2 Bytes gespart dank Adnan
quelle
F„ -N_N¹<Q~è²Í×'|.ø,
.C 73 Bytes
quelle
Python 2, 56 Bytes
Flornquake sparte ein Byte.
quelle
%c
Konvertierung speichern :'-%*c'%(h-1,45)
%*c
nicht einmal etwas! Vielen Dank. :)'-%%%dc'%~-h%45
funktioniert auch für die gleiche Länge.Common Lisp, 104 Bytes
Golf gespielt:
Ungolfed:
quelle
Turtlèd , 40 Bytes
Dolmetscher ist
etwasnicht mehr buggèdErläuterung
quelle
Mathematica,
6764 bytesThanks to lastresort and TuukkaX for reminding me that golfers should be sneaky and saving 3 bytes!
Straightforward implementation. Returns an array of strings.
quelle
0<1
in place ofTrue
j==1
can be reduced toj<1
, andi==1
toi<1
.Python 3,
10495 bytes( feedback from @mbomb007 : -9 bytes)
(my first code golf, appreciate feedback)
quelle
range(y)
instead ofrange(0,y)
, and ifn
is never negative you can useif n<1or n==~-y else
Batch, 128 bytes
Takes width and height as command-line parameters.
quelle
Haxe,
112106 bytesTestcases
quelle
Java 135 bytes
Golfed:
quelle
o+=x "|\n"
? Did you mean to put an+
there?PowerShell v3+, 55 bytes
Takes input
$a
and$b
. Loops from1
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 implicitWrite-Output
happens on program completion, with default newline separator.Alternatively, also at 55 bytes
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
quelle
PHP, 82 bytes
indexing a static string including the newline
quelle
Ruby,
595452 bytesOh, that's a lot simpler :)
Test run at ideone
quelle
\n
.i
andj
. Replacei
's definition withx-=2
. Instead ofj
, just use(y-2)
.Perl, 48 bytes
Includes +1 for
-n
Give sizes as 2 lines on STDIN
Just the code:
quelle
Lua,
12093 bytesSaved quite a few bytes by removing stupid over complexities.
Ungolfed:
Try it on Repl.it
quelle
Python 2, 67 bytes
Examples
quelle
MATL,
2117 bytesThis is a slightly different approach than the one of the MATL-God.
Thanks @LuisMendo for all the help!
Try it Online!
quelle
PHP 4.1, 76 bytes
This assumes you have the default
php.ini
settings for this version, includingshort_open_tag
andregister_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 keyH
controls the height.For example:
http://localhost/file.php?W=3&H=5
quelle
Python 3, 74 chars
quelle
Swift(2.2) 190 bytes
I think Swift 3 could golf this a lot more but I don't feel like downloading Swift 3.
quelle
F#, 131 bytes
quelle