Вдохновение . Опубликовано с разрешения .
Распечатайте один из возможных «фактов» календаря XKCD:
Вы можете получить необработанный текст и структуру из моей справочной реализации APL или из расшифровки стенограммы Explain XKCD (включая текст заголовка под иллюстрацией).
правила
В каждом узле принятия решения должен быть равный (псевдо) случайный шанс для каждого выбора.
Вы можете использовать все заглавные буквы.
Вы должны сгенерировать три предложения; вопрос, причина и текст заголовка.
Эти три предложения должны быть закончена ?
, .
и , .
соответственно, и отделены друг от друга одним пробелом.
Единственный дополнительный пробел, который вы можете включить, это один пробел и / или разрыв строки.
Примеры
Did you know that the Latest Sunset drifts out of sync with the Zodiac because of time zone legislation in Indiana? Apparently it's getting worse and no one knows why. While it may seem like trivia, it has to be corrected for by GPS satellites.
Did you know that Leap Year happens later every year because of precession of the equator? Apparently scientists are really worried. While it may seem like trivia, it is taken advantage of by high-speed traders.
Did you know that Easter drifts out of sync with the atomic clock in Colorado because of a decree by the pope in the 1500s? Apparently scientists are really worried. While it may seem like trivia, it causes huge headaches for software developers.
Did you know that shark week happens at the wrong time every year because of an arbitrary decision by Benjamin Franklin? Apparently it causes a predictable increase in car accidents.
Я ... я имею в виду ... я ... Хорошо.Ответы:
Befunge-93,
1959 г.1930 байтПопробуйте онлайн!
объяснение
В первых трех строках мы начинаем с создания своего рода таблицы состояний в стеке, представляющей график всех возможных предложений. Эти записи в стеке сгруппированы в пары, поэтому сначала идет строковый элемент, а затем переход или переход. При необходимости график дополняется пустыми строками и переходами нулевой длины, чтобы удовлетворить это требование.
Наш основной цикл начинается с выталкивания числа, представляющего строковый элемент, из стека. Это число интерпретируется как смещение в таблице строк в нижней части источника. Строковая таблица по сути является своего рода связанным списком, заключенным в несколько строк, чтобы поместиться в ограниченное пространство памяти Befunge.
После вывода строки следующим элементом в стеке является либо переход, либо переход. Если число меньше 32, это скачок, который мы интерпретируем, отбрасывая столько пар предметов из стека. Если число 32 или больше, это ветвь, и мы используем значение (минус 32) для поиска деталей ветвления из таблицы в последней строке источника.
Каждая запись в таблице ветвей состоит из счетчика, за которым следует список смещений. Как только мы узнаем, какую ветвь использовать, мы просто генерируем случайное число по модулю числа ветвей, чтобы найти соответствующее смещение. Это смещение затем интерпретируется как скачок, отбрасывая необходимое количество элементов из стека.
Мы повторяем этот процесс, выводя строку, затем выполняя переход или переход, пока у нас не закончатся записи в стеке. В этот момент мы просто выводим «.» чтобы отметить конец последнего предложения, а затем выйти.
источник
Javascript (ES6),
1698151015061501 байтСпасибо 12Me21 за исправление ошибки в коде, который добавил 2 байта
f=
иdocument.write(f())
не являются частью подсчета байтовисточник
Python 2 , 1297 байт
-419 байт благодаря овс.
Попробуйте онлайн!
Фактический код:
Это было утомительно. Я даже не занимался базовым гольфом. Кто-нибудь, пожалуйста, напишите сценарий для игры в гольф.
источник
Древесный уголь , 806 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
R ,
190317511743 байтаПростое решение для перебора. Может быть, это еще один способ сыграть в гольф.
Попробуйте онлайн!
источник
JavaScript (ES6), 1275 байт
где
...
представляет результат выполненияatob()
этой строки и замены\
на\\
,`
с\`
, 0x00 с\0
, и 0x0D с\r
:Попробуйте здесь, минус
btoa
:источник
APL (Dyalog) , 1302 байта
Попробуйте онлайн!
Адам помог с этим ... затем попросил меня закончить это. :П
-11 благодаря Адаму (используя его новый инструмент SBCS, я могу злоупотреблять кодировкой без дополнительных затрат).
источник
Haskell ,
19491938 bytesПопробуйте онлайн! (Имеет дополнительные 2 байта для
f=
)В основном написал это только для того, чтобы я мог создать структуру данных. Это, безусловно, может быть улучшено, но я устал, и я все равно должен скоро уйти. Я думаю, что заглавные буквы в основном правильные, но я преобразую их в заглавные, если они неправильные Это не изменит количество байтов или что-либо еще, поскольку я не сделал ничего странного со строковыми данными.
Основная идея - это связанный список деревьев, где каждый узел является пустым (
E
), знаком пунктуации (P
) или строковой меткой с дочерними элементами . Все узлы, кромеE
узлов, имеют «следящий» узел, который идет после них.РЕДАКТИРОВАТЬ: только что заметил орфографическую ошибку (я написал «никто не знает почему» вместо «никто не знает почему»), поэтому мне пришлось добавить байт, чтобы исправить это, но я также нашел некоторый код, который может быть вырезан
источник
APL (Dyalog Unicode) , 1593 байта
C←?∘≢⊃⊢
S←C'|'∘≠⊆⊢
∊'Did you know that '(C('the '(S'Fall|Spring')' Equinox ')('the '(S'Winter |Summer ')(S'Solstice |Olympics '))('the '(S'Earliest |Latest ')(S'Sunrise |Sunset '))('Leap ',S'Day |Year ')'Easter '('the '(S'Harvest|Super|Blood')' Moon ')'Toyota Truck Month '('Daylight Savings Time '~C's∘')'Shark Week ')(C('happens '(S'earlier|later|at the wrong time')' every year ')('drifts out of sync with the '(S'Sun |Moon |Zodiac |atomic clock in Colorado|',' Calendar ',⍨S'Gregorian|Mayan|Lunar|iPhone'))('might '(S'not happen|happen twice')' this year '))'because of '(C('time zone legislation in ',S'Indiana|Arizona|Russia')'a decree by the pope in the 1500s'((S'precession|libration|nutation|libation|eccentricity|obliquity')' of the '(S'Moon|Sun|Earth''s axis|equator|prime meridian|',' line',⍨S'international date|mason-dixon'))'magnetic field reversal'('an arbitrary decision by ',S'Benjamin Franklin|Isaac Newton|FDR'))'? Apparently '(C'it causes a predictable increase in car accidents'('it was even more extreme during the ',S'Bronze Age|Ice Age|Cretaceous|1990s')'that''s why we have leap seconds'('there''s a proposal to fix it, but it ',S'will never happen|actually makes things worse|is stalled in congress|might be unconstitutional')'scientists are really worried' 'it''s getting worse and no one knows why')'. While it may seem like trivia, it '(S'causes huge headaches for software developers|is taken advantage of by high-speed traders|triggered the 2003 Northeast Blackout|has to be corrected for by GPS satellites|is now recognized as a major cause of World War I')'.'
Попробуйте онлайн!
Определяет две вспомогательные функции и затем использует их в одном гигантском выражении:
C←
C (для C hoose) -?∘≢
это случайное число до числа элементов в аргументе,⊃
выбираемом⊢
из аргументовS←
S (для S PLIT и S избранных) являетсяC
выбор из'|'∘≠
которых-не-трубы в⊆
распределяли⊢
аргумента∊
& epsi NLIST (Flatten)C
выбирает из списка строк иS
выбирает из подстрок в|
строке с разделителями, и они используются только в комбинации построить «факт».источник