Heute war der Anmeldungstag für die AP-Prüfung an meiner Schule, und während ich akribisch in den erforderlichen Seiten und Informationsseiten blubberte, traf mich die Idee für diese Herausforderung. Ausgehend von einer Folge von Buchstaben und Zahlen geben Sie ein entsprechend ausgefülltes Blasendiagramm aus.
Regeln:
- Ersetzen Sie für jedes Zeichen in der Eingabezeichenfolge dieses Zeichen in der entsprechenden Spalte durch ein
#
oder@
ein anderes sinnvolles Symbol (wenn Ihre Sprache damit umgehen kann, sieht das Unicode-Zeichen 'full_block' aus: █ sieht wirklich gut aus). - Ein Leerzeichen wird durch eine leere Spalte dargestellt (siehe Beispiele)
- Eine gültige Eingabe ist eine Zeichenfolge, die nur aus Großbuchstaben, Ziffern und Leerzeichen besteht.
- Die Eingabe hat eine Länge von mindestens 1 und höchstens 32 Zeichen.
- Die Ausgabe muss in GROSSBUCHSTABEN erfolgen
- Wenn die Eingabelänge kleiner als die maximale Länge von 32 ist, muss Ihr Programm die verbleibenden leeren Spalten weiterhin ausgeben
- Ihr Programm muss Eingaben in Kleinbuchstaben nicht so behandeln, als ob sie in Großbuchstaben geschrieben wären, sondern Bonuspunkte, wenn dies möglich ist.
Kartenformat:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
Beispiele:
CODE GOLF ->
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
█CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DD█DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEE█EEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFF█FFFFFFFFFFFFFFFFFFFFFFF
GGGGG█GGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLL█LLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
O█OOOO█OOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ012345 ->
@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
B@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEE@EEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFF@FFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGG@GGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHH@HHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIII@IIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJ@JJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKK@KKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLL@LLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMM@MMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOO@OOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPP@PPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQ@QQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRR@RRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSS@SSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTT@TTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUU@UUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVV@VVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWW@WWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXX@XXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYY@YYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZ@ZZZZZZ
00000000000000000000000000@00000
111111111111111111111111111@1111
2222222222222222222222222222@222
33333333333333333333333333333@33
444444444444444444444444444444@4
5555555555555555555555555555555@
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ->^^^
Und das ist natürlich Code-Golf , also gewinnt die kürzeste Antwort
[A-Z0-9]{1,32}
und jedes Verhalten für Eingaben zulassen können, die nicht mit der Eingabe übereinstimmen.$
wird dies jedoch nicht in den Eingaben erscheinenAntworten:
Schale , 23 Bytes
Versuchen Sie es online oder versuchen Sie es mit der Phantasie █ Charakter (aber einen ungültigen bytecount)!
Leider konnte ich die beiden
map
s nicht zu einem verschmelzen (außer bei Verwendung von Klammern, die 24 Byte kosten).Erläuterung
quelle
Ruby , 62 Bytes
Probieren Sie es online!
Gibt ein Array von Strings zurück. Könnte weiter golfen werden, indem man String-Joins verwirft und ein 2D-Array von Zeichen zurückgibt, wie es normalerweise der Fall ist, aber ich bin mir nicht sicher, ob es hier erlaubt ist.
quelle
C (GCC) ,
132126 BytesProbieren Sie es online!
Vielen Dank an Jonathan Frech für das Speichern von 6 Bytes.
quelle
puts("")
ist äquivalent zuputchar(10)
.++a)putchar((x[a-s]-*_)?*_:64);
->)putchar(x[a++-s]-*_?*_:64);
.64
zu1
.putchar
Anruf an Golf gespielt werdenputchar(*_*(*_!=a[x-s]));
.Rot , 177 Bytes
Probieren Sie es online!
Besser lesbar:
quelle
Holzkohle , 21 Bytes
Probieren Sie es online!Link ist eine ausführliche Version des Codes. Erläuterung:
Vorgängerversion mit Eingabevalidierung,
3432 Bytes. Bearbeiten: 2 Bytes dank nur @ ASCII gespeichert.Probieren Sie es online! Link ist eine ausführliche Version des Codes.
quelle
StringReplace
) Nebenbei bemerkt, ein eingebauter Ersatz wäre wirklich praktischCast
R , 104 Bytes
Probieren Sie es online!
quelle
Jelly ,
1817 BytesVerwendet ein Leerzeichen. So verwenden Sie einen
#
Ersatz⁶
mit”#
für einen Preis von einem Byte.Probieren Sie es online!
Wie?
quelle
³Ḣ,⁶yØA;ØD¤µ32СZY
mit 18 gekommen, was ich für verbesserungsfähig halte! Ausgehen obwohl ...C ++ 14,
319 Bytes237Dies mache ich zum ersten Mal in der schlechtesten CodeGolf-Sprache: P
Probieren Sie es online!
quelle
Node.js, 85 Bytes
Port auf Node.js, vorgeschlagen von @DanielIndie
Probieren Sie es online!
JavaScript (ES6),
10398 ByteProbieren Sie es online!
quelle
+""
, oder?)x/32
2 Bytes speichern, daBuffer
es sich um Ganzzahlen handelt.f=(s,x=561,c=Buffer([48+x/33%43]))=>x<1749?(s[x++%33]==c?'@':x%33?c:`\n`)+f(s,x):''
Perl 5
-F
, 47 BytesProbieren Sie es online!
quelle
Haskell , 86 Bytes
Für einen viel schöneren Ansatz (und weniger Bytes) sehen Sie sich die Lösung von Laikoni an !
Probieren Sie es online!
Alternativ können wir für die gleiche Anzahl von Bytes Folgendes verwenden:
Probieren Sie es online!
Erklärung / Ungolfed
Der Operator
(#)
ist sehr ähnlich,zipWith
jedoch ist die Funktion fest codiert, st. Es wird verwendet,#
wenn zwei Zeichen gleich sind, andernfalls wird das zweite Zeichen ungolfed beibehalten:Wenn die erste Liste erschöpft ist, werden nur die verbleibenden Elemente der zweiten angefügt:
Mit diesem Helfer müssen wir nur den String generieren
"A..Z0..9"
, jedes Element 32-mal replizieren und die Eingabe mit jedem String, ungolfed, komprimieren:quelle
max
. Ich denke, Sie sollten das als Ihre eigene Lösung posten, da es sich sehr von meiner Lösung unterscheidet.Haskell , 74 Bytes
Probieren Sie es online! Eine Eingabezeichenfolge
x
wird mit Leerzeichen bis zu einer Länge von 32 mit aufgefüllttake 32$x++cycle" "
. Für jedes Zeichenc
ausA
bisZ
und0
bis betrachten9
wir die Zeichena
aus der aufgefüllten Eingabezeichenfolge und ersetzen sie durch~
wanna
undc
sind gleich und durchc
sonst. Dies wird erreicht, indemmax[c]['~'|a==c]
zBmax "A" "~" = "~"
wanna = c = 'A'
undmax "A" "" = "A"
wannc = 'A'
unda = 'B'
. Da dies einen Singleton-String anstelle eines Zeichens ergibt, wird derdo
Zeichens ergibt Anmerkung verwendet, die die Singleton-Zeichenfolgen zu einer Zeichenfolge verkettet.Basierend auf der Haskell-Lösung von BMO .
quelle
Python 2, 138 Bytes
Unterstützt sowohl Groß- als auch Kleinbuchstaben und lässt eine nicht ausgefüllte Spalte für Leerzeichen.
Wenn sich der Bonus nicht lohnt, werde ich 125 Bytes verwenden und nur Großbuchstaben unterstützen:
quelle
Stax , 15 Bytes
Führen Sie es aus und debuggen Sie es
Es benutzt
'#'
zeigt eine gefüllte Blase an.Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
Pyth,
2320 BytesProbieren Sie es hier aus
Erläuterung
quelle
APL + WIN, 56 Bytes
Fordert zur Eingabe einer Zeichenfolge auf und verwendet das Zeichen # als Bezeichner:
Erläuterung:
quelle
C (gcc) 124 Bytes
Probieren Sie es online!
Anstelle eines hartcodierten Arrays habe ich stattdessen eine Suchfunktion verwendet. Glücklicherweise ist die ASCII - Zeichensatz hat zusammenhängenden alphabetischen und numerischen Bereiche (Ich sehe dich an , EBCDIC!) Wie gut, stellte ich sicher , genau 32 Zeichen die Ausgabe zu halten mit
sprintf()
: wenn dies nicht eine Anforderung der Aufgabe war es , die Funktion wäre 97 Bytes:Probieren Sie es online!
quelle
CJam , 31 Bytes
Probieren Sie es online! Verwendet Leerzeichen als "Loch" -Zeichen.
Wenn nachfolgendes Leerzeichen zulässig ist, funktioniert dies für 29 Bytes :
Probieren Sie es online!
Hier ist eine 34-Byte-Variante, die
█
stattdessen Unicode full block ( ) verwendet:Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
1039694 Bytes-7 Bytes dank Mnemonic
-2 Bytes dank Jonathan Frech
Verwendet
'
als SymbolProbieren Sie es online!
quelle
05AB1E , 19 Bytes
Probieren Sie es online!
Erläuterung
quelle
a[b]
funktioniert hier nicht so wie du es willst, oder: P?MATL , 21 Bytes
Verwendet ein Leerzeichen als Markierungszeichen.
Probieren Sie es online!
Erläuterung
quelle
Common Lisp , 150 Bytes
Probieren Sie es online!
Erläuterung
quelle
Java 10,
120118117 BytesProbieren Sie es online aus (für TIO habe ich '█' verwendet) (
9608
anstelle von35
) für eine bessere Sichtbarkeit verwendet).Erläuterung:
quelle
Netzhaut , 64 Bytes
Probieren Sie es online!
Füllt die Eingabezeichenfolge rechts mit Leerzeichen zu 36 Zeichen auf
Setzen Sie dann jedes Zeichen in eine eigene Zeile und fügen Sie es
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
davor hinzu.Ordnen Sie ein Paar desselben Zeichens in derselben Zeile zu, das es genau dann gibt, wenn das Zeichen für diese Zeile mit einem von übereinstimmt
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Ersetzen Sie das erste durch@
und entfernen Sie das zweite.Die einzigen nicht übereinstimmenden Zeilen sind solche mit Leerzeichen, daher ist das Nicht-Leerzeichen ein 36 × 36-Quadratblock. Transponiere es.
Behalten Sie nur die ersten 32 Zeichen in jeder Zeile
quelle
Tcl ,
153145 BytesDanke @sergiol für -8 Bytes
Probieren Sie es online!
Erläuterung
quelle
SNOBOL4 (CSNOBOL4) ,
155 bis150 ByteProbieren Sie es online!
Erläuterung:
quelle
Prolog (SWI) ,
235229228222214198173167165 Bytes-6 Bytes dank @Cows quack , -6 Bytes dank @ 0 '
Probieren Sie es online!
Erläuterung
quelle
SOGL V0.12 , 19 Bytes
Probieren Sie es hier aus!
quelle
Oktave , 61 Bytes
Probieren Sie es online!
Die Funktion funktioniert wie folgt:
quelle
Perl 6 , 57 Bytes
Probieren Sie es online!
quelle