Référencement xkcd 1688 :
Votre tâche consiste à déduire l'âge d'une carte en posant des questions à l'utilisateur. Ces questions doivent être exactement les mêmes que dans le guide xkcd, sauf pour la capitalisation et les nouvelles lignes supplémentaires. De plus, vous devez donner à l'utilisateur des options parmi lesquelles choisir, qui ne doivent pas nécessairement être dans l'ordre comme dans l'image xkcd. Si l'entrée ne correspond à aucune des réponses attendues, votre programme / fonction peut se comporter d'une manière non définie. À la fin, vous devez afficher l'année / la période pendant laquelle la carte a été créée.
Exemples ( >
indique une entrée, mais vous pouvez choisir autre chose):
Exemple 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
Exemple 2:
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>how are you
error
code-golf
kolmogorov-complexity
corvus_192
la source
la source
Réponses:
Game Maker Language (GM 8.0),
1026210228101521011587461 + 8699 = 8700 octetsNous définissons un script nommé
X
(1 octet). Chaque question est étiquetée avec un entier.X
prend un tel entier, invite l'utilisateur à poser la question correspondante et renvoie le message approprié ou appelle la question suivante. À chaque question, l'utilisateur est invité à saisir un entier correspondant aux options possibles. Si l'utilisateur ne correspond à aucune des options, l'invite est fermée.#
est le caractère de nouvelle ligne.Comment courir
.gmk
fichierX
avec le contenu ci-dessusO
avec Create Event: exécutez le code:X(1)
R
et mettre une instance deO
dedansLe golf
YES
précède désormais toujoursNO
et nous définissons la chaîneY="##YES (1), NO (2)"
à réutiliser."IS THERE A BIG LAKE IN THE MIDDLE OF "
et"HOW MANY "
sont suffisamment longues et se produisent suffisamment de fois pour que l'abréviation soit payante. Ils sont affectés àI
etH
.X
lui-même, plutôt qu'un script séparé, pour abrégerget_integer
etshow_message
. Explicitement,X
est appelé avec l'argument zéroH
, il renvoie alorsshow_message
le premier argument.X
est appelé avec l'argument zéroI
, il renvoieget_integer
le premier argument, montrant l'entrée par défaut1
.Non golfé , avec des options dans l'ordre d'origine et aucune abréviation:
Système de numérotation
YES
,NO
options pour économiser les octetsla source
YES
premier pour éviter de définirN="##NO (1), YES (2)"
. Merci.