Magic 8 Ballを作成する


34

子供の頃、私の友人はマジック8ボールを持っていて、質問をして、その質問の運命を確認しました。

チャレンジ

あなたの課題は、実行(または呼び出し)時に、以下の可能な回答からランダムな回答を出力(または返す)するプログラム(または関数)を作成することです。(ランダムであること。each output should have a nonzero chance of occurring but they do not need to meet any other criteria

マジック8ボールからの可能な回答は(大文字と小文字を区別しません):

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

入力

入力なし。

出力

上記からランダムに選択。大文字小文字は関係ありません。

ルール

標準抜け穴は許可されていません。

これはなので、各言語のバイト単位の最短コードが勝ちです!


2
「入力不可」を「入力不可」に変更しました。一部の言語では、入力としてブランク/ヌル引数が必要です。
Rɪᴋᴇʀ

12
それは私ですか、それとも誰かがすべての答えに投票していますか?
ダット

1
@Dat私はこれについて議論するためにメタで何かをここに投稿しました。私はいつも私の質問の要件を満たす答えをするように、すべての答えを支持しました。たぶん、モデレータは...介入する
DevelopingDeveloper

37
@DatSigns point to yes
mbomb007

1
@ mbomb007これまでPPCGで見た私のお気に入りのコメント!
開発者

回答:


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辞書にありました!


これは素晴らしい答えです!!!
開発者

SOGLの圧縮エンジンを見てみたいのですが、残念ながら、私はJavaScriptを話せません:(
caird coinheringaahing

SOGLはJavaScriptベースの言語ですか?
シャギー

@cairdcoinheringaahing SOGLはProcessingで記述されており、関連する圧縮ファイルはhereおよびhereです。Processingは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
これを使います。それは(ほとんど)常に肯定的な反応を示します。残念なことに、答えも
怪しい

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)を使用していたため、Pythonインタープリターの開始ごとにランダムな値が返されます https://bugs.python.org/issue13703ます。ただし、空の文字列ではランダムではないため(常に0)、他の何かを使用する必要があります。id組み込み!

見直すと、id直接使用できますが、常に偶数を生成するようです。id(object)CPythonのIIRCはのメモリ位置を返すだけなobjectので、これは理にかなっています。JythonまたはIronPythonを使用した場合は、7分周をスキップできます。とにかく、hash(id)vs id(0)//7はPython 3では同等ですが/、Python 2で整数除算を切り捨てる演算子を使用して1バイトを節約できます。


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

オンラインでお試しください!

うん 一緒に連結され、すべての結果、かかる0その後、秒-splitのS 0文字列の配列を作成します。Get-Randomそれらのいずれかをランダムに選択する配列を渡します。それはパイプラインに残り、出力は暗黙的です。


11

Python 2、385バイト

ovsのおかげで-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('.'))

オンラインでお試しください!


22
@Downvoter、なぜあなたはすべての答えをダウン投票したのかと尋ねてもいいですか?
完全に人間の

7
それは疑わしい投票行動として私を襲います、私は彼らが調査することができるようにMODの注意のために質問にフラグを立てることを提案します。
シャギー

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

  • @Dennisのおかげで15バイト節約されました。
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。また、プログラムの最後の10バイトを削除できます。
デニス

@デニスありがとう!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ソースファイルにリダイレクトするきちんとした機能があります。そのため、(小さな)データセットをソースコードに入れて、文字列分割またはさ​​らに悪いことにバイトを節約し、ベクトル自体を構築できます(これらの引用符はすべて急いで追加されます)。ランダムサンプリング用の組み込み関数に加えて、これは簡単な答えになります。


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

オンラインでお試しください!編集:圧縮doubtして1バイト、すべて圧縮して1バイトを保存して、圧縮できるようにしましたreply。次に、小文字のテキストで@LeoのRetina Kolmogorovゴルファーを使用して10バイトを節約しました(これは、偶然、333バイトの回答で保存したバイト数です)。



@Leo Retina 0.8.2は異なる言語であることに注意してください
mbomb007

