Eine Bronzetafel auf dem Sockel der Freiheitsstatue zeigt das Gedicht " Der neue Koloss " von Emma Lazarus. Ein Teil davon lautet:
Gib mir deine müden, deine armen,
deine gedrängten Massen, die sich danach sehnen, frei zu atmen,
den elenden Müll von deinem wimmelnden Ufer.
Sende diese Obdachlosen zu mir,
ich hebe meine Lampe neben die goldene Tür!
Um diesen Abschnitt des Gedichts für diese Herausforderung zu vereinfachen, werden wir alles in Großbuchstaben schreiben und die Zeilenumbrüche durch Schrägstriche ( /
) ersetzen , wobei Kommas und andere Satzzeichen wie folgt beibehalten werden :
GIVE ME YOUR TIRED, YOUR POOR,/YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,/THE WRETCHED REFUSE OF YOUR TEEMING SHORE./SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,/I LIFT MY LAMP BESIDE THE GOLDEN DOOR!
Wir werden diese Zeichenkette S nennen. Sie hat md5-Hash 8c66bbb9684f591c34751661ce9b5cea
. Optional können Sie davon ausgehen, dass es sich um einen nachgestellten Zeilenumbruch handelt. In diesem Fall lautet der MD5-Hash 0928ff6581bc207d0938b193321f16e6
.
Schreiben Sie ein Programm oder eine Funktion, die eine einzelne Zeichenfolge enthält. Wenn die Zeichenfolge S ist , werden die sechs Sätze, die die Art der Personen beschreiben, nach denen Lady Liberty in dem Gedicht gefragt wird, in der Reihenfolge einer pro Zeile ausgegeben :
TIRED
POOR
HUDDLED MASSES YEARNING TO BREATHE FREE
WRETCHED REFUSE OF YOUR TEEMING SHORE
HOMELESS
TEMPEST-TOST
(Diese genaue Zeichenfolge, optional gefolgt von einer einzelnen nachgestellten Zeile, muss Ihre Ausgabe für Eingabe S sein.)
Für mindestens eine Eingabezeichenfolge, die nicht S ist, sollte Ihre Ausgabe eine andere Zeichenfolge als die sechs obigen Zeilen sein. Dies könnte so einfach sein wie nur auszugeben, TIRED
wenn die Eingabe nur ist GIVE ME YOUR TIRED
. Diese Regel soll eine reine Hardcodierung verhindern. Andernfalls kann Ihr Code alles tun, wenn die Eingabezeichenfolge nicht S ist.
Dies ist im Wesentlichen eine Herausforderung mit konstanter Ausgabe, bei der Sie eine Eingabe erhalten, die der Ausgabe relativ nahe kommt. Sie können natürlich die Eingabe meistens ignorieren und die Ausgabe fest codieren, aber es ist möglicherweise besser, beispielsweise die für die Ausgabe erforderlichen Teilzeichenfolgen der Eingabe zu entfernen.
Als Referenz sind hier die auf Null basierenden Indizes und Längen der sechs Ausgabezeilen in S:
13 5, 25 4, 36 39, 81 37, 136 8, 146 12
Der kürzeste Code in Bytes gewinnt.
quelle
Antworten:
Jelly , 19 Bytes
Probieren Sie es online! oder versuchen Sie es mit einem anderen Text .
Wie?
Indexiert in die Liste aller nicht leeren zusammenhängenden Segmente der Eingabezeichenfolge und verknüpft sie mit Zeilenvorschüben.
Vorheriger Code, 22 Bytes:
Partitioniert die Eingabezeichenfolge, nimmt jedes zweite Element und verbindet sich mit Zeilenumbrüchen.
“ÇŒȷœ%LRw⁹ƊƓɠ‘
ist eine Liste von Codepage-Indizes, erstelltṬ
eine Liste von Nullen mit Einsen an diesen Indizes,œṗ
partitioniert die Eingabe an den Wahrheitsindizes dieser Liste,Ḋ
entfernt das erste Element,m2
nimmt jedes zweite Element undY
verbindet sich mit Zeilenvorschüben.quelle
JavaScript (ES6),
128 bis69 ByteKann leere Zeilen oder etwas Müll ausgeben, wenn sich die Eingabe von unterscheidet
S
.quelle
Bash ,
766560 BytesProbieren Sie es online!
quelle
Mathematica , 71
quelle
PowerShell , 72 Byte
Probieren Sie es online!
Erläuterung
Dies ist eine ziemlich beschissene Regex-Lösung.
Teilen Sie die Zeichenfolge in ein Array auf
/
oder.
oder,
und ersetzen Sie dann Teile jeder Zeichenfolge, die mit dem ersten Muster übereinstimmen. Dies ergibt ein Array von-replace
d Zeichenfolgen. Verwenden Sie dann den-match
Operator, um ein Array der Elemente zurückzugeben, die mit dem zweiten Muster übereinstimmen (das entfernt wird) der Leerzeilen und 2 Zeilen, die vorher nicht gefiltert wurden).quelle
Mathematica, 86 Bytes
Unbenannte Funktion, die eine Liste von Zeichen als Eingabe verwendet und eine Zeichenfolge zurückgibt. Extrahiert einfach die relevanten Teilzeichenfolgen der Eingabe und verkettet sie mit Zeilenumbrüchen.
quelle
String
sondern eine Liste vonCharacter
s.TI-Basic, 58 Bytes
Sehr einfach.
Disp
ist wieprintln
, so gibt es zwischen Zeilenumbrüche.quelle
Retina ,
3832 BytesEs kann wahrscheinlich verbessert werden, aber das ist ein Job für Regexes!
Probieren Sie es online!
quelle