Ссылка xkcd 1688 :
Ваша задача - определить возраст карты, задавая вопросы пользователю. Эти вопросы должны быть точно такими же, как и в руководстве по xkcd, за исключением случаев использования заглавных букв и дополнительных символов новой строки. Кроме того, вы должны предоставить пользователю несколько вариантов на выбор, которые не обязательно должны быть в порядке, как на изображении xkcd. Если ввод не соответствует ни одному из ожидаемых ответов, ваша программа / функция может вести себя неопределенным образом. В конце вы должны указать год / период времени, в течение которого была создана карта.
Примеры ( >
обозначает ввод, но вы можете выбрать что-то другое):
Пример 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
Пример 2:
ISTANBUL OR CONSTANTINOPLE?
(CONSTANTINOPLE, NEITHER, ISTANBUL)
>how are you
error
code-golf
kolmogorov-complexity
corvus_192
источник
источник
Ответы:
Game Maker Language (GM 8.0),
1026210228101521011587461 + 8699 = 8700 байтМы определяем скрипт с именем
X
(1 байт). Каждый вопрос помечен целым числом.X
принимает такое целое число, запрашивает у пользователя соответствующий вопрос и либо возвращает соответствующее сообщение, либо вызывает следующий вопрос. При каждом вопросе пользователю предлагается целое число, соответствующее возможным опциям. Если пользователь не соответствует ни одному из параметров, запрос завершается.#
символ новой строки.Как бегать
.gmk
файлX
с содержимым, как указано вышеO
с помощью Create Event: execute code:X(1)
R
и поместитеO
в нее один экземплярИгра в гольф
YES
теперь всегда предшествуетNO
, и мы определяем строкуY="##YES (1), NO (2)"
для повторного использования."IS THERE A BIG LAKE IN THE MIDDLE OF "
и"HOW MANY "
достаточно длинные и встречаются достаточно много раз, чтобы аббревиатура окупилась. Они назначены наI
иH
.X
сам, а не отдельный скрипт, чтобы сокращатьget_integer
иshow_message
. Явное,X
вызывается с нулевым аргументомH
, возвращаетсяshow_message
первый аргумент.X
вызывается с нулевым аргументомI
, он возвращаетget_integer
первый аргумент, показывая ввод по умолчанию1
.Ungolfed , с вариантами в исходном порядке и без сокращений вообще:
Система нумерации
YES
,NO
варианты сохранения байтовисточник
YES
первым, чтобы избежать определенияN="##NO (1), YES (2)"
. Благодарю.