@ mbomb007は知っていますが、これらのような単純な置換の場合、Retina 1.0と同じ構文になります。私はコルモゴロフのゴルファーが古いバージョンのRetina向けに書かれていることを指摘していましたが、この場合でも使用できます。
レオ

4

ココナッツ、380バイト

完全に人間答えのココナッツポート

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を生成します。これは、疑似ランダムソートを行う方法です。


4

ゼリー、201バイト

-Xcoder氏のおかげで2バイト。user202729のおかげで-1バイト。

“æ⁽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の圧縮は良いです。



201バイト。最後の2文字を追加するだけです。
user202729

ỴXつまり、コードの最後に追加して、そのうちの1つからランダムに選択することを意味します)
-user202729

4

05AB1E、171バイト

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

オンラインでお試しください!

説明

“ ... “必要なすべての単語の文字列をプッシュします。
一部の単語は05ab1e辞書から直接取得されます。
いくつかは、プレーンアスキー(などhaze)で書き出されます。
いくつかは辞書とアスキーを組み合わせたものです(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

オンラインでお試しください!-ブルートフォース変換で176。
魔法のタコ

1
@MagicOctopusUrn:182で追加されている,と思います'
エミグナ

ど!ああ、そうですね。ところで、TIOから入力を削除すると、少し混乱します。
魔法のタコUr

@MagicOctopusUrn:ドッ!ありがとう。私はそこにそれを残していたことに気づかなかった:P
エミグナ

166:TIO。三度-1新しい辞書の単語を使用してから(yedonおよびha)、および-2ワードカウントによってリストをソートするとデルタ圧縮を使用します。
グリムミー

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

オンラインでお試しください!

  • @ benj2240のおかげで1バイト

?.代わりにバイトを削ることができ'.'ます。
benj2240

@ benj2240うわー、私は前にそれを見たことがなかった。とてもかっこいい。
BigRon


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

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

2
バグを見つけました。マジック8ボールからの可能な回答の1つにコンマが含まれているため、区切り文字としてコンマを使用できませんAs I see it, yes
g4v3

1
セパレータとして1桁を使用することをお勧めします。引用符が不要になったため、1バイト節約されますが、数字とを区切るためにスペースを追加する必要がありsplitます。
g4v3

1
また、括弧を省略してprint、さらに1バイト節約できます。リストの前に単項プラス記号を置くだけで:print((0..9)[5])になりprint+(0..9)[5]ます。
g4v3

3

05AB1E208 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¡Ωがxで分割され、ランダムな選択肢がポップされます。

@Emignaに、アルファベットの圧縮が 'やをあまり好まないことを指摘してくれてありがとう。圧縮された文字列をdon 'およびyesで囲むことで修正されました。


存在しないキャラクターで分割するのは良い考えです。残念ながら、アルファベットの圧縮置き換え,'スペースで、これらの2行の出力は間違っているそう。
エミグナ

@Emigna Thanks a lot for pointing it out ! I'm wondering if a better fix doen't exist for this issue... I could have used other non-used characters in the answers but there are only two: q and x :-(
Kaldo

3

PHP, 412 385 337 384 bytes

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

Try it online!

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


Welcome to PPCG! I've made some minor formatting changes to your post, and have a couple little suggestions - 1, you need to add a space after php to get your code to compile; 2, you can replace '|' with 1 and all | with 1 for -2 bytes; 3 should consider changing your link for Trying it Online to TIO.run as is preferred by the community.
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!


1
Use bitwise OR instead of Math.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.

Note; if you use the interpreter I linked to in this posts title you have to reclick the "Show" after each run, because the addition of the '<' character remains after execution.


1
You're much better off using the same format as my ><> answer. Try it online!. As it is now, it also prints a bunch of null bytes at the end
Jo King

Yeah, I know, I wanted the random number thingy not to be too biased, but I could've just used a single line of question marks.
rael_kid

You can at least golf a couple of hundred bytes of whitespace off, and change the last line to >:#,_@ to avoid printing null bytes. Oh, and add a TIO link.
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!

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.


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


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


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.


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


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


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)

-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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.