Na brązowej tabliczce na cokole Statuy Wolności znajduje się wiersz „ Nowy kolos ” Emmy Lazarus, którego część brzmi:
Daj mi swoje zmęczone, swoje biedne,
Twoje skulone masy, które pragną uwolnić się,
Nieszczęsna odmowa twojego tętniącego życiem brzegu.
Wyślij do mnie tych bezdomnych, burzliwych, podnoszę
lampę obok złotych drzwi!
Aby uprościć tę sekcję wiersza dla tego wyzwania, dodamy wielkie litery i zastąpimy /
znaki nowej linii ukośnikami ( ), zachowując przecinki i inne znaki interpunkcyjne w następujący sposób:
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!
Nazwiemy ten ciąg S. Ma hash md5 8c66bbb9684f591c34751661ce9b5cea
. Opcjonalnie możesz założyć, że ma on końcowy znak nowej linii, w którym to przypadku hash md5 0928ff6581bc207d0938b193321f16e6
.
Napisz program lub funkcję, która pobiera pojedynczy ciąg. Gdy ciąg znaków to S, wyjście w kolejności , po jednym w wierszu, sześć wyrażeń opisujących rodzaj ludzi, których wiersz przedstawia Lady Liberty, prosząc o:
TIRED
POOR
HUDDLED MASSES YEARNING TO BREATHE FREE
WRETCHED REFUSE OF YOUR TEEMING SHORE
HOMELESS
TEMPEST-TOST
(Ten precyzyjny ciąg, opcjonalnie po nim pojedynczy znak nowej linii, musi być twoją wyjściową wartością wejściową S.)
W przypadku co najmniej jednego ciągu wejściowego, który nie jest literą S, wynikiem powinien być dowolny ciąg inny niż sześć wierszy powyżej. Może to być tak proste, jak wyprowadzanie tylko TIRED
wtedy, gdy dane wejściowe są tylko GIVE ME YOUR TIRED
. Ta zasada zapobiega czystemu kodowaniu. W przeciwnym razie, gdy ciąg wejściowy nie jest S, kod może zrobić wszystko.
Zasadniczo jest to wyzwanie polegające na ciągłym uzyskiwaniu danych wyjściowych, w którym dane wejściowe są stosunkowo zbliżone do danych wyjściowych. Oczywiście można w większości zignorować dane wejściowe i zakodować dane wyjściowe, ale może być lepiej, powiedzmy, usunięcie podciągu danych wejściowych potrzebnych dla danych wyjściowych.
Dla porównania, oto wskaźniki oparte na zerach i długości sześciu linii wyjściowych w S:
13 5, 25 4, 36 39, 81 37, 136 8, 146 12
Najkrótszy kod w bajtach wygrywa.
źródło
Odpowiedzi:
Galaretka , 19 bajtów
Wypróbuj online! lub wypróbuj inny tekst .
W jaki sposób?
Indeksuje do listy wszystkich niepustych ciągłych wycinków ciągu wejściowego i łączy się ze znakami linii.
Poprzedni kod, 22 bajty:
Dzieli ciąg wejściowy, pobiera co drugi element i łączy się z liniami.
“ÇŒȷœ%LRw⁹ƊƓɠ‘
jest listą indeksów stron kodowych,Ṭ
tworzy listę zer z zerami w tych indeksach,œṗ
dzieli dane wejściowe według prawdziwych indeksów tej listy,Ḋ
usuwa pierwszy element,m2
przyjmuje co drugi element iY
łączy się z liniami.źródło
JavaScript (ES6),
12869 bajtówMoże wyświetlać puste wiersze lub śmieci, gdy dane wejściowe są inne niż
S
.źródło
Bash ,
766560 bajtówWypróbuj online!
źródło
Mathematica , 71
źródło
PowerShell , 72 bajty
Wypróbuj online!
Wyjaśnienie
To dość kiepskie rozwiązanie wyrażenia regularnego.
Podział łańcucha na tablicę na
/
lub.
lub,,
a następnie zastąpienie części każdego łańcucha pasującego do pierwszego wzorca, co daje tablicę-replace
ciągów d, a następnie użyć-match
operatora, aby zwrócić tablicę elementów pasujących do drugiego wzorca (który się pozbywa pustych linii i 2 linii, które wcześniej nie były filtrowane).źródło
Mathematica, 86 bajtów
Funkcja bez nazwy, która przyjmuje listę znaków jako dane wejściowe i zwraca ciąg znaków. Po prostu wyodrębnia odpowiednie podciągi wejściowe i łączy się z nowymi liniami.
źródło
String
jest listąCharacter
s.TI-Basic, 58 bajtów
Bardzo proste.
Disp
jest jakprintln
, więc między nimi są nowe linie.źródło
Siatkówka ,
3832 bajtówPrawdopodobnie można to poprawić, ale jest to zadanie dla wyrażeń regularnych!
Wypróbuj online!
źródło