Odwoływanie się do xkcd 1688 :
Twoim zadaniem jest odjęcie wieku mapy, zadając pytania użytkownikom. Te pytania muszą być dokładnie takie same, jak w przewodniku xkcd, z wyjątkiem wielkich liter i dodatkowych znaków nowej linii. Dodatkowo powinieneś dać użytkownikowi kilka opcji do wyboru, które nie muszą być w kolejności jak na obrazie xkcd. Jeśli dane wejściowe nie odpowiadają żadnej z oczekiwanych odpowiedzi, Twój program / funkcja może zachowywać się w nieokreślony sposób. Na koniec powinieneś podać rok / przedział czasu, w którym mapa została utworzona.
Przykłady ( >
oznacza dane wejściowe, ale możesz wybrać coś innego):
Przykład 1:
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>ISTANBUL
DOES THE SOVIET UNION EXISTS?
(YES, NO)
>NO
ZAIRE?
OR: 'HONG KONG (UK)'
(YES, NO)
>NO
SERBIA / MONTENEGRO ARE?
(ONE COUNTRY, TWO COUNTRIES)
>TWO COUNTRIES
HOW MANY SUDANS ARE THERE?
(ONE, TWO)
>ONE
2007-11
Przykład 2:
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>how are you
error
code-golf
kolmogorov-complexity
corvus_192
źródło
źródło
Odpowiedzi:
Game Maker Language (GM 8.0),
1026210228101521011587461 + 8699 = 8700 bajtówDefiniujemy skrypt o nazwie
X
(1 bajt). Każde pytanie jest oznaczone liczbą całkowitą.X
przyjmuje taką liczbę całkowitą, monituje użytkownika o odpowiednie pytanie i albo zwraca odpowiednią wiadomość, albo wywołuje następne pytanie. Przy każdym pytaniu użytkownik jest proszony o podanie liczby całkowitej odpowiadającej możliwym opcjom. Jeśli użytkownik nie pasuje do żadnej z opcji, monit zostanie zamknięty.#
jest znakiem nowej linii.Jak biegać
.gmk
plikX
z zawartością jak wyżejO
pomocą opcji Utwórz zdarzenie: wykonaj kod:X(1)
R
i umieścić jedno wystąpienieO
w nimGra w golfa
YES
Teraz opcja zawsze poprzedzaNO
, a my definiujemy ciągY="##YES (1), NO (2)"
do ponownego użycia."IS THERE A BIG LAKE IN THE MIDDLE OF "
i"HOW MANY "
są wystarczająco długie i występują wystarczająco wiele razy, aby skrót mógł się opłacić. Są przypisane doI
iH
.X
samego siebie, a nie osobnego skryptu, do skracaniaget_integer
ishow_message
. WyraźnieX
zostanie wywołany z zerowym argumentemH
, wówczas zwrócishow_message
pierwszy argument.X
jest wywoływany z zerowym argumentemI
, to zwracaget_integer
pierwszy argument, pokazując domyślne wejście1
.Bez golfa , z opcjami w oryginalnej kolejności i bez żadnych skrótów:
System numeracji
YES
,NO
opcji oszczędzania bajtówźródło
YES
pierwszym miejscu, aby uniknąć definiowaniaN="##NO (1), YES (2)"
. Dzięki.