Создать волшебный шар 8

34

В детстве у моего друга был волшебный шар, к которому мы задавали вопросы и видели, какова была судьба этого вопроса.

Вызов

Ваша задача - написать программу (или функцию), которая при запуске (или вызове) выдает (или возвращает) случайный ответ из возможных ответов ниже. (Random быть: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Возможные ответы от Magic 8-ball (без учета регистра):

It is certain
It is decidedly so
Without a doubt
Yes definitely
You may rely on it
As I see it, yes
Most likely
Outlook good
Yep
Signs point to yes
Reply hazy try again
Ask again later
Better not tell you now
Cannot predict now
Concentrate and ask again
Don't count on it
My reply is no
My sources say no
Outlook not so good
Very doubtful

вход

Нет ввода.

Выход

Случайный выбор сверху. Дело не имеет значения.

правила

Стандартные лазейки не допускаются.

Это , поэтому выигрывает самый короткий код в байтах для каждого языка!

DevelopingDeveloper
источник
2
Я изменил «вход запрещен» на «вход не введен», некоторые языки требуют ввода пустых / нулевых аргументов.
Rɪᴋᴇʀ
12
Это я или кто-то отрицает каждый ответ ??????
Dat
1
@Dat Я разместил кое-что здесь в мета, чтобы обсудить это. Я проголосовал за каждый ответ, как всегда за ответы, отвечающие требованиям моих вопросов. Может быть, вмешается модератор ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 Мой любимый комментарий, который я видел на PPCG до сих пор!
DevelopingDeveloper

Ответы:

22

SOGL V0.12 , 166 байт

,▓a⁰²z○½℮ķčλ─fj[Ycψ-⁸jΔkÆΞu±⁄│(┼∞׀±q- υ~‼U/[DΓ▓νg⁸⅝╝┘¤δα~0-⁄⅝v⁄N⁷⁽╤oο[]āŗ=§№αU5$┌wΨgΘ°σΖ$d¦ƨ4Z∞▒²÷βΗ◄⁴Γ■!≤,A╬╤╬χpLΧ⁸⁽aIΘād⁵█↔‚\¶σΞlh³Ζ╤2rJ╚↓○sēχΘRψΙ±ιΗ@:┌Γ1⁷‘Ƨ! ΘlΨιw

Попробуй здесь!

\ o / каждое слово было в словаре SOGLs!

dzaima
источник
Это отличный ответ !!!
DevelopingDeveloper
Я хотел бы взглянуть на механизм сжатия SOGL, но, к сожалению, я не говорю на JavaScript :(
caird coinheringaahing
Подождите, SOGL - это язык на основе JavaScript?
Лохматый
@cairdcoinheringaahing SOGL написан на языке «Обработка», и соответствующие файлы сжатия находятся здесь и здесь . Хотя обработка - это язык на основе Java: p
dzaima,
18

> <> , 438 байт

x|o<"Yep"
x|^"Most likely"
x|^"Signs point to yes"
x|^"As I see it, yes"
x|^"Without a doubt"
x|^"Ask again later"
x|^"Don't count on it"
x|^"Cannot predict now"
x|^"Very doubtful"
x|^"My reply is no"
x|^"My sources say no"
x|^"Outlook not so good"
x|^"Reply hazy try again"
x|^"Better not tell you now"
x|^"Concentrate and ask again"
x|^"It's certain"
x|^"Outlook good"
x|^"Yes definitely"
x|^"You may rely on it"
x|^"It is decidedly so"

Попробуйте онлайн!

Не так интересно, но я думаю, что это первый ответ, где случайность не является равномерной. Я выкладываю все негативные сообщения как наименее вероятные :)

Некоторое объяснение:

Указатель начинает двигаться прямо с первой строки. xменяет указатель на случайное кардинальное направление. Если он идет вверх или вниз, он просто сталкивается с другим x. Если он идет правильно, он отскакивает |и ударяет то же самое x. Если он идет влево, он оборачивается и помещает текст этой строки в стек. Большинство линий затем попадают на ту же дорожку, направление ^которой меняется вверх. Это зацикливает oна первой строке, которая выводит стек, пока не будет пустым. Особый случай - это Yepлиния, которая имеет горизонтальный цикл |o<.

Джо Кинг
источник
7
Я буду использовать это. Это (почти) всегда дает положительный ответ. К сожалению, ответ также пахнет подозрительно ...
Suppen
15

Python 2, 369 368 байт

print"It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split('.')[id(0)/7%20]

Python 3, 371 байт

print("It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split('.')[hash(id)%20])

Ранее я использовал hashвстроенную hash(id)%20функцию index ( ), которая возвращает случайное значение для каждого запуска интерпретатора Python начиная с https://bugs.python.org/issue13703 . Это не случайно для пустой строки, хотя (всегда 0), поэтому нужно использовать что-то еще, idвстроенный!

При втором взгляде я мог бы использовать idнапрямую, но, кажется, всегда выдает четные числа. IIRC, id(object)в CPython просто возвращает расположение памяти object, так что это имеет смысл. Возможно, если бы я использовал Jython или IronPython, я мог бы пропустить деление на 7. В любом случае, hash(id)vs id(0)//7равен в Python 3, но может использовать /оператор для усечения целочисленного деления в Python 2, сохраняя байт.

Ник Т
источник
13

PowerShell , 354 байта

"It is certain0It is decidedly so0Without a doubt0Yes definitely0You may rely on it0As I see it, yes0Most likely0Outlook good0Yep0Signs point to yes0Reply hazy try again0Ask again later0Better not tell you now0Cannot predict now0Concentrate and ask again0Don't count on it0My reply is no0My sources say no0Outlook not so good0Very doubtful"-split0|Random

Попробуйте онлайн!

Ho-гул. Принимает все результаты, объединенные вместе с 0s, затем -splits 0для создания массива строк. Пропускает тот массив, в Get-Randomкоторый случайным образом выберет один из них. Это осталось на конвейере и вывод неявный.

AdmBorkBork
источник
11

Python 2 , 385 байт

-1 байт благодаря овс.

from random import*
print choice("It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split('.'))

Попробуйте онлайн!

totallyhuman
источник
22
@ Downvoter, могу я спросить, почему ты отказался от каждого ответа?
полностью человек
7
Это вызывает у меня подозрительное поведение при голосовании, я бы предложил пометить вопрос для внимания модов, чтобы они могли провести расследование.
Лохматый
9

Applescript, 391

Мне нравится, как в списках AppleScript есть some itemметод:

{"It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it,yes","Most likely","Outlook good","Yep","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful"}'s some item
Цифровая травма
источник
5
Подсказка подлого даунотера всех ответов в 3, 2, 1 ... Продолжайте - я осмелюсь вам раскрыть, кто вы есть, и объяснить свое обоснование понижения. Или вы продолжите анонимно скрываться в тени?
Цифровая травма
7

Утилиты Bash + GNU, 230

  • 15 байтов сохранено благодаря @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

Двоичный вывод zopfli не очень хорошо представлен здесь; вместо этого вы можете восстановить скрипт из данных, закодированных в base64:

base64 -d << EOF > 8ball.sh
c2VkIDFkICQwfHpjYXR8c2h1ZiAtbjEKH4sIAAAAAAACAz1QSZJCMQjd5xRv1fOlMEGlzIdfgbRF
n75NOayYeYMExFF5BImWe9W4SuPWE27lKnG2GSA0m4coyWvhKCrBPUvaxEaJcStgColCDoEzQ+IH
t/WymQe6XNa+zehmF5zMWknei8tJHbuJBsKw9gfvPXGmv0SMBJ0WNfLLPUOn4FEOHMEDaoHg3rGI
qF1LJV29fXCTGveWaWWNQcEgbXi9Ks30PVBtauBOfkvc4cWhtkq3OSo7nBJqLwELxO2u45dH3u05
zv4=
EOF

Обратите внимание, что, как разрешено в этом вопросе, сжатые данные распаковываются во все строчные буквы. Это делает сжатие zopfli немного более эффективным и экономит 16 байтов.

Цифровая травма
источник
tail +2не работает для меня, но sed 1d $0все равно сохраняет байт Кроме того, поскольку вывод в STDERR разрешен по умолчанию, я не думаю, что вам нужно exit. Также последние десять байт программы могут быть удалены.
Деннис
@ Денис спасибо! Дополнительный вывод в STDERR всегда заставляет меня чувствовать себя немного некомфортно, но я думаю, что я должен работать с ним.
Цифровая травма
6

R , 360 байт

sample(readLines(),1)
It is certain
It is decidedly so
Without a doubt
Yes definitely
You may rely on it
As I see it, yes
Most likely
Outlook good
Yep
Signs point to yes
Reply hazy try again
Ask again later
Better not tell you now
Cannot predict now
Concentrate and ask again
Don't count on it
My reply is no
My sources say no
Outlook not so good
Very doubtful

Попробуйте онлайн!

Не совсем самое элегантное решение. R имеет удобную функцию, stdinкоторая перенаправляет на исходный файл, так что вы можете помещать (небольшие) наборы данных в исходный код, сохраняя байты для разбиения строк или, что еще хуже, создавая сам вектор (все эти кавычки складываются в спешке). Наряду со встроенными для случайной выборки, это дает краткий ответ.

Giuseppe
источник
6

Древесный уголь , 203 184 байта

‽⪪”}∨74Dυ3↖u➙H�↖vI⁻VR‹ψ#�Ii»ψPNξ⮌≔;≡8ν}¬H⁺ºº↖H⁴K⌕êτ|⁼➙⟲W»″φ◨⟦(τ(jK“N\⍘“↷⊙ⅉvT>➙§⌊Fζ³⁻↔;TaÀ✳⁴≔67⍘i4¬⸿-A8⁻f7¡<⁰Zχ}ζ'¡¹→Oaε!OυP₂ïμ´MuP⁺M⮌1№-k¹№FvξDü⊟ζⅉ⁰xW:Dε7TvM₂⊞θC⪪Rε⁰“D¡⸿⁰″A⊕λξ↥~O·PE&”¶

Попробуйте онлайн! Ссылка на подробную версию кода. Изменить: 19 байтов, сохранив все в нижнем регистре. Объяснение:

  ”...”     Compressed string of newline-delimited responses
 ⪪     ¶    Split on newlines
‽           Random element
            Implicitly print
Нил
источник
5

Сетчатка , 333 331 321 байт


0cert10decided2so¶with34a d3bt¶yes definitely¶y3 ma5re26as i see it, yes¶mos4likely7good¶yep¶signs poin4to yes¶rep2haz5tr5ag18ain later¶better 94tell y3 9w¶can94predic49w¶concentrate and 81don'4c3n46m5rep2is 9¶m5s3rces sa59794so good¶ver5d3btful
9
no
8
ask ag
7
¶3tlook 
6
on it¶
5
y 
4
t 
3
ou
2
ly 
1
ain¶
0
it is 
G?`

Попробуйте онлайн! Редактировать: 1 байт сохранен путем сжатияdoubt и 1 байт, уменьшая все, чтобы я мог сжимать reply. Затем сохранил 10 байтов, используя @ Leo's Retina Kolmogorov golfer для текста в нижнем регистре (что совпадает с количеством байтов, которые он сохранил в моем 333-байтовом ответе).

Нил
источник
323 байта с помощью моего Retina 0.8 Colmogorov golfer
Leo
@Leo Обратите внимание, что Retina 0.8.2 - это другой язык
mbomb007
@ mbomb007 Я знаю, но для простых замен, подобных этим, он имеет тот же синтаксис, что и Retina 1.0. Я только указывал, что гольфист Колмогорова был написан для более старой версии Retina, но в этом случае он все еще пригоден для использования.
Лев
4

Кокос , 380 байт

Кокосовый орех Порт totallyhuman «сек ответ

from random import*
choice$("It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split('.'))

Попробуйте онлайн!

овс
источник
4

T-SQL, 393 байта

SELECT TOP 1*FROM STRING_SPLIT('It is certain-It is decidedly so-Without a doubt-Yes definitely-You may rely on it-As I see it, yes-Most likely-Outlook good-Yep-Signs point to yes-Reply hazy try again-Ask again later-Better not tell you now-Cannot predict now-Concentrate and ask again-Don''t count on it-My reply is no-My sources say no-Outlook not so good-Very doubtful','-')ORDER BY NEWID()

Функция STRING_SPLIT доступна только в SQL 2016 и более поздних версиях.

Лучшее, что я мог получить для предыдущих версий, используя VALUES('It is certain'),('It is decidedly so'),... было 464 символа.

Отформатирован, чтобы вы могли видеть рабочую часть:

SELECT TOP 1 *
FROM STRING_SPLIT('It is certain-It is decidedly so-...', '-')
ORDER BY NEWID()

NEWID() генерирует новый псевдослучайный идентификатор GUID, так что это способ сделать псевдослучайную сортировку.

BradC
источник
4

Желе , 201 байт

-2 байта благодаря мистеру Xcoder. -1 байт благодаря пользователю 202729.

“æ⁽IẊ?⁽ʋṠ¶ÐƝKW¬ḃỴɓ⁾:Eṇ⁵ṾɱD×⁴2ṇỤðċỊ¥ḷƬị÷ṣÐṆⱮ$u²OŀṚƁȮ1⁼ṁ$bp⁾v]Ɠ-/NẓḲnỵdḳḋ½ȥṿ=kv¥ɓl[kR AḞ¶gḣḞiẊŒẊḳçȤ⁻Ɱʋx:ØṖ|zY=ṾḌẓY1Ḃ$50d⁹⁸ŀhʂƤṢM;ḢoƁṾ⁷-uṙu¡Ọ3ṣȮ@⁹ðẹȥXƭ⁸|ƬẋẆḢɠœxḳsĿƘ(0çỌ~A½YIEFU3Ọ=⁷ɗḷBḷİṄhṗgṡƊẏẏḄ#Ṙʋ$ʂȷĠ»ỴX

Попробуйте онлайн!

Блин , компрессия SOGL хороша.

totallyhuman
источник
202 байта
г-н Xcoder
201 байт . Просто добавьте 2 последних символа.
user202729
(Я имею в виду, добавить ỴXв конец кода, чтобы он случайно
выбирал
4

05AB1E , 171 байт

“€•€ˆ‹ì€•€ˆŸíly€Ê„›€…¬³…ܴ΀˜€‰€•€œ I€È€•,…Ü‚¢îÙ®½‚¿ yepŸé…®€„…Ü…ƒ hazy‡Ü†îˆ¹†îŠ´…瀖ˆœ€î€Ó€©notßä€Óä考ˆ¹†î€·n'tš‹€‰€•€¯…ƒ€ˆ€¸€¯Žç…耸®½€–€Ê‚¿‚Ò¬³ful“#•8∞f{ʒβ®•6в£ðýΩ

Попробуйте онлайн!

объяснение

“ ... “выдвигает строку всех необходимых слов.
Некоторые слова взяты прямо из словаря 05ab1e.
Некоторые из них написаны в простой ascii (как haze).
Некоторые из них объединены словарь и ASCII (как do+n't ).

Тогда код обработки:

#                 # split string on spaces to a list of words
 •8∞f{ʒβ®•        # push the number 2293515117138698
          6в      # convert to a list of base-6 numbers 
                  # ([3,4,3,2,5,5,2,2,1,4,4,3,5,3,4,4,4,4,4,2])
            £     # group the list into sublists of these sizes
             ðý   # join on spaces
               Ω  # pick one at random
Emigna
источник
Попробуйте онлайн! - 176 с перебором грубой силы.
Волшебная Осьминог Урна
1
@MagicOctopusUrn: Я думаю, что это 182 с ,и 'добавил.
Эминья
D'о! Ах, я вижу это, да. Кстати, удалите вход из вашего TIO, это немного сбивает с толку.
Волшебный осьминог Урна
@MagicOctopusUrn: Дох! Спасибо. Я не знал, что я оставил это там: P
Emigna
166: TIO . Трижды -1 с использованием новых слов из словаря ( ye, donи ha), и -2 при сортировке списка по количеству слов и с помощью дельта сжатия.
Grimmy
4

Рубин, 362 361 байт

puts"It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split(?.).sample

Попробуйте онлайн!

  • 1 байт благодаря @ benj2240
BigRon
источник
Вы можете сбрить байт с помощью ?.вместо '.'.
benj2240
@ benj2240 вау, раньше такого не видел. Очень круто.
BigRon
1
Мне пришлось копаться в документации по этому ?строковому
литералу
3

Python 3, 386 байт

from random import*
lambda:choice("It is certain;It is decidedly so;Without a doubt;Yes definitely;You may rely on it;As I see it, yes;Most likely;Outlook good;Yep;Signs point to yes;Reply hazy try again;Ask again later;Better not tell you now;Cannot predict now;Concentrate and ask again;Don't count on it;My reply is no;My sources say no;Outlook not so good;Very doubtful".split(';'))
Dat
источник
3

Perl, 366

print((split",","It is certain,It is decidedly so,Without a doubt,Yes definitely,You may rely on it,As I see it,yes,Most likely,Outlook good,Yep,Signs point to yes,Reply hazy try again,Ask again later,Better not tell you now,Cannot predict now,Concentrate and ask again,Don't count on it,My reply is no,My sources say no,Outlook not so good,Very doubtful")[rand 19])
Flying_whale
источник
2
Я нашел ошибку. Вы не можете использовать запятую в качестве разделителя , потому что один из возможных ответов от Magic 8-шар содержит запятую: As I see it, yes.
g4v3
1
Я бы предложил использовать одну цифру в качестве разделителя. Это позволит сэкономить 1 байт, поскольку кавычки больше не нужны, но все еще необходимо добавить пробел для разделения цифры и split.
g4v3
1
Также вы можете опустить круглые скобки printи сохранить еще 1 байт. Просто поставьте одинарный знак плюс перед списком: print((0..9)[5])станет print+(0..9)[5].
g4v3
3

05AB1E , 208 217 байт

"don'".•W˜FζÃT¥„ò.1₁∍Y<`Ì°5jýúž+ìmHSéÁ¬–xȃø‚ž}_Øviòª§l["]0â^)„2æδ∍G1∊EÌLÝ'îôΛβ;ƒĀαÏw L°gðÈγ³€wE‘f饤šαrˆQŠë¢-º8Æ~ÁŠ∍δBx®(β™Žü6»ƶÙÐ~†«\%ÍŒΘ-´sÈƵJŸ₃H7Ó˜:Å∍₂èÑï∞—Râú'óвb…ÓUXʒǝ₄ÝrÒ₄¨÷ä褓oθWÎλî~bj(Ri
Þиe‘ãj]•", yes"J'x¡Ω

Попробуйте онлайн!

Довольно базовое решение. Возможные ответы объединяются с символом x (так как его нет в ответах), а затем сжимаются (внутри ), 'x¡Ω раскол на х и поп случайного выбора.

Спасибо @Emigna за указание на то, что сжатие алфавита не нравится 'или, очень. Исправлено с помощью сжатия сжатой строки с помощью don ' и , да .

Kaldo
источник
Хорошая идея разделить на персонажа нет. К сожалению, сжатие алфавита заменяет ,и 'пробелами, поэтому вывод для этих двух строк неверен.
Эминья
@ Emigna Большое спасибо за указание на это! Мне интересно, если бы не было лучшего решения для этой проблемы ... Я мог бы использовать другие неиспользуемые символы в ответах, но есть только два: q и x :-(
Kaldo
3

PHP , 412 385 337 384 байта

<?php $a=explode(1,"It is certain1It is decidedly so1Without a doubt1Yes definitely1You may rely on it1As I see it, yes1Most likely1Outlook good1Yep1Signs point to yes1Reply hazy try again1Ask again later1Better not tell you now1Cannot predict now1Concentrate and ask again1Don't count on it1My reply is no1My sources say no1Outlook not so good1Very doubtful");echo$a[array_rand($a)];

Попробуйте онлайн!

Довольно прямолинейное решение. Разделите строку разделителем (в данном случае 1) и выберите случайный элемент из массива.

Эндрю
источник
Добро пожаловать в PPCG! Я внес небольшие изменения в форматирование вашего поста, и у меня есть пара небольших предложений - 1, вам нужно добавить пробел после, phpчтобы ваш код компилировался; 2, вы можете заменить '|'с 1и все |с 1для -2 байт; 3 следует рассмотреть возможность изменения ссылки на Trying it Online на TIO.run в соответствии с предпочтениями сообщества.
Тейлор Скотт
И вот рабочая версия, основанная на моих отзывах. Попробуйте онлайн!
Тейлор Скотт
@TaylorScott Кажется, что он отлично работает на моем окружении без пробела после тега <? Php. Я бегу PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Не уверен, что в предыдущих версиях это имеет значение или нет. В любом случае, я редактировал вопрос.
Андрей
Ааа, это может быть просто версия - предоставленная вами ссылка использует версию PHP 7.0.3, и она не запускается на TIO.run без пробела
Тейлор Скотт
2
Вы можете использовать <?=и отображать разнесение напрямую, [rand(0, 19)]вместо того, чтобы сначала добавить к переменной<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen
3

Javascript, 372 байта

-10 байт благодаря Shaggy

_=>"It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful".split`.`[Math.random()*20|0]

Попробуйте онлайн!

SuperStormer
источник
1
Использование побитового ORвместо , Math.floor()чтобы сохранить 7 байт: Math.random()*20|0.
Мохнатый
3

Befunge

1221 870 байт (периметр всего поля - 33x36 30 * 29 символов). Спасибо Джо Кингу за то, что он помог мне удалить завершающие нули и убедил меня изменить рандомизатор.

"<"99+9+1+v
v         <
 >>>>>>>>>>55++v
 0123456789
>??????????<
 0123456789
 >>>>>>>>>>    v
               >88++p       v
v"It is certain"           
v"It is decidedly so"
v"Without a doubt"
v"Yes definitely"
v"You may rely on it"
v"As I see it, yes"
v"Most likely"
v"Outlook good"
v"Yep"
v"Signs point to yes"
v"Reply hazy try again"
v"Ask again later"
v"Better not tell you now"
v"Cannot predict now"
v"Concentrate and ask again"
v"Don't count on it"
v"My reply is no"
v"My sources say no"
v"Outlook not so good"
v"Very doubtful"
>:#,_@

В верхней строке помещается символ «<» и позиция x (28), куда он должен идти в стеке. Затем мы вводим своего рода генератор случайных чисел. Это может быть улучшено, но это то, что я мог бы доставить в кратчайшие сроки ... «Случайное» число смещается, чтобы получить фактическую «случайную» строку для чтения.

После того, как случайное число сгенерировано, мы помещаем символ «<» в эту строку и помещаем буквы в стек, а в нижней строке выводим их снова.

Заметка; Если вы используете интерпретатор, на который я ссылался в заголовке этого поста, вы должны нажимать «Показать» после каждого запуска, потому что добавление символа «<» остается после выполнения.

rael_kid
источник
1
Вам гораздо лучше использовать тот же формат, что и в моем ответе> <>. Попробуйте онлайн! , Как и сейчас, он также печатает несколько нулевых байтов в конце
Джо Кинг,
Да, я знаю, я хотел, чтобы случайные числа не были слишком предвзятыми, но я мог бы просто использовать одну строку вопросительных знаков.
rael_kid
Вы можете удалить хотя бы пару сотен байтов свободного пространства и изменить последнюю строку, >:#,_@чтобы избежать печати нулевых байтов. Да, и добавьте ссылку TIO.
Джо Кинг
Это правда, я выложу обновление позже сегодня.
rael_kid
3

Java 8 , 433 , 392 , 380 , 379 байт

 a->"It is certain~It is decidedly so~Without a doubt~Yes definitely~You may rely on it~As I see it, yes~Most likely~Outlook good~Yep~Signs point to yes~Reply hazy try again~Ask again later~Better not tell you now~Cannot predict now~Concentrate and ask again~Don't count on it~My reply is no~My sources say no~Outlook not so good~Very doubtful".split("~")[(int)(Math.random()*20)]

Попробуйте онлайн!

  • 41 байт благодаря AdmBorkBork!
  • 10 байтов благодаря Кевину!
  • 1 байт благодаря Оливеру!
DevelopingDeveloper
источник
2
Конечно, вы можете использовать String.split () для сохранения нескольких байтов - docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork,
2
Как сказано в @AdmBorkBork , вы можете сохранить 41 байт, используя String#split. Кроме того, вы можете сохранить дополнительные 11 байтов, используя (int)(Math.random()*20)вместо new java.util.Random().nextInt(20). И точка с запятой не учитывается при подсчете байтов лямбд. Итак, всего: 380 байт .
Кевин Круйссен
2
В вашем ответе и в гольфе @ KevinCruijssen есть дополнительное место: используйте Don'tвместо Don' t.
Оливье Грегуар,
2

Красный , 367 байт

prin pick split{It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful}"."random 20

Попробуйте онлайн!

Это не кажется действительно случайным в TIO (хотя он прекрасно работает в Red Console), поэтому я добавил в заголовок random / seed.

Гален Иванов
источник
2

Excel, 399 байт

=CHOOSE(1+20*RAND(),"It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it, yes","Most likely","Outlook good","Yep","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful")

Так CHOOSE(X.Y,<>)же, как CHOOSE(X,<>), нет необходимости вINT

Не много игры в гольф вы можете сделать здесь, хотя ...

Chronocidal
источник
2

Ацето , 345 + 1 = 346 байт (+1 для -lфлага)

"It is certain.It is decidedly so.Without a doubt.Yes definitely.You may rely on it.As I see it, yes.Most likely.Outlook good.Yep.Signs point to yes.Reply hazy try again.Ask again later.Better not tell you now.Cannot predict now.Concentrate and ask again.Don't count on it.My reply is no.My sources say no.Outlook not so good.Very doubtful"'.:Yp

Попробуйте онлайн!

Не слишком интересно, но я не могу придумать ничего более короткого в этом языке, ни сжатых строк, ни чего-либо еще.

«....» толчок строк, разделенных точками
      ». буквальный период
        : разделить на период
         Y перемешать стек
          р печать сверху

drham
источник
без флага -l может выглядеть интереснее.
Лаура Бостан,
@LauraBostan Но я не знаю кривых Гильберта мимо типа 3
drham
и это больше байтов для всех \ n
drham
1
Но да, это выглядело бы более «интересным» per se
drham
iup ... флаг -l был добавлен для игры в гольф. Впрочем, мне это не очень нравится, дешево крадет весь смысл языка. Возможно, следующая версия Aceto откажется от этого флага.
Лаура Бостан,
1

C - 426 байт

char a[][99]={"It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it, yes","Most likely","Outlook good","Yep","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful"};int main(){int n;puts(a[n%20]);}

Использует неинициализированную переменную mod 20 для индексации в массив строк, содержащих все возможные выходные данные. Компиляторы жалуются, что stdio.h не включен, но работает нормально. Вероятно, потому, что так или иначе стандартная библиотека связана в любом случае. Повезло мне

Орион
источник
Стоит отметить, что в некоторых реализациях неинициализированная переменная имеет значение 0, поскольку поведение, в общем, не определено. Спросите своего волшебного 8-балла, правда ли это на вашей машине.
Орион
1

Go, 530 байт

package main;import"fmt";func main(){for k:=range map[string]struct{}{"It is certain":{},"It is decidedly so":{},"Without a doubt":{},"Yes definitely":{},"You may rely on it":{},"As I see it, yes":{},"Most likely":{},"Outlook good":{},"Yep":{},"Signs point to yes":{},"Reply hazy try again":{},"Ask again later":{},"Better not tell you now":{},"Cannot predict now":{},"Concentrate and ask again":{},"Don't count on it":{},"My reply is no":{},"My sources say no":{},"Outlook not so good":{},"Very doubtful":{}}{fmt.Print(k);break}}

Обратите внимание, что на игровой площадке Go из-за того, как работает посев, он всегда дает один и тот же результат. При работе на обычном компьютере все работает как надо.
Я думаю, что можно сэкономить немного больше, но мои знания в Go на этом заканчиваются :)

Отформатированная и тестируемая версия

Натанаэль С.
источник
Добро пожаловать в PPCG! Переводчик Перейти на попробовать Интернет , кажется, использует случайное семя.
Деннис
Должно быть, мне ужасно не повезло. D:
Натанаэль С.
Вы обновляете страницу? Это будет извлекать результат из кэша каждый раз, поэтому он не изменится. Нажатие кнопки «Выполнить» снова запустит код.
Деннис
Я продолжаю получать «Это точно» даже после CTRL + R для жесткого обновления ... Я не понимаю: x
Натанаэль С.
Обновление не изменит результат; они кэшируются на стороне сервера. Нажмите кнопку запуска (значок воспроизведения по кругу) или нажмите Ctrl-Enter.
Денис
1

Excel-VBA, 362 341 339 байт

v=[1:1]:?v(1,Rnd*19)

Где A1:T1содержат разные варианты. Читает весь первый ряд листа в массивv и индексирует случайную точку вдоль первых 19 значений.

Удивлен, обнаружив, что индексация массива не требует целочисленных значений

Greedo
источник
Мое беспокойство по поводу вашего ответа для Excel еще больше здесь, так как рабочий лист считается STDIN для Excel VBA, так что это ближе к предопределенному вводу
Тейлор Скотт
0

VBA, 358 байт

Функция анонимного непосредственного окна VBE, которая не принимает входные данные и не выводит их в STDOUT.

?Split("It is certain1It is decidedly so1Without a doubt1Yes definitely1You may rely on it1As I see it, yes1Most likely1Outlook good1Yep1Signs point to yes1Reply hazy try again1Ask again later1Better not tell you now1Cannot predict now1Concentrate and ask again1Don't count on it1My reply is no1My sources say no1Outlook not so good1Very doubtful",1)(19*Rnd)
Тейлор Скотт
источник
-1

Java 8, 379 байт

b->"It is certain-It is decidedly so-Without a doubt-Yes definitely-You may rely on it-As I see it, yes-Most likely-Outlook good-Yep-Signs point to yes-Reply hazy try again-Ask again later-Better not tell you now-Cannot predict now-Concentrate and ask again-Don't count on it-My reply is no-My sources say no-Outlook not so good-Very doubtful".split("-")[(int)(Math.random()*20)]

Попробуйте онлайн

Twometer
источник