Bei einer Eingabe von zwei Ganzzahlen n und m wird eine ASCII-Leiter mit der Länge n und der Größe m ausgegeben .
Dies ist eine ASCII-Leiter der Länge 3 und der Größe 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
Dies ist eine ASCII-Leiter mit Länge 5 und Größe 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
Dies ist eine ASCII-Leiter mit Länge 2 und Größe 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Um genau zu sein:
Die Länge ( n ) gibt an, aus wie vielen Quadraten die Leiter besteht.
Die Größe ( m ) gibt die Breite und Höhe des Innenraums jedes Quadrats an, dh ohne die "Ränder".
Jedes Quadrat besteht aus dem Innenbereich, der mit Leerzeichen gefüllt ist,
-
die oben und unten von|
s, links und rechts von+
s und an allen vier Ecken von s umgeben sind .Die Ränder zwischen den Quadraten verschmelzen, sodass zwei Zeilen in einer Reihe
+--...--+
zu einer verschmelzen.Die Ecken der gesamten Leiter werden durch den Charakter ersetzt
o
.Optional können Sie eine abschließende Newline ausgeben.
Die Länge der Leiter ( n ) ist immer ≥ 2 und die Größe ( m ) ist immer ≥ 1.
Die Eingabe kann als durch Leerzeichen / Kommas getrennte Zeichenfolge, als Array / Liste / etc. Oder als zwei Funktionen / Befehlszeile / etc. Erfolgen. Argumente. Die Argumente können in der Reihenfolge angegeben werden, die für Sie am bequemsten bzw. am besten ist.
Da es sich um Code-Golf , der kürzeste Code in Bytes gewinnt.
Tipp: Die obigen Beispiele können auch als Testfälle verwendet werden.
Antworten:
Pyth, 34 Bytes
Testsuite
Nimmt Argumente in Zeilenumbrüchen getrennt auf STDIN.
Verwendet eine Hilfsfunktion
:
, die jede vertikale Zeichenfolge aus drei Zeichen zusammensetzt, bei Bedarf repliziert, transponiert und in Zeilenumbrüche einfügt.quelle
Ruby, 71
im Testprogramm ungolfed
quelle
;
nachh=0
, brauchen Platz nachputs
. Die Punktzahl wächst jedoch nur mit 1 Zeichen, da zuvor ein zusätzliches Leerzeichen vorhanden istputs
.CJam,
4342 BytesIch bin nicht von der Partitur erschüttert. Aber ich bin nicht Dennis, oder?
Die Eingabe erfolgt durch 2 durch Leerzeichen getrennte Elemente. Länge zuerst
Erläuterung
quelle
JavaScript (ES6), 89
... wiederholen, wiederholen, wiederholen ...
Prüfung
quelle
document.getElementById('elem').
das durch ersetzt werden könnteelem.
! +1 für diese, aber bitte, könnten Sie einige Dokumente darüber hinweisen?C #, 1412 Bytes
... Mein erster CodeGolf-Versuch, Gewinnt wahrscheinlich nicht, aber es funktioniert.
quelle
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Hier liegt höchstwahrscheinlich mehr Potenzial, wenn man einfach die Vorgehensweise ein wenig ändert.Julia, 87 Bytes
Dies ist eine Funktion, die zwei Ganzzahlen akzeptiert und eine Zeichenfolge zurückgibt.
Ungolfed:
quelle
pb - 147 Bytes
Dies ist die Art von Herausforderung, bei der pb von Rechts wegen wirklich gut sein sollte. Das Zeichnen einfacher Bilder mit Zeichen ist genau das, wofür pb entwickelt wurde. Leider ist es nur eine wortreiche Sprache, denke ich.
Nimmt zuerst die Länge der Eingabe, gefolgt von der Größe. Nimmt Eingaben in Form von Bytewerten vor, zum Beispiel:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Schau, eine lustige Animation!
Mit Kommentaren:
quelle
Pure Bash,
132 130 128127 BytesJa, ich könnte 1 weiteres Byte fallen lassen und das letzte ersetzen
${p% *}
, aber ich bevorzuge Folgendes:Probe:
quelle
Haskell,
10097 BytesAnwendungsbeispiel:
Wie es funktioniert:
Edit: @Christian Irwan hat 3 Bytes gefunden. Vielen Dank!
quelle
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
=>(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
funktioniertBrainfuck - 334 Bytes
Ich habe erwartet, dass dies viel kürzer sein wird.
Dadurch wird eine "Zeichenfolge" eingerichtet, die aussieht
| (...) |
und eine, die aussieht+----(...)----+
, wobei jede nach Bedarf mit einem speziellen Gehäuse für die Zeichenfolge gedruckt wirdo
oben und unten ein s vorgesehen ist.Benötigt einen Interpreter, der 8-Bit-Zellen verwendet und es Ihnen ermöglicht, von Zelle 0 nach links zu gehen (sei es in negative Zellen oder in eine Schleife). Nach meiner Erfahrung sind dies die häufigsten Standardeinstellungen.
Mit Kommentaren:
quelle
PowerShell, 77
80quelle
Jolf, 36 Bytes
Probieren Sie es hier aus!
Erläuterung
quelle
Perl, 98 Bytes
quelle
+
Zeichen in Ihrem Code. Haben Sie gedacht, dass die Zwischensprossen+
an jedem Ende Zeichen haben?($n,$m)=@ARGV;
davon, dass das weggelassen wurde und davon ausgegangen wird, dass dies bereits festgelegt ist - ich bin mir nicht sicher, ob das im Geiste liegt oder nicht. Ich muss es nachschlagen.@ARGV
. Wenn Sie jemandem antworten, denken Sie daran, @Benutzername einzuschließen, damit dieser eine Warnung erhält. Ich muss es nicht tun, da dies dein Beitrag ist.C, 122 Bytes
Probieren Sie es online aus .
quelle
Tcl, 187 Bytes
Dieser Code wird in eine Datei mit Argumenten eingefügt, die in die Befehlszeile eingegeben werden. Geben Sie die Anzahl der Kisten und die Breite in dieser Reihenfolge an.
quelle
PHP, 81 Byte
Erwartet 2 Argumente, die beim direkten Aufruf des PHP-Befehls übergeben werden. Die erste ist die Größe und die zweite ist die Anzahl der Schritte.
Möglicherweise sind einige Verbesserungen erforderlich.
quelle
Python 2, 94 Bytes
"Ungolfed":
quelle
Perl 5 , 91 + 1 (-a) = 92 Bytes
Probieren Sie es online!
quelle
Pip
-l
, 35 BytesProbieren Sie es online!
Erläuterung
Einige andere Versionen
Ich habe viele verschiedene Ansätze ausprobiert, um Pyth zu fangen ...
Ich mag besonders
t**b
diejenigen, die Mathematik verwenden, um das vertikale Muster der Leiter zu generieren:Mit dem
1000200020001
können dann die Mustero|||+|||+|||o
und erzeugt werden- - - -
, aus denen die Leiter besteht. Leider konnte ich diesen Ansatz nicht kürzer als den Join / Wrap-Ansatz machen.quelle