Für zwei gegebene Parameter Spurmuster und Straßenlänge , drucken Sie eine ASCII - Darstellung der Fahrspurmarkierungen für Straßen- und Verkehrsdienst der Straßen zu malen.
Beispiel Eingabe / Ausgabe
Eingabe:, BTHMLRPHU
21
Es ist mir egal, ob Sie zwei Parameter verwenden oder die Zahl an das Ende der Zeichenfolge anhängen, es ist eindeutig.
Die Eingabe kann von STDIN als Funktionsargument und Umgebungsvariablen erfolgen, was auch immer in Ihrer Sprache sinnvoll ist.
Ausgabe:
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
Jedes Zeichen entspricht einer Breite von 0,5 Metern und einer Länge von einem Kilometer.
Spezifikation
Fahrspurmarkierungen
Für jeden 10 km langen Straßenabschnitt werden Markierungen in den Kilometern 2, 3, 9 und 10 (von der "Oberseite" der Ausgabe) angebracht. Markierungen werden in der Spur zentriert. Mit Ausnahme der Fahrradspur und des Medians sind alle Spuren 3 Meter (6 Zeichen) breit.
ASCII-Rauten- und Pfeilzeichen sind anstelle der in der Beispielausgabe angegebenen Markierungen nicht zulässig.
B
: Radweg.B
Markierung. 1,5 Meter (3 Zeichen) breit.T
: Transit. DiamantmarkierungH
: Fahrzeugspur mit hoher Belegung.HOV3
MarkierungL
undR
: Abbiegen. PfeilmarkierungP
: Überholspur. Caret-MarkierungenU
: Uneingeschränkte Fahrspur. Keine Markierungen
Trennzeichen (in der Reihenfolge ihrer Rangfolge)
- Median:
##
(bezeichnet durchM
in der Eingabezeichenfolge, ersetzt alle anderen Trennzeichen einschließlich Graben) - Graben (ganz links und ganz rechts):
!
Ausrufezeichen - HOV-Spuren wechseln zwischen
x
und|
alle 5 km - Normal:
|
Einschränkungen
Ihre Funktion oder Ihr Programm muss:
- In STDOUT drucken (entspricht
System.out.print
Java,console.log
JavaScript usw.) - Sie können 1 - 9 Spuren mit 0 - 10 Medianwerten drucken
- Sie können bis zu 50 km Straße drucken (50 Zeilen Ausgabe).
- Verwenden Sie keine Standardlücken
- Der nachgestellte Leerraum ist mit Ausnahme eines optionalen Leerraums
\n
am Ende der Ausgabe nicht zulässig
Größtmögliche Ausgabe: 3700 Bytes (74 Zeichen * 50 Zeilen).
Kleinstmögliche Ausgabe: 5 Bytes (mit Eingabe B
, 1)
Annahmen
- Keine benachbarten Mediane (Teilzeichenfolge tritt
MM
nicht auf) - Die zweite Markierungslinie wird möglicherweise abgeschnitten (z. B. bei einer Länge von 9 oder 12 km).
- Spuren sind möglicherweise nicht logisch sinnvoll (jede Reihenfolge ist möglich, z. B. eine Rechtskurve links von der Straße)
Das ist Code-Golf , also gewinnt der kürzeste Code (in Bytes)!
Antworten:
Ruby, 245
Drucken Sie gegebenenfalls die Fahrspurunterteilungen aus und drucken Sie dann die Fahrspur aus.
Ich erwarte nicht zu gewinnen.
Änderungsprotokoll
245 drosseln stderr und teilen Arrays effektiv.
263 bessere Möglichkeit, Array zu indizieren
268 drucke einfach jede Zeile aus, berechne keine kanonische Version.
330 Initial Commit
quelle
JavaScript (ES6), 316 Byte
Demo
Es sollte zum Zeitpunkt des Schreibens in Firefox und Edge funktionieren. Für Chrome / Opera müssen experimentelle Funktionen aktiviert sein.
quelle
05AB1E ,
175174175 BytesZiemlich schlechter Ansatz, aber es funktioniert und hat Spaß gemacht. Kann aber definitiv noch mehr golfen werden.
+1 Byte als Bugfix für zwei benachbarte
HH
Spuren.Probieren Sie es online aus.
Erläuterung:
Schritt 1: Erstellen Sie alle möglichen Bahnen mit Größe 10:
Schritt 2: Konvertieren Sie die Eingabezeichenfolge in Indizes (mit denen wir die in Schritt 1 erstellte Liste indizieren):
Schritt 3: Wir verwenden diese Indizes, um die Liste der Spuren zu indizieren. Und dann konvertieren wir diese Liste der Spuren in die richtige Ausgabe, einschließlich deren Erweiterung / Verkürzung auf die Größe der Ganzzahleingabe:
Sehen Sie diese 05AB1E Spitze von mir (Abschnitte Wie Kompresse Strings nicht Teil des Wörterbuchs? Und Wie große natürliche Zahlen komprimieren? ) Zu verstehen , warum
Ž5E
ist1289
;.•o¤[‹‡•
ist"tlrpbhmu"
;ŽDý
ist10201
;•δ~¬]•
ist1119188999
;Ž\nÿ
ist19889
.quelle