Bei zwei positiven Ganzzahlen, W und H, wird ein ASCII-Kunstfeld ausgegeben, dessen Rand aus Schrägstrichen ( /
und \
) mit W "Spitzen" am oberen und unteren Rand und H "Spitzen" am linken und rechten Rand besteht. Das Innere der Box ist mit Leerzeichen gefüllt.
Ein "Stachel" besteht einfach aus zwei Schrägstrichen, die eine Pfeilform bilden:
/\ \/
/ \
\ /
So ist der Ausgang für W = 4, H = 3
wäre
/\/\/\/\
\ /
/ \
\ /
/ \
\/\/\/\/
da oben 4 Stacheln nach oben, unten 4 nach unten, links 3 nach links und rechts 3 nach rechts zeigen.
Hier sind einige andere Eingabe / Ausgabe-Paare:
W H
[spiky slash box]
1 1
/\
\/
1 2
/\
\/
/\
\/
2 1
/\/\
\/\/
2 2
/\/\
\ /
/ \
\/\/
1 3
/\
\/
/\
\/
/\
\/
3 1
/\/\/\
\/\/\/
2 3
/\/\
\ /
/ \
\ /
/ \
\/\/
3 2
/\/\/\
\ /
/ \
\/\/\/
10 1
/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/
10 2
/\/\/\/\/\/\/\/\/\/\
\ /
/ \
\/\/\/\/\/\/\/\/\/\/
4 5
/\/\/\/\
\ /
/ \
\ /
/ \
\ /
/ \
\ /
/ \
\/\/\/\/
In der Ausgabe dürfen keine Zeilen führende oder nachfolgende Leerzeichen enthalten. Es kann optional eine nachgestellte Newline geben.
Der kürzeste Code in Bytes gewinnt.
Antworten:
Kohle , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
F²«↷P…\/N»‖M¬
(Eingabe in der Reihenfolge Höhe, Breite).MATL , 18 Bytes
Probieren Sie es bei MATL Online!
Erläuterung
Betrachten Sie Eingänge
W = 4
,H = 3
. Der Code erstellt die Zeilenvektoren[1 2 3 4 5 6 7 8]
(Bereich von1
bis2*W
) und[1 2 3 4 5 6]
(Bereich von1
bis2*H
). Das Transponieren des letzteren und das Hinzufügen des ersteren mit Broadcast ergibt die MatrixDie modulare Indizierung in den String
\/
erzeugt das gewünschte Ergebnis in der Matrixgrenze:Um die nicht umrandeten Werte zu entfernen, setzen wir sie auf
0
(wenn sie als Zeichen interpretiert werden, werden sie als Leerzeichen angezeigt):Kommentierter Code:
quelle
Python 2 ,
6968 Bytes-1 dank Kevin Cruijssen
Probieren Sie es online!
quelle
\\%s
kann werden\%s
und\\/
kann werden\/
.Haskell ,
90888782 Bytes16 Bytes gespart dank LynnProbieren Sie es online!
Fühlt sich immer noch sehr lang an, ich werde sehen, was ich tun kann.
quelle
a#b=[a..b]
und Ersetzen aller Vorkommen spart ein Byte:a#b=[a..b];x!y|i<-2#x>>" "=(1#x>>"/\\"):(2#y>>['\\':i++"/",'/':i++"\\"])++[1#x>>"\\/"]
a#b=[1..a]>>b;x!y|i<-(x-1)#" "=x#"/\\":(y-1)#['\\':i++"/",'/':i++"\\"]++[x#"\\/"]
tatsächlich spart 6 ~05AB1E , 14 Bytes
Probieren Sie es online!
Erläuterung
Dies erzeugt nur die linke obere Ecke, x Zeichen breit und y Zeichen hoch. Es spiegelt dies dann auf beiden Achsen wider:
quelle
JavaScript (ES6), 84 Byte
Übernimmt Eingaben in der Currying-Syntax
(w)(h)
.Demo
Code-Snippet anzeigen
quelle
Schnelle 3 , 166 Bytes
Vollständige Testsuite.
Die Closure-Version ist leider etwas länger (175 Bytes):
Testsuite mit der Closure-Version.
quelle
Retina ,
7773 BytesProbieren Sie es online! Link enthält Testfälle. Übernimmt Eingaben im Format
<height> <width>
. Erläuterung:Konvertieren Sie die Eingaben in unary.
Multiplizieren Sie die Eingaben, fügen Sie jedoch eine neue Zeile hinzu, sodass das Ergebnis ein Rechteck ist.
Kreieren Sie das stachelige Oberteil.
Duplizieren Sie jede stachelige Reihe, wobei die Stacheln in der zweiten Reihe versetzt sind.
Löschen Sie nachfolgende Zeilenumbrüche.
Löschen Sie das Innere der Box. (Beachten Sie das Leerzeichen in der letzten Zeile.)
quelle
Excel, 95 Bytes
quelle
APL (Dyalog) ,
41 bis39 BytesFordert zur Eingabe einer Liste von auf
[H,W]
Probieren Sie es online!
⎕-1
Eingabeaufforderung (Mnemonik: stilisierte Konsole) und subtrahieren 12×
multiplizieren mit zwei''⍴⍨
benutze das, um eine leere Zeichenkette umzuformen (Pads mit Leerzeichen)⊢
ergeben, dass (dient zur Trennung von4
){
…}⍣4
Wenden Sie die folgende Funktion viermal an:≢⍵
Bestimmen Sie die Länge des Arguments'/\'⍴⍨
zyklisch r eshape"/\"
auf diese Länge⍵,
Hänge das an die rechte Seite des Arguments an⌽⍉
transponieren und spiegeln (dh um 90 ° drehen)¯1⌽1
drehen , um die zyklisch 1 st Reihe einen Schritt nach rechts ,⊢
ergeben, dass (dient zur Trennung von1
)'\'@2@1
legt einen umgekehrten Schrägstrich in der 2 nd Position des 1 st Hauptpunktes.quelle
C (gcc) ,
170166158155108105-3 Bytes dank cleblanc
Probieren Sie es online!
Ich denke, dies kann mit einer weniger einfachen Herangehensweise weiter golfen werden. Ich werde sehen, was ich tun kann, wenn ich die Zeit finde.Ok, ich kann keinen anderen Weg finden, um die Anzahl der Bytes für diesen Code zu reduzieren.
Erklärung: Eine einfache Doppelschleife, die die Box char für char druckt.
Beim Drucken eines Rahmens: Wenn sowohl die x- als auch die y-Koordinate gerade oder ungerade sind, wird a angezeigt
/
, andernfalls wird a\
angezeigtWenn kein Rand vorhanden ist, wird stattdessen ein Leerzeichen angezeigt
quelle
puts("")
in die erste for-Schleife wie diese verschiebenx,y;f(w,h){for(y=h*=2;y--;puts(""))for(x=w*2;x--;)putchar(!x|x==w*2-1|!y|y==h-1?x&y&1|~x&~y&1?47:92:32);}
/// ,
172117 BytesDa die Ausgabe also aus
///
s undwhitespace
s besteht, sollte es Übermittlungen in diesen beiden Sprachen geben.Geben Sie den Code nach der Eingabe
W,H
als unäre Zahl ein (unär für /// ist zulässig , dank Challenger5 für Vorschläge) (*
zur Darstellung von Ziffern, getrennt durch,
).Probieren Sie es online! (mit Eingabe
W=4, H=3
)quelle
Python 3 ,
8782 BytesBearbeiten: 5 Bytes dank @officialaimm , @ Mr.Xcoder und @tsh gespeichert
Probieren Sie es online!
quelle
*(b-1)
kann es*~-b
für -2 Bytes sein." "*2*~-a
? Nur"__"*~-a
.J, 48 Bytes
ungolfed
Erläuterung
Probieren Sie es online!
quelle
' '(<,~<<0 _1)}'\/'{~=/&(2|i.)&+:
. Amend ist großartig hier.'/\ '{~2(<,~<<0 _1)}2|+/&i.&+:
mit einigem Refactoring05AB1E , 19 Bytes
Probieren Sie es online!
Argumente werden umgekehrt.
quelle
Haskell ,
8479 BytesProbieren Sie es online! Anwendungsbeispiel:
3%6
Gibt eine Liste von Zeilen aus. Verwenden SiemapM putStrLn $ 3%6
diese Option, um die Schachtel hübsch zu drucken.quelle
Java 8, 141 Bytes
Ein Curry-Lambda von der Breite zur Höhe bis zur Ausgabe.
Online testen (nein,
return t+i+o;
war nicht beabsichtigt)Ungolfed Lambda
Diese Lösung ist in Bezug
char
auf die Eingabegröße untypisch wählerisch, da mit a bis zur Eingabe der Breite gezählt wird. Glücklicherweise ist der Algorithmus so schlecht, dass bei diesen Größen der Abschluss des Programms wahrscheinlich bereits ein Problem darstellt. Ich habe michchar
für den Schleifenindex entschieden, damit ich ihn später als billigen Alias für wiederverwenden kann'\n'
.quelle
SOGL V0.12 ,
222113 BytesProbieren Sie es hier aus!(Erwartet beide Eingaben auf dem Stack,
..
und"
da eine Zeichenfolge nicht explizit gestartet wurde) - Zweimalige Eingabe der Zahl wird zur Vereinfachung hinzugefügt.)Erläuterung:
quelle
Mathematica, 87 Bytes
Probieren Sie es in Mathematik (es druckt aus irgendeinem Grund zusätzliche Leerzeichen am Anfang der meisten Zeilen) oder in der Wolfram-Sandbox aus ! Nimmt zwei Ganzzahlen als Eingabe.
Es ist eine ziemlich naive Lösung, aber all die cleveren Dinge, die ich ausprobiert habe, hatten mehr Bytes. Etwas, das fast funktioniert, ist
außer es schlägt fehl, wenn eine der Dimensionen 1 ist (Eingabe ist eine Liste mit den Dimensionen).
quelle
Pyth ,
40 3938 BytesDies nimmt die zwei durch eine neue Zeile getrennten Ganzzahlen.
Vollständige Testsuite.
quelle
Ruby ,
62 6160 Bytes-1 Byte danke an Arnauld
Probieren Sie es online!
quelle
Eigentlich 38 Bytes
Probieren Sie es online!
quelle
J , 39 Bytes
Probieren Sie es online!
Nimmt zwei Argumente wie
height
auf der LHS undwidth
auf der RHS.quelle
VBA (Excel), 161 Bytes
quelle
Sub b
c=[2*A1]
r=[2*B1]
For i=1To r
For j=1To c
Debug.?IIf(i=1Or j=1Or i=r Or j=c,IIf((i + j)Mod 2,"\","/")," ");
Next
Debug.?
Next
End Sub
c=[2*A1]:r=[2*B1]:For i=1To r:For j=1To c:?IIf(i=1Or j=1Or i=r Or j=c,IIf((i + j)Mod 2,"\","/")," ");:Next:?:Next
R,
160 Bytes152 BytesProbieren Sie es online!
Danke, BLT, dass du 8 Bytes gespart hast.
quelle
s
Funktion jemals ?s=
Bit entfernen . Anonyme Funktionen sind erlaubt.Gleichstrom , 123 Bytes
Es ist bei weitem nicht das kürzeste, aber wenn man die letzten beiden Zeilen nimmt und sie dreht
pi/2
im Uhrzeigersinn in eine "aufrechte" Position , sieht es wie ein Totempfahl aus .Nimmt die Eingabe als zwei durch Leerzeichen getrennte Ganzzahlen.
Probieren Sie es online!
quelle
Mathematica, 116 Bytes
quelle
Rotate[w,Pi]
entspricht ,w~Rotate~Pi
wie isto["/\\",#]
zu"/\\"~o~#
V , 18 Bytes
Für die Beantwortung wäre das
ll
if nicht erforderlich<M-h>ollow
nur 2 Zeichenspalten übrig :(Probieren Sie es online!
quelle
C # (.NET Core) , 188 Byte
Die Byteanzahl umfasst auch:
Probieren Sie es online!
Ich habe angefangen, Erklärungen von Kommando zu Kommando zu machen, aber es ergab auf halbem Weg keinen Sinn mehr. Ich habe Linq aus Gründen der Verwendung von Linq verwendet, wahrscheinlich kann es mit nur Standarditerationen kürzer sein.
Hier ist eine Erklärung, die mit der Mitte nach außen geht (der innerste Befehl zuerst):
Erstellen Sie zuerst Zeilen für die gesamte Box und verketten Sie sie zu einer einzelnen Zeichenfolge
Holen Sie sich dann jedes Zeichen in einer Reihe, und wenn es nicht der Umriss des Kästchens ist, ersetzen Sie es durch ein Leerzeichen, und verknüpfen Sie sie für jede Reihe wieder zu einer Zeichenfolge
Holen Sie sich schließlich jede Zeile und verknüpfen Sie sie mit Zeilenumbrüchen (einschließlich der Erstellung einer Auflistung für Zeilen).
quelle
Perl 5 , 83 + 1 (-n) = 84 Bytes
Probieren Sie es online!
quelle