Referenciando xkcd 1688 :
Sua tarefa é deduzir a idade de um mapa, fazendo perguntas ao usuário. Essas perguntas devem ser exatamente as mesmas do guia xkcd, exceto as letras maiúsculas e as novas linhas adicionais. Além disso, você deve oferecer ao usuário algumas opções para escolher, que não precisam estar na ordem como na imagem xkcd. Se a entrada não corresponder a nenhuma das respostas esperadas, seu programa / função poderá se comportar de maneira indefinida. No final, você deve exibir o ano / período em que o mapa foi criado.
Exemplos ( >
denota entrada, mas você pode escolher outra coisa):
Exemplo 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
Exemplo 2:
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>how are you
error
code-golf
kolmogorov-complexity
corvus_192
fonte
fonte
Respostas:
Idioma do criador de jogos (GM 8.0),
1026210228101521011587461 + 8699 = 8700 bytesDefinimos um script chamado
X
(1 byte). Cada pergunta é rotulada com um número inteiro.X
pega esse número inteiro, solicita ao usuário a pergunta correspondente e retorna a mensagem apropriada ou faz a próxima pergunta. Em cada pergunta, o usuário é solicitado a fornecer um número inteiro correspondente às opções possíveis. Se o usuário não corresponder a nenhuma das opções, o prompt será encerrado.#
é o caractere de nova linha.Como executar
.gmk
arquivoX
com o conteúdo como acimaO
com Create Event: execute code:X(1)
R
e coloque uma instânciaO
nelaGolfe
YES
agora sempre precedeNO
e definimos a sequênciaY="##YES (1), NO (2)"
para reutilização."IS THERE A BIG LAKE IN THE MIDDLE OF "
e"HOW MANY "
são longos o suficiente e ocorrem várias vezes para que a abreviação seja recompensada. Eles são atribuídos aI
eH
.X
si próprio, em vez de um script separado, para abreviarget_integer
eshow_message
. Explicitamente,X
for chamado com argumento zerothH
, retornaráshow_message
o primeiro argumento.X
for chamado com o argumento zerothI
, ele retornaráget_integer
o primeiro argumento, mostrando a entrada padrão1
.Sem golfe , com opções na ordem original e sem abreviações:
Sistema de numeração
YES
,NO
opções para salvar bytesfonte
YES
primeiro lugar para evitar definirN="##NO (1), YES (2)"
. Obrigado.