In einigen Ländern gibt es Empfehlungen oder Gesetze zur Bildung von Notfallkorridoren auf Straßen mit mehreren Fahrspuren pro Richtung. (Im Folgenden betrachten wir nur die Fahrspuren in Fahrtrichtung.) Dies sind die Regeln, die in Deutschland gelten:
- Wenn es nur eine Spur gibt, sollte jeder nach rechts fahren, damit die Rettungsfahrzeuge links vorbeifahren können.
- Wenn es zwei oder mehr Spuren gibt, sollten die Autos auf der linken Spur nach links fahren, und alle anderen sollten nach rechts fahren.
Herausforderung
Bei der Anzahl N>0
der regulären Fahrspuren das Layout der Fahrspuren ausgeben, wenn ein Notfallkorridor mit einer Zeichenfolge aus N+1
ASCII-Zeichen gebildet wird. Sie können 33
bis zu zwei beliebige Zeichen aus dem ASCII-Code verwenden 126
, eines für den Notfallkorridor und eines für die Kennzeichnung der Fahrzeuge. Nachgestellte oder führende Leerzeichen, Zeilenumbrüche usw. sind zulässig.
Beispiele
Hier verwenden wir E
für den Notfallkorridor und C
für die Autos.
N Output
1 EC
2 CEC
3 CECC
4 CECCC
5 CECCCC
6 CECCCCC
etc
C
und ausE
, aber es gibt so viele nette Ansätze, die für diese Herausforderung möglich sind! Verwenden Sie mathematische Operationen fürC=1
/E=2
oderC=2
/E=3
wie es die obere Antwort tut; usingC=0
/E=1
with10^(n-1)
; Verwenden vonC=0
/E=.
durch Dezimalformatierung0.0
; VerwendungC=1
/E=-
durch Nutzung-1
; usw. usw. So viele einzigartige Möglichkeiten für eine Herausforderung, die zunächst so auf den Punkt gebracht wurde. Schade, dass ich nur einmal +1 geben kann. ;)Antworten:
Python 2,
2926 BytesBeispiel:
quelle
10**n*97/30-1/n*9
speichert ein weiteres Byte, gebenf(5) == 323333
usw.Python 3,
3533 BytesBearbeiten: Löschen ,
f=
um 2 Bytes zu sparen, dank der Erinnerung von @dylnan .Probieren Sie es online!
So visualisieren Sie es:
Ausgabe:
Probieren Sie 🚔 online!
Python 3, 40 Bytes
Eine einfache Lösung:
Probieren Sie es online!
quelle
lambda N:
C (gcc) , 32 Bytes
Probieren Sie es online!
Gebrauch
0
und.
Charaktere:quelle
Japt,
54 BytesVerwendet
q
für Autos und+
für den Flur.Versuch es
Wir danken Oliver, der gleichzeitig mit mir 4 Bytes weniger gespielt hat.
Erläuterung
Eine kurze Lösung, aber eine knifflige Erklärung!
Das Einfachste zuerst:
ç
Wenn die Methode auf eine Ganzzahl angewendet wird, wird das Zeichenfolgenargument so oft wiederholt. Diei
Methode akzeptiert 2 Argumente (s
&n
) und fügts
am Indexn
der Zeichenfolge ein, auf die sie angewendet wird.Erweitern der 2 Unicode - Verknüpfungen verwendet , gibt uns
çq i+1
, die, wenn sie transpiled JS wirdU.ç("q").i("+",1)
, woU
der Eingang ist. Also wiederholen wirq
U
mal und fügen dann ein+
bei Index 1 ein.Der letzte Trick ist , dass dank Japt Index Verpackung, wenn
U=1
,i
wird das Einfügen+
am Index0
, was Wert , den Sie füttern esn
.quelle
ç0 iQ1
für 6 Bytes posten , aber es wäre besser, wenn Sie es verwenden.ç¬iÅ
für 4 Bytes;) Ich habe Japt noch nie so oft missbraucht.Ä
anstattÅ
:)R, 50 Bytes
-11 danke an Giuseppe!
Ausgänge 1 für Notfallkorridor und 2 für normale Fahrspuren
Mein Versuch, 61 Bytes
Hier ist nichts Besonderes zu sehen, aber lasst uns R auf die Anzeigetafel bringen =)
Verwendungszweck:
quelle
Haskell ,
383432 BytesProbieren Sie es online!
quelle
Python 2,
302928 BytesDrucken Sie
3
anstelle vonC
und.
anstelle vonE
.Erläuterung:
Probieren Sie es online aus.
Python 2,
3332312928 BytesDruckt
1
anstelle vonC
und-
anstelle vonE
.-2 Bytes dank @ovs .
-1 Byte dank @xnor .
Erläuterung:
Probieren Sie es online aus.
quelle
10/3
scheitert um 17n=16
dass in diesem Fall , wenn Ihr eingebauter Integer 64-Bit ist, ausreicht, oder in diesem Fall,n=16
wenn der Dezimalwert "kann. Es reicht aus, wenn Sie nicht mehr als 15 Dezimalstellen eingeben. (Gleiches gilt für viele andere Antworten in Sprachen mit willkürlichenPyth,
1098 BytesVerwendet
0
den Notfall Korridor zu bezeichnen , und"
.Probieren Sie es hier aus
Erläuterung
quelle
Brainfuck , 42 Bytes
Probieren Sie es online!
Nimmt Eingaben als Zeichencode und Ausgaben als
V
normale Spuren undW
als gelöschte Spuren. (Zum einfachen Testen empfehle ich, die,
durch eine Anzahl von+
s zu ersetzen. )Wie es funktioniert:
quelle
Oktave (MATLAB *),
31 30 28 2722 BytesProbieren Sie es online!
Das Programm funktioniert wie folgt:
Der hier verwendete Trick besteht darin, das Seed-Array von XNOR
0:n
mit einer Prüfung zu versehen, ob die Eingabe größer als 1 ist. Das Ergebnis ist, dass fürn>1
den Seed ein logisches Array von konvertiert wird,[0 1 (0 ...)]
während fürn==1
den Seed eine Invertierung erfolgt[1 0]
, um die erforderliche Inversion zu erzielen.Der Rest ist nur die Umwandlung des Samens in eine Schnur mit genügend angehängten Autos.
(*) Die TIO-Verknüpfung enthält in den Fußzeilenkommentaren eine alternative Lösung für die gleiche Anzahl von Bytes, die in MATLAB und Octave verwendet werden kann. Sie führt jedoch zu einer Folge von '0' und '1' anstelle von 'E' und ' C '. Der Vollständigkeit halber ist die Alternative:
1 Byte mit
n==1~=0:1
anstatt mit gespeichert0:1~=(n<2)
.~=
hat Vorrang vor<
, daher die ursprünglichen Klammern, aber es scheint, dass~=
und==
in der Reihenfolge des Erscheinens behandelt werden, so dass wir durch den Vergleich mit 1 ein Byte speichern können.2 Bytes gespart, indem geändert wurde, wo die Negation von
2:n
durchgeführt wird. Dies erspart ein Paar Klammern. Wir müssen auch das to ändern~=
,==
um der Tatsache Rechnung zu tragen, dass es später negiert wird.1 Byte mit
<
erneut gespeichert . Es stellt sich heraus, dass<
das==
immerhin den gleichen Vorrang hat . Das Voranstellen der<
Berechnung==
sichert die korrekte Ausführungsreihenfolge.5 Bytes gespart, indem nicht zwei separate Arrays erstellt wurden. Anstatt sich auf die Tatsache zu verlassen, dass der XNOR-Vergleich sowieso einen einzelnen Bereich in logische Werte umwandelt.
quelle
Jelly ,
119 BytesProbieren Sie es online!
Volles Programm.
Verwendet
0
anstelle vonC
.quelle
C (gcc), 39 Bytes
Probieren Sie es online!
Ausgeliehen und adaptiert den printf-Trick aus ErikFs Antwort .
quelle
Python 3, 32 Bytes
Probieren Sie es online!
Verwendet einen F-String-Ausdruck, um entweder zu formatieren,
'E'
oder wird'CE'
rechts'C'
damit aufgefüllt, damit er die Breite von hatn+1
.quelle
Brain-Flak ,
10066 BytesProbieren Sie es online!
Verwendet
"
als Notspur und!
als normale Fahrspur.quelle
C #, 34 Bytes
Probieren Sie es online!
quelle
05AB1E , 7 Bytes
Probieren Sie es online!
0 ist C und 1 ist E.
Erläuterung
quelle
$<×TìsiR
dachte ich.1I
kann bis Golf gespielt werden$
.APL (Dyalog Unicode) ,
21 1716 BytesProbieren Sie es online!
Dank an Erik für das Speichern von 4 Bytes und Adám für ein weiteres Byte.
Wie?
quelle
(⍵>1)
muss nicht in Klammern stehen Und Sie können 4 Bytes mit einer stillschweigenden Funktion speichern:(⊢×1<⊢)⌽'E',⍴∘'C'
.(-≠∘1)⌽'E',⍴∘'C'
oder=∘1⌽¯1⌽'E',⍴∘'C'
.'CE'[1(≠=∘⍳+)⎕]
Haskell ,
353332 Bytes2 Bytes dank Angs gespeichert, 1 Byte dank Lynn gespeichert
Probieren Sie es online!
Haskell ,
323029 BytesDies ist nullindiziert, sodass es der Herausforderung nicht entspricht
Probieren Sie es online!
Haskell , 30 Bytes
Dies funktioniert nicht, da die Ausgabe eine Zeichenfolge sein muss
Probieren Sie es online!
Hier verwenden wir Zahlen anstelle von Zeichenketten,
2
für den Notfallkorridor,1
für die Autos. Wir können a1
zum Ende hinzufügen , indem wir mit 10 multiplizieren und addieren1
. Das ist billiger, weil wir nicht für alle Bytes für Verkettung und String-Literale bezahlen müssen.Es wäre billiger zu verwenden
0
als,1
aber wir brauchen führende Nullen, die am Ende abgeschnitten werden.quelle
((blah)!!)
kann werden(!!)$blah
, um ein Byte in Ihren ersten beiden Antworten zu speichern.Python 3 ,
3029 BytesProbieren Sie es online!
OK, es gibt bereits viele Python-Antworten, aber ich denke, dies ist der erste Sub-30-Byte unter denen, die immer noch "E" - und "C" -Zeichen anstelle von Zahlen verwenden.
quelle
JavaScript (Node.js) , 28 Byte
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 16 Byte
Probieren Sie es online!
quelle
Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
Dies verwendet die Zeichen "0" und "1". Dies funktioniert, weil sich beim Drehen eines Arrays der Größe 1 nichts ändert.
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
JavaScript (Node.js) , 19 Byte
Probieren Sie es online!
quelle
Perl 5
-p
,272019 BytesProbieren Sie es online!
Durch die Verwendung
1
für die Autos undE
den Notfallkorridor wurde ein Byte gespart .quelle
Gelee , 6 Bytes
Zeigt die Fahrspuren als 0 und die Notspur als 1 an .
Probieren Sie es online!
Wie es funktioniert
quelle
Whitespace ,
141104103 BytesBuchstaben
S
(Leerzeichen),T
(Tabulator) und (Zeilenvorschub) werdenN
nur als Hervorhebungen hinzugefügt.[..._some_action]
nur als Erklärung hinzugefügt.Druckt
1
anstelle vonC
und-
anstelle vonE
.-1 Byte dank @JoKing, indem die Verwendung von
1
und-1
anstelle von0
und vorgeschlagen wird1
.Erklärung im Pseudocode:
Beispiel läuft:
Eingang:
1
Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Stopps mit Fehler: Exit nicht definiert.
Eingang:
4
Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Stopps mit Fehler: Exit nicht definiert.
quelle
-
wenn Sie das Drucken missbrauchen würden-1
?push_0
;print_as_integer
;push_1
;print_as_integer
zupush_-1
;print_as_integer
, aber im Gegenzug die beidenpush_0
;print_as_integer
werden ersetzt durchpush_45
;print_as_character
, wopush_0
=SSSN
, undpush_45
=SSSTSTTSTN
. Und ein zusätzlichespush_45
muss hinzugefügt werden, denn für die Eingabe drucken=1
ich jetzt das Duplikat, das0
ich bereits auf dem Stapel hatte, so dass ich nicht noch0
einmal drücken musste, weil das0
bereits auf dem Stapel war.-
ersetzen1
und1
ersetzen0
. Dann würde vermeiden Sie 45 zu schieben ist, und soweit ich das sagen kann , zum Drucken einer Zahl in der ersten Hälfte des bedingten würde sparen, aber leicht Kosten erhöhen auf 1 statt 0 schieben Check out my Gol> <> Antwort für Ein Beispiel für die Ausgabe, die ich meineprint_-1
Druck0
und statt1
, aber ein zusätzlicherprint_-1
ist außerhalb der Schleife notwendig. BEARBEITEN: Konnte es durch Ändern auf 103 Bytes reduzierensubtract_1
;if_0_jump_to_ONE
;push_-1
;print_integer
zusubtract_2
;if_negative_jump_to_ONE
;print_integer
, weil -1 dann schon auf dem Stack ist. Also danke für -1 Byte. :)AutoHotkey 32 Bytes
Ersetzt den Buchstaben "C" durch "EC", es sei denn, der Wert von C> 1, sendet er "CEC" und beendet die App.
C => EC
CC => CEC beendet dann das Programm. Alle weiteren Cs werden nach dem Beenden des Programms eingegeben.
quelle
APL + WIN,
2016 Bytes4 Bytes gespart dank Adám
Fordert zur Eingabe der Ganzzahl n auf:
1 für Notfallkorridor o für Autos.
quelle
(-2≠⍴n)⌽n←1⎕/⍕10
J , 11 Bytes
Probieren Sie es online!
Basierend auf dem Kommentar von ngn .
🚘 und 🚔:
1&<,~/@A.'🚔',~'🚘'$~,&4
quelle
MathGolf ,
76 BytesProbieren Sie es online aus.
Ausgabe
1
fürE
und0
fürC
.Erläuterung:
quelle