Utwórz Magic 8 Ball

34

Jako dziecko mój przyjaciel miał magiczną kulkę , na którą zadawaliśmy pytania i sprawdzaliśmy, jaki był los tego pytania.

Wyzwanie

Twoim wyzwaniem jest napisanie programu (lub funkcji), który po uruchomieniu (lub wywołaniu) generuje (lub zwraca) losową odpowiedź z możliwych odpowiedzi poniżej. (Random bycia: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Możliwe odpowiedzi z Magic 8-ball to (bez uwzględniania wielkości liter):

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

Wkład

Brak wejścia.

Wydajność

Losowy wybór z góry. Sprawa nie ma znaczenia.

Zasady

Standardowe luki są niedozwolone.

To jest , więc wygrywa najkrótszy kod w bajtach dla każdego języka!

DevelopingDeveloper
źródło
2
Zmieniłem opcję „brak danych wejściowych” na „brak danych wejściowych”, niektóre języki wymagają argumentów pustych / zerowych jako danych wejściowych.
Rɪᴋᴇʀ
12
Czy to ja czy ktoś odrzuca każdą odpowiedź ??????
Dat
1
@Dat Umieściłem tu coś w meta, aby to omówić. Poparłem każdą odpowiedź, jak zawsze w przypadku odpowiedzi, które spełniają wymagania dotyczące moich pytań. Może zainterweniuje moderator ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 Mój ulubiony komentarz, jaki do tej pory widziałem na PPCG!
DevelopingDeveloper

Odpowiedzi:

22

SOGL V0.12 , 166 bajtów

,▓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

Wypróbuj tutaj!

\ o / każde słowo było w słowniku SOGL!

dzaima
źródło
To niesamowita odpowiedź !!!
DevelopingDeveloper,
Chciałbym rzucić okiem na silnik kompresji SOGL, ale niestety nie mówię w JavaScript :(
caird coinheringaahing
Zaraz, SOGL jest językiem JavaScript?
Shaggy
@cairdcoinheringaahing SOGL jest napisany w Przetwarzaniu, a odpowiednie pliki kompresji są tu i tutaj . Chociaż przetwarzanie jest językiem opartym na Javie: p
dzaima
18

> <> , 438 bajtów

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"

Wypróbuj online!

Nie jest to interesujące, ale myślę, że to pierwsza odpowiedź, w której losowość nie jest jednolita. Wszystkie negatywne wiadomości umieszczam jako najmniej prawdopodobne :)

Niektóre wyjaśnienia:

Wskaźnik zacznie iść w prawo od pierwszej linii. xzmienia wskaźnik na losowy kierunek główny. Jeśli idzie w górę lub w dół, po prostu napotyka inną x. Jeśli pójdzie dobrze, odbija się |i uderza w to samo x. Jeśli idzie w lewo, zawija się i wypycha tekst tej linii na stos. Większość linii następnie uderza w tę samą ścieżkę, ^której kierunek zmienia się w górę. Powoduje to zapętlenie opierwszego wiersza, który wysyła stos aż do opróżnienia. Szczególnym przypadkiem jest Yeplinia, która |o<zamiast tego ma poziomą pętlę .

Jo King
źródło
7
Użyję tego. To (prawie) zawsze daje pozytywną odpowiedź. Niestety odpowiedź również pachnie podejrzanie ...
Suppen,
15

Python 2, 369 368 bajtów

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 bajtów

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])

Wcześniej hashużywałem wbudowanej funkcji index ( hash(id)%20), która zwraca losową wartość na początek interpretera Pythona od czasu https://bugs.python.org/issue13703 . To nie jest losowe dla pustego ciągu (zawsze 0), więc musisz użyć czegoś innego,id wbudowanego!

