Montag Minigolf: Eine Reihe von kurzen Code-Golf- Herausforderungen, die (hoffentlich!) Jeden Montag veröffentlicht werden.
Wahre Begebenheit 1 : Neulich spielte ich auf meinem Tablet herum, als ich auf die Idee kam, die Seite zu besuchen, die ich normalerweise auf meinem PC zum Testen von JavaScript verwende. Nachdem die Seite geladen war, habe ich dieses einfache Programm aufgerufen:
alert("Hello!")
Ich drückte dann die Execute-Taste und war überrascht, als mir mitgeteilt wurde, dass der von mir eingegebene Code ungültig war. Ich warf einen zweiten Blick auf das Textfeld und sah Folgendes:
alllelelerlerlertlert("Heeelelellellelloello!")
Was ??? Das habe ich nicht eingegeben! Also, was ist hier passiert? Um das herauszufinden, habe ich zwei einfache Zeilen eingegeben:
abcdefg
0123456
Dies stellte sich heraus als:
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
Inzwischen hatte ich noch keine Ahnung, was mit den Buchstaben geschah, aber die Zahlen schienen einfacher zu sein, also schaute ich genauer hin. Wie sich herausstellte, gab die Webseite einfach das erste Zeichen ein und wiederholte den Rest der Zeichenkette jedes Mal, wenn ein neues gedrückt wurde:
0112123123412345123456
0
1
12
123
1234
12345
123456
Aber was ist mit den Buchstabenabschnitten? Nachdem ich eine Minute lang nachgedacht hatte, wurde mir klar, dass es genau dasselbe ist, aber anstatt jeden Unterabschnitt einmal zu wiederholen, wird es zweimal wiederholt :
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
Eine Kombination der beiden funktioniert mit einer Kombination dieser Techniken:
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
Was auch immer Störimpulse verursachen mag, diese scheinen sich bei Interpunktion und Leerzeichen zurückzusetzen, so abc def
wird es abbbcbc deeefef
.
Zu diesem Zeitpunkt war ich so fasziniert, es herauszufinden und es zu einer interessanten Herausforderung zu machen, dass ich vergaß, warum ich überhaupt dort gewesen war. (Ich habe jedoch herausgefunden, wie man normal schreibt: Drücken Sie die Leertaste nach jedem Zeichen. Ziemlich langweilig, aber Sie müssen tun, was Sie tun müssen.)
Herausforderung
Ziel der Herausforderung ist es, ein Programm oder eine Funktion zu schreiben, die den zu verarbeitenden Text aufnimmt, die oben aufgeführten Änderungen vornimmt und das Ergebnis ausgibt / zurückgibt.
Einzelheiten
- Die Eingabe enthält nur druckbares ASCII und keine Tabulatoren oder Zeilenumbrüche.
Testfälle
Eingänge: (einer pro Zeile)
Mess up text
This is some longer text.
CAPS LOCK && "Punc-tua"+'tion'
under_score_style
CaPs wItHIn loWERs
1337 numb3r5
abcdefghij 0123456789
Code-golf is the best!
Ausgänge:
Meeesesessess upp teeexexextext
Thhhihihishis iss sooomomomeome looononongongongeongeongeronger teeexexextext.
CAAAPAPAPSAPS LOOOCOCOCKOCK && "Puuunununcunc-tuuuaua"+'tiiioioionion'
unnndndndendendernder_scccococorcorcorecore_stttytytyltyltyletyle
CaaaPaPaPsaPs wIIItItItHItHItHIItHIItHInItHIn loooWoWoWEoWEoWERoWERoWERsoWERs
1333337 nuuumumumbumbumb3umb3rumb3rumb3r5
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefgbcdefghbcdefghbcdefghibcdefghibcdefghijbcdefghij 0112123123412345123456123456712345678123456789
Cooodododeode-gooolololfolf iss thhhehe beeesesestest!
Wertung
Das ist Code-Golf , also gewinnt der kürzeste gültige Code in Bytes. Tiebreaker geht zur Übermittlung über, die als erste ihre letzte Bytezahl erreicht hat. Der Gewinner wird am kommenden Montag, 2. November, ermittelt. Viel Glück!
Edit: Und der Gewinner ist ... @ MartinBüttner benutzt Retina für eine unglaubliche 43-Byte- Lösung!
1 Ja, diese Geschichte ist völlig richtig, und wenn Sie weitere Erläuterungen benötigen, siehe Fußnote 1.
' '.join(x[0]+''.join(2*x[1:i]for i in range(1,len(x)+1)) for x in raw_input().split())