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.