Przy drugim spojrzeniu mogę użyć idbezpośrednio, ale wydaje się, że zawsze produkuje parzyste liczby. IIRC id(object)w CPython po prostu zwraca lokalizację pamięci object, więc ma to sens. Może gdybym użył Jython lub IronPython, mógłbym pominąć podział przez 7. W każdym razie hash(id)vs id(0)//7jest w Pythonie 3 równe, ale może używać /operatora do obcinania dzielenia liczb całkowitych w Pythonie 2, oszczędzając bajt.

Nick T.
źródło
13

PowerShell , 354 bajty

"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

Wypróbuj online!

Ho-hum. Pobiera wszystkie wyniki, łączone razem z 0s, a następnie -splits, 0aby utworzyć tablicę ciągów. Przechodzi do tej tablicy, do Get-Randomktórej losowo wybierze jedną z nich. Pozostaje to w potoku, a dane wyjściowe są niejawne.

AdmBorkBork
źródło
11

Python 2 , 385 bajtów

-1 bajt dzięki ovs.

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('.'))

Wypróbuj online!

całkowicie ludzki
źródło
22
@Downvoter, czy mogę zapytać, dlaczego zanegowałeś każdą odpowiedź?
całkowicie ludzki,
7
To uderza mnie jako podejrzane zachowanie podczas głosowania. Sugerowałbym, aby oznaczyć pytanie modą, aby mogli zbadać sprawę.
Shaggy
9

Jabłkowy, 391

Uwielbiam sposób, w jaki listy AppleScript mają some itemmetodę:

{"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
Cyfrowa trauma
źródło
5
Wskaż złego ducha zwycięzcy wszystkich odpowiedzi w 3, 2, 1 ... Kontynuuj - odważę się ujawnić, kim jesteś i wyjaśnić swoje uzasadnienie głosowania. A może nadal będziesz anonimowo czaić się w cieniu?
Digital Trauma
7

Narzędzia Bash + GNU, 230

  • 15 bajtów zapisanych dzięki @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

Binarne wyjście zopfli nie jest tutaj dobrze reprezentowane; zamiast tego możesz zrekonstruować skrypt z danych zakodowanych w base64:

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

Uwaga: zgodnie z pytaniem skompresowane dane są dekompresowane na wszystkie małe litery. To sprawia, że ​​kompresja zopfli jest nieco bardziej wydajna i oszczędza 16 bajtów.

Cyfrowa trauma
źródło
tail +2nie działa dla mnie, ale sed 1d $0i tak oszczędza bajt. Ponadto, ponieważ wyjście do STDERR jest domyślnie dozwolone, nie sądzę, że potrzebujesz exit. Ponadto można usunąć ostatnie dziesięć bajtów programu.
Dennis
@Dennis dzięki! Dodatkowe wyjście do STDERR zawsze sprawia, że ​​czuję się trochę nieswojo, ale myślę, że powinienem z tym biegać.
Cyfrowa trauma
6

R , 360 bajtów

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

Wypróbuj online!

Niezupełnie najbardziej eleganckie rozwiązanie. R ma ciekawą funkcję, w której stdinprzekierowuje do pliku źródłowego, dzięki czemu można wstawiać (małe) zestawy danych do kodu źródłowego, oszczędzając bajty na dzielenie łańcuchów lub gorzej, konstruując sam wektor (wszystkie te cudzysłowy sumują się w pośpiechu). Wraz z wbudowanymi funkcjami losowego próbkowania jest to krótka odpowiedź.

Giuseppe
źródło
6

Węgiel drzewny , 203 184 bajtów

‽⪪”}∨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&”¶

Wypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 19 bajtów, zmniejszając wszystko. Wyjaśnienie:

  ”...”     Compressed string of newline-delimited responses
 ⪪     ¶    Split on newlines
‽           Random element
            Implicitly print
Neil
źródło
5

Retina , 333 331 321 bajtów


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?`

Wypróbuj online! Edycja: Zapisano 1 bajt przez kompresję doubti 1 bajt przez obniżenie wszystkiego, abym mógł kompresować reply. Następnie zapisałem 10 bajtów, używając golfisty Retina Kołmogorowa @ Leo na tekście pisanym małymi literami (który przypadkowo jest liczbą bajtów zapisanych na mojej odpowiedzi 333 bajtów).

Neil
źródło
@Leo Pamiętaj, że Retina 0.8.2 to inny język
mbomb007
@ mbomb007 Wiem, ale dla takich prostych podstawień ma taką samą składnię jak Retina 1.0. Właśnie wskazałem, że golfista Kołmogorowa został napisany dla starszej wersji Retiny, ale w tym przypadku nadal można go używać.
Leo
4

Kokos , 380 bajtów

Coconut portowym totallyhuman „s odpowiedź

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('.'))

Wypróbuj online!

ovs
źródło
4

T-SQL, 393 bajty

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()

Funkcja STRING_SPLIT jest dostępna tylko w SQL 2016 i nowszych wersjach.

Najlepsze, co mogłem uzyskać za wcześniejsze wersje za pomocą VALUES('It is certain'),('It is decidedly so'),... to 464 znaków.

Sformatowany, abyś mógł zobaczyć część roboczą:

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

NEWID() generuje nowy, pseudolosowy identyfikator GUID, więc jest to sposób na sortowanie pseudolosowe.

BradC
źródło
4

Galareta , 201 bajtów

-2 bajty dzięki Mr. Xcoder. -1 bajt dzięki użytkownikowi 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

Wypróbuj online!

Cholera , kompresja SOGL jest dobra.

całkowicie ludzki
źródło
202 bajty
Mr. Xcoder,
201 bajtów . Wystarczy dołączyć 2 ostatnie znaki.
user202729,
(Mam na myśli, dołącz ỴXna końcu kodu, aby
wybierał
4

05AB1E , 171 bajtów

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

Wypróbuj online!

Wyjaśnienie

“ ... “wypycha ciąg wszystkich wymaganych słów.
Niektóre słowa pochodzą bezpośrednio ze słownika 05ab1e.
Niektóre są napisane zwykłym ascii (jak haze).
Niektóre są połączone słownikiem i ascii (jak do+ n't).

Następnie kod przetwarzania to:

#                 # 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
źródło
Wypróbuj online! - 176 z konwersją bruteforce.
Magic Octopus Urn
1
@MagicOctopusUrn: Myślę, że z 182 ,i 'dodał.
Emigna,
Nie! Ach, widzę to, tak. Nawiasem mówiąc, usuń wejście z TIO, jest to trochę mylące.
Magic Octopus Urn
@MagicOctopusUrn: Doh! Dzięki. Nie wiedziałem, że zostawiłem to tam: P
Emigna
166: TIO . Trzykrotnie -1 od użycia nowych słów słownika ( ye, doni ha) oraz -2 od sortowania listy według liczby słów i użycia kompresji delta.
Grimmy
4

Rubinowy, 362 361 bajtów

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

Wypróbuj online!

  • 1 bajt dzięki @ benj2240
BigRon
źródło
Możesz zgolić bajt za pomocą ?.zamiast '.'.
benj2240
@ benj2240 wow, nie widziałem tego wcześniej. Bardzo fajny.
BigRon,
1
Musiałem kopać dokumentację tego ?dosłownego ciągu znaków
BigRon
3

Python 3, 386 bajtów

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
źródło
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
źródło
2
Znalazłem błąd. Nie można używać przecinka jako separatora ponieważ 1 z możliwych odpowiedzi od magii 8-ball zawiera przecinek: As I see it, yes.
g4v3
1
Sugeruję użycie pojedynczej cyfry jako separatora. Pozwoliłoby to zaoszczędzić 1 bajt, ponieważ cudzysłowy nie są już potrzebne, ale nadal należy dodać spację, aby oddzielić cyfrę od split.
g4v3,
1
Możesz także pominąć nawiasy printi zapisać jeszcze 1 bajt. Wystarczy umieścić jednoznaczny znak plus przed listą: print((0..9)[5])stałby się print+(0..9)[5].
g4v3,
3

05AB1E , 208 217 bajtów

"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¡Ω

Wypróbuj online!

Dość podstawowe rozwiązanie. Możliwe odpowiedzi są łączone ze znakiem x (ponieważ nie ma go w odpowiedziach), a następnie są kompresowane (wewnątrz ), „x¡Ω dzieli się na x i wybiera losowy wybór.

Podziękowania dla @Emigna za zwrócenie uwagi, że kompresja alfabetu nie lubi „lub”. Naprawiono, otaczając skompresowaną strunę don ' i , tak .

Kaldo
źródło
Fajny pomysł na podzielenie się postacią nieobecną. Niestety alfabetu zastępuje kompresji ,i 'ze spacjami, więc wyjście dla tych 2 linii są błędne.
Emigna
@Emigna Wielkie dzięki za wskazanie tego! Zastanawiam się, czy nie istnieje lepsza poprawka dla tego problemu ... Mógłbym użyć innych nieużywanych znaków w odpowiedziach, ale są tylko dwa: q i x :-(
Kaldo
3

PHP , 412 385 337 384 bajtów

<?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)];

Wypróbuj online!

Fairly straight forward solution. Split the string by a delimiter(in this case 1) and choose a random element from the array.

Andrzej
źródło
Witamy w PPCG! Wprowadziłem kilka drobnych zmian w formatowaniu twojego postu i mam kilka drobnych sugestii - 1, musisz dodać spację, phpaby skompilować kod; 2, można wymienić '|'z 1a wszystko |ze 1dla -2 bajtów; 3 powinien rozważyć zmianę linku do wypróbowania go online na TIO.run, zgodnie z zaleceniami społeczności.
Taylor Scott
And here is a working version based off my feedback. Try it online!
Taylor Scott
@TaylorScott It seems to be working fine on my enovironment without the space after the <?php tag. I'm running PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Not sure if in previous versions that matters or not. Either way, I've edited the question.
Andrew
Ahh, it may just be the version - The link you provided uses PHP version 7.0.3, and it does not run on TIO.run without the space
Taylor Scott
2
You could use <?= and echo the explode directly using [rand(0, 19)] instead of first adding to to a variable <?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen
3

Javascript, 372 bytes

-10 bytes thanks to 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]

Try it online!

SuperStormer
źródło
1
Użyj bitowego ORzamiastMath.floor() to save 7 bytes: Math.random()*20|0.
Shaggy
3

Befunge

1221 870 bytes (perimeter of the entire field is 33x36 30*29 charachters) Thanks to Jo King for helping me to remove the trailing nulls and urging me to change the randomizer.

"<"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"
>:#,_@

The top line puts the '<' character and the x-position (28) where it should go on the stack. Then we enter the sort of random number generator. This could be improved, but this is what I could deliver on short notice... The "random" number is offset to get the actual "random" line to read.

After the random number is generated, we put the '<' character at that line and push the letters on the stack and on the bottom line output them again.

Uwaga; jeśli użyjesz interpretera, do którego podłączyłem w tytule tego posta, musisz ponownie zaznaczyć „Pokaż” po każdym uruchomieniu, ponieważ dodanie znaku „<” pozostaje po wykonaniu.

rael_kid
źródło
1
Lepiej jest użyć tego samego formatu, co moja> <> odpowiedź. Wypróbuj online! . Na obecnym etapie wypisuje również na końcu kilka zerowych bajtów
Jo King
Tak, wiem, chciałem, żeby losowa liczba nie była zbyt stronnicza, ale mogłem po prostu użyć jednej linii znaków zapytania.
rael_kid
Możesz przynajmniej zagrać w golfa kilkaset bajtów spacji i zmienić ostatnią linię, >:#,_@aby uniknąć drukowania pustych bajtów. Aha, i dodaj link TIO.
Jo King
That's true, I'll post an update later today.
rael_kid
3

Java 8 , 433, 392, 380, 379 bytes

 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)]

Try it online!

  • 41 bytes thanks to AdmBorkBork!
  • 10 bytes thanks to Kevin!
  • 1 byte thanks to Oliver!
DevelopingDeveloper
źródło
2
Surely you can use String.split() to save a bunch of bytes — docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork
2
As @AdmBorkBork stated, you can save 41 bytes using String#split. Also, you can save an additional 11 bytes using (int)(Math.random()*20) instead of new java.util.Random().nextInt(20). And the semi-colon isn't counted towards the byte-count for lambdas. So in total: 380 bytes.
Kevin Cruijssen
2
There's an extra space in your answer and in @KevinCruijssen's golf: use Don't instead of Don' t.
Olivier Grégoire
2

Red, 367 bytes

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

Try it online!

It doesn't seem really random in TIO (although it works just fine in the Red Console), that's why I added a random/seed to the header.

Galen Ivanov
źródło
2

Excel, 399 Bytes

=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")

Since CHOOSE(X.Y,<>) is the same as CHOOSE(X,<>), no need for an INT

Not much golfing you can do here though...

Chronocidal
źródło
2

Aceto, 345 + 1 = 346 bytes (+1 for -l flag)

"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

Try it online!

Not overly interesting, but I can't think of anything shorter in this language, no compressed strings or anything.

"...."   push strings separated by periods
      '.  literal period
        :  split on period
         Y  shuffle stack
          p  print top

drham
źródło
without the -l flag might look more interesting.
Laura Bostan
@LauraBostan But I don't know hilbert curves past type 3
drham
and it's more bytes for all of the \n
drham
1
But yes it would look more 'interesting' per se
drham
iup... the -l flag was added for golfing. However, I am not very fond of it, steals cheaply the whole point of the language. Maybe next version of Aceto will give up this flag.
Laura Bostan
1

C - 426 bytes

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]);}

Uses an uninitialized variable mod 20 to index into an array of strings containing all possible outputs. Compilers complain that stdio.h isn't included, but it works OK. Probably because it just so happens to have the standard library linked in anyways. Lucky me.

Orion
źródło
Worth noting on some implementations, an uninitialized variable has a value of 0, since the behavior is, well, undefined. Ask your magic 8-ball whether this is true on your machine.
Orion
1

Go, 530 Bytes

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}}

Please note that, on the Go Playground, because of how seeding works, it always gives the same result. When running on a regular computer, everything works as it should.
I think it is possible to save a bit more but my knowledge in Go stops there :)

Formatted and testable version

Nathanael C.
źródło
Welcome to PPCG! The Go interpreter on Try It Online seems to use a random seed.
Dennis
I must be terribly unlucky then D:
Nathanael C.
Are you refreshing the page? That would fetch the result from cache every time, so it won't change. Clicking the Run button will run the code again.
Dennis
I keep getting "It is certain" even after with a CTRL+R to hard refresh... I don't get it :x
Nathanael C.
Refreshing won't change the result; they are cached on the server side. Click the run button (play icon in a circle) or press Ctrl-Enter.
Dennis
1

Excel-VBA, 362 341 339 Bytes

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

Where A1:T1 contain the different options. Reads entire first row of sheet into array v and indexes a random point along the first 19 values.

Surprised to find that indexing an array doesn't require integer values

Greedo
źródło
My concerns about your answer for Excel are even more so here, as the Worksheet is counted as a STDIN for Excel VBA, so this is closer to having pre-determined input
Taylor Scott
0

VBA, 358 bytes

An anonymous VBE immediate window function that takes no input and outputs to 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)
Taylor Scott
źródło
-1

Java 8, 379 Bytes

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)]

Try it online

Twometer
źródło