Referenciando a xkcd 1688 :

Su tarea es deducir la antigüedad de un mapa haciendo preguntas al usuario. Estas preguntas deben ser exactamente las mismas que en la guía xkcd, excepto por las mayúsculas y las nuevas líneas adicionales. Además, debe darle al usuario algunas opciones para elegir, que no tienen que estar en el orden como en la imagen xkcd. Si la entrada no coincide con ninguna de las respuestas esperadas, su programa / función puede comportarse de manera indefinida. Al final, debe generar el año / intervalo de tiempo en que se creó el mapa.
Ejemplos ( >denota entrada, pero puede elegir otra cosa):
Ejemplo 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
Ejemplo 2
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>how are you
error
code-golf
kolmogorov-complexity
corvus_192
fuente
fuente

Respuestas:
Game Maker Language (GM 8.0),
1026210228101521011587461 + 8699 = 8700 bytesDefinimos un script llamado
X(1 byte). Cada pregunta está etiquetada con un número entero.Xtoma dicho número entero, le pregunta al usuario la pregunta correspondiente y devuelve el mensaje apropiado o llama a la siguiente pregunta. En cada pregunta, se le solicita al usuario un número entero correspondiente a las posibles opciones. Si el usuario no coincide con ninguna de las opciones, se cierra la solicitud.#es el personaje de nueva línea.Como correr
.gmkArchivo nuevoXcon el contenido anterior.Ocon Crear evento: ejecute código:X(1)Ry pon una instancia deOellaGolf
YESahora siempre precedeNO, y definimos la cadenaY="##YES (1), NO (2)"para su reutilización."IS THERE A BIG LAKE IN THE MIDDLE OF "y"HOW MANY "son lo suficientemente largos y ocurren tantas veces como para que la abreviatura valga la pena. Están asignados aIyH.X, en lugar de un script separado, para abreviarget_integeryshow_message. Explícitamente,Xse llama con argumento ceroH, entonces se devuelveshow_messageel primer argumento.Xse llama con un argumento ceroI, entonces devuelveget_integerel primer argumento, que muestra la entrada predeterminada1.Sin golf , con opciones en el orden original y sin abreviaturas en absoluto:
Sistema de numeración
YES,NOopciones para guardar bytesfuente
YESprimero para evitar definirN="##NO (1), YES (2)". Gracias.