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.X
toma 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
.gmk
Archivo nuevoX
con el contenido anterior.O
con Crear evento: ejecute código:X(1)
R
y pon una instancia deO
ellaGolf
YES
ahora 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 aI
yH
.X
, en lugar de un script separado, para abreviarget_integer
yshow_message
. Explícitamente,X
se llama con argumento ceroH
, entonces se devuelveshow_message
el primer argumento.X
se llama con un argumento ceroI
, entonces devuelveget_integer
el 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
,NO
opciones para guardar bytesfuente
YES
primero para evitar definirN="##NO (1), YES (2)"
. Gracias.