Eingang:
- Eine ganze Zahl , die garantiert .
- Eine ganze Zahl , die einer von .
Ausgabe:
Eine Straße der Größe , die in nordwestlicher Richtung verläuft, wenn ; eine Nordrichtung, wenn ; oder eine Nordostrichtung, wenn . Die Straße wird immer drei Felder breit sein (oder im Allgemeinen fünf, wenn wir die Außengrenzen einbeziehen). Außerdem befindet sich im unteren Bereich eine Trennlinie, die sich abwechselt, während Sie nach oben fahren.
Einige Beispiele:
Eingabe:
Ausgabe:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Eingabe: Ausgabe:
\ \
\ \ \
\ \
\ \ \
Herausforderungsregeln:
- Eine beliebige Anzahl von führenden / nachfolgenden Leerzeichen und / oder Zeilenumbrüchen ist zulässig, sofern die erforderliche Straße irgendwo auf dem Bildschirm gedruckt wird.
- Anstelle der Optionen Sie auch die Optionen oder verwenden. Sie können auch auswählen, welche der drei Optionen welcher der drei Richtungen zugeordnet werden soll. (Achten Sie darauf , zu erwähnen , welche Optionen Sie verwendet haben , wenn sie sich von der für jeweils die in dieser Herausforderung Beschreibung verwendet wird!)
[north-west, north, north-east]
- Jedes vernünftige Ausgabeformat ist akzeptabel. Am häufigsten wird es natürlich in STDOUT gedruckt, aber es ist auch in Ordnung, es als Zeichenfolge oder 2D-Zeichenliste zurückzugeben.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Die beiden obigen Beispiele und:
Eingabe:
Ausgabe:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Antworten:
Canvas ,
2322 BytesProbieren Sie es hier aus!
Verwendet die Richtungseingänge 0, 1 und 2.
Erläuterung:
quelle
Python 2 ,
79787372 BytesProbieren Sie es online!
Nimmt
[1,0,-1]
für[north-west, north, north-east]
-1 Byte, danke an Neil
quelle
i%2*c or' '
Speichert ein Byte.Python 2 , 66 Bytes
Probieren Sie es online!
Verwendet
d=-1
für NE,d=0
für N undd=1
für NW. Nutzt den Vorteil, dass führende Leerzeichen zulässig sind. Die Regel, dass das untere Segment der Straße mit einem Trennzeichen versehen ist, machte es schwierig, die richtige Parität zu erzielen. Dies wird dadurch erreicht,(s*n)[n:]
dass die zweite Hälfte des2n
Wechsels zwischen Leerzeichen und Straßencharakter geschnitten wird.quelle
1. Python 3.5,
122120 BytesDas Skript benötigt zwei Parameter: n, d.
d: 0, 1, 2 -> \ | /
tio.run
Ausgabe:
Erläuterung
edit: -2 bytes dank Kevin Cruijssen
quelle
n-1-i
Kann seinn+~i
( relevanter Tipp ) undj%2==0
kann seinj%2<1
. Wenn Sie sie noch nicht gesehen haben, können sowohl Tipps zum Golfen in Python als auch Tipps zum Golfen in <allen Sprachen> interessant sein.n+~i
nicht gesehen, aber es sieht hilfreich aus. Auch danke für Code Highlight.j%2*" "or c
spart noch ein paar Bytes.PowerShell ,
8882807471 Byte-8 Bytes dank Mazzy
-6 Bytes dank AdmBorkBork und Mazzy
-3 Bytes dank AdmBorkBork
Probieren Sie es online!
Verwendet [0,1,2] für NW, NE, N. Verwendet
d
zweimal als Listenindex, um zuerst die Abstandsmethode zu erhalten (Entfernt die Liste, wenn 2 verwendet wird und gibt 0 zurück) und dann, welches Zeichen beim Zeichnen der Linien verwendet werden soll. Hängt eine Liste an die Zeichenfolge von Leerzeichen an (die als solche Leerzeichen zwischen den Elementen enthält), die die Straße erstellt. Wechselt auch zwischen einer offenen Fahrspur oder einem Strich, basierend auf Modulo-Mathematik.quelle
C (gcc) ,
100 bis90 BytesProbieren Sie es online!
Gut geschriebene Version
quelle
Holzkohle ,
332923 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Jetzt, da alle der zugrunde liegenden Charcoal-Fehler behoben zu sein scheinen, kann ich den optimalen Code ankündigen. Erläuterung:
Drehen Sie den Cursor gemäß der ersten Eingabe gegen den Uhrzeigersinn, sodass 1 nach Nordosten, 2 nach Norden und 3 nach Nordwesten zeigt.
Geben Sie die Länge der Straße ein.
Drucken Sie die halbe Länge der Straße und dehnen Sie sie dann aus, um den Straßentrenner zu erhalten.
Drucken Sie die Straßenseiten.
@KevinCruijssen reichte anschließend eine härtere Version dieser Frage ein, die seitdem gelöscht wurde, aber Benutzer mit genügend Repräsentanten können sie hier sehen: Der (harte) Weg zum Code Der Dehnungstrick, den ich in dieser Antwort verwendet habe, ist auf diese Frage nicht anwendbar hat folgendes
4745-Byte-Programm geschrieben:Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Schlaufe über die Seiten und den Separator.
Zum Anfang der Seite springen.
Erstellen Sie ein Array mit einem
1
und einem Leerzeichen. Entfernen Sie das Leerzeichen jedoch erneut, wenn Sie die Seiten und nicht das Trennzeichen zeichnen.Überqueren Sie jeden Straßenabschnitt.
Drehen Sie den Cursor entsprechend.
Überqueren Sie einen Abschnitt weniger als die Länge des Straßenabschnitts ...
... und drucke alternierende Elemente des Arrays. Die Abwechslung erfolgt durch zyklisches Indizieren in das Array mit der Y-Koordinate des Cursors.
Drucken Sie die letzte Zeile dieses Straßenabschnitts aus, ohne den Cursor zu bewegen ...
... damit der Cursor stattdessen für den nächsten Abschnitt nach oben bewegt werden kann.
Drehen Sie den Cursor zurück, um zum nächsten Abschnitt zu gelangen.
quelle
Kotlin ,
9692 BytesAkzeptiert [0, 1, 2] anstelle von [-1, 0, 1]
Es funktioniert ähnlich wie Lösungen in anderen Sprachen, aber Kotlin glänzt in dieser Sprache leider nicht wirklich.
val c=“\\|/“;
Ruft das Zeichen für den Straßenbau ab, indem es die Tatsache ausnutzt, dass Kotlin Strings wie ein Array von Zeichen behandelt (wie es sich gehört, wenn man sich Java ansieht).Probieren Sie es online!
quelle
4
mit meinem Beispiel von vergleichen4
, um den Unterschied zu sehen, den ich meine. Ich weiß nicht , Kotlin so gut, aber ich denke , Sie lösen können (und Golf 4 Bytes zur gleichen Zeit) durch eine Änderung[(it+1)%2]
an[it%2]
. :) Abgesehen davon ist es eine nette Antwort, also +1 von mir.TSQL-Code,
171117 BytesIch erkannte, dass dies viel kürzer als Code geschrieben werden könnte.
TSQL-Abfrage, 137 Byte
USE master ist nicht erforderlich, wenn Ihre Datenbank bereits master ist. Einige Benutzer haben jedoch eine andere Standarddatenbank.
Skript beim Ausprobieren ist etwas anders. Ich musste das Leerzeichen ASCII-32 durch ASCII-160 ersetzen, die Leerzeichen wurden nicht angezeigt.
Versuch es
Einige Verbesserungen vorgenommen und festgestellt, dass ich ersetzen könnte
mit
quelle
order by 1/0
es, dass kein Fehler beim Teilen durch Null auftritt?JavaScript (ES8),
90 8785 Bytes(direction)(length)
Probieren Sie es online!
JavaScript (ES6), 90 Byte
Dieser zeichnet die Ausgabe Zeichen für Zeichen mit etwas mehr Mathematik anstelle der
.padStart()
Methode.(direction)(length)
Probieren Sie es online!
quelle
Jelly ,
3130 BytesEin dyadischer Link, der die Länge links und die negierte Richtung * rechts akzeptiert und ein 2d-Array von Zeichen ergibt.
*
[north-west, north, north-east]=[1, 0, -1]
Probieren Sie es online! (Fußzeile ruft den Link auf, verbindet sich mit Zeilenumbrüchen und gibt das Ergebnis aus)
Wie?
quelle
Python 2, 127 Bytes
Probieren Sie es online!
Die ersten beiden Zeilen stammen aus @TFeld.
quelle
D,N=input()
(und statt 3 Python 2 verwenden), um dies zu beheben. Oder Sie können es in eine Lambda-Funktion ändern, die diese beiden Parameter verwendet." ".join(..)
.format
i%2*c or' '
spart ein paar Bytes mehr, obwohl mir aufgefallen ist, dass das Trennzeichen für ungerade Straßenlängen falsch ist.Python 2 , 93 Bytes
Probieren Sie es online!
quelle
+' %s '+
um,'%s',
2 Bytes zu speichern'%s'%
vollständig entfernen .J , 64 Bytes
Probieren Sie es online!
Ich werde später versuchen, Golf zu spielen
quelle
C # (Visual C # Interactive Compiler) ,
12910710393 Byte-1 für Nordosten, 1 für Nordwesten, 0 für Norden
Probieren Sie es online!
quelle
Rot , 157 Bytes
Probieren Sie es online!
quelle
Japt, 53 Bytes
Probieren Sie es online!
quelle
Swift 4.2 ,
112108 Bytes-4 Bytes dank Sriotchilism O'Zaic
[0,1,2] anstelle von [-1,0,1].
Probieren Sie es online!
Erläuterung
Bestimmt das zu verwendende Straßenschild. (Ich wette, das kann irgendwie gekürzt werden)
Iteriert über die Länge der Straße.
Fügt die Leerzeichen vor der Straße hinzu.
Fügt jeder zweiten Zeile das mittlere Zeichen hinzu.
Schon beim ersten Mal freue ich mich über Optimierungshinweise. Meistens aus diesem Thread gelernt: Tipps zum Golfen in Swift .
quelle
in
und" "
in Ihrem Code zu entfernen , obwohl Sie es in Ihren Beispielen entfernt haben.\(c)
in beiden Fällen). Sie würden Bytes sparen, indem Sie nurc
die Zeichenfolge verketten . Probieren Sie es online!Perl 6 , 66 Bytes
Probieren Sie es online!
Gibt eine Liste von Zeilen zurück.
Erläuterung
quelle
Ruby , 90 Bytes
Probieren Sie es online!
UPDATE: Vielen Dank, Kevin, dass Sie darauf hingewiesen haben, dass bei meiner ursprünglichen Übermittlung Leerzeichen zwischen den Straßenrändern und Markierungen fehlten (dh Straßen mit drei statt mit fünf Breiten). Es könnte jedoch eine kürzere Lösung dafür geben
c+' '+...+' '+c
.Richtungsangaben:
-1, 0, 1
Karten zu{ north-west, north, north-east }
Argumente: Liest Befehlszeilenargumente wie
4 -1
(eine vierreihige Straße, die nach Nordwesten geneigt ist).Zusätzlicher Hinweis: Dies wurde lokal mit Ruby v2.6.1 getestet, und es scheint, dass Try It Online Ruby v2.5.3 verwendet. Ich habe keinen Grund zu der Annahme, dass es nicht mit allen anderen Ruby-Versionen funktionieren würde.
quelle
|||
oder|<sp>|
, aber es sollte|<sp>|<sp>|
oder sein|<sp><sp><sp>|
(wo<sp>
ist ein Leerzeichen). Ich weiß nicht , Rubin, aber es scheint , dass Sie es durch eine Änderung lösen könnenc+[' ',c][i%2]+c
zuc+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 Byte
Probieren Sie es online!
Nimmt
d
als eines von0
,1
oder2
.quelle
Japt
-R
, 40 BytesProbieren Sie es online!
Erläuterung:
quelle
Stax , 23 Bytes
Führen Sie es aus und debuggen Sie es
Die Eingabe besteht aus zwei durch ein Leerzeichen getrennten Ganzzahlen.
Der erste ist
d
. -1 gibt Nordosten an. 0 für Norden. 1 für Nordwesten. Der zweite Parameter istn
. Diese beiden Werte werden implizit von der Eingabe analysiert und mitn
oben auf dem Eingabestapel abgelegt . Zusätzlichd
ist der Zugriff über das stax-x
Register möglich, da dies der erste implizit analysierte Wert ist.Zum Beispiel "1 7" eingeben
Führen Sie dieses aus
quelle
Perl -M5.010 -Mfeature = Signaturen, 97 Bytes
quelle