Buat Magic 8 Ball


34

Sebagai seorang anak, teman saya punya bola ajaib yang akan kami ajukan pertanyaan dan lihat bagaimana nasib pertanyaan itu.

Tantangan

Tantangan Anda adalah menulis sebuah program (atau fungsi) yang ketika dijalankan (atau dipanggil), menghasilkan (atau mengembalikan) jawaban acak dari kemungkinan jawaban di bawah ini. (Random menjadi: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Jawaban yang mungkin dari Magic 8-ball adalah (case-insensitive):

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

Memasukkan

Tidak ada input

Keluaran

Pilihan acak dari atas. Kasus tidak masalah.

Aturan

Tidak ada celah standar .

Ini adalah , jadi kode terpendek dalam byte untuk setiap bahasa menang!


2
Saya mengubah "tidak ada input yang diizinkan" menjadi "tidak ada input", beberapa bahasa memerlukan argumen kosong / null sebagai input.
Rɪᴋᴇʀ

12
Apakah saya atau seseorang sedang downvoting setiap jawaban ??????
Dat

1
@Dat saya memposting sesuatu di sini dalam meta untuk membahas hal ini. Saya telah meningkatkan setiap jawaban, seperti yang selalu saya lakukan untuk jawaban yang memenuhi persyaratan pada pertanyaan saya. Mungkin seorang moderator akan campur tangan ...
DevelopingDeveloper

37
@DatSigns point to yes
mbomb007

1
@ mbomb007 Komentar favorit saya yang pernah saya lihat di PPCG sejauh ini!
DevelopingDeveloper

Jawaban:


22

SOGL V0.12 , 166 byte

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

Coba Di Sini!

\ o / setiap kata ada di kamus SOGLs!


Ini jawaban yang luar biasa !!!
DevelopingDeveloper

Saya ingin melihat mesin kompresi SOGL, tetapi sayangnya, saya tidak bisa berbicara JavaScript :(
caird coinheringaahing

Tunggu, SOGL adalah bahasa berbasis JavaScript?
Shaggy

@cairdcoinheringaahing SOGL ditulis dalam Pemrosesan, dan file kompresi yang relevan ada di sini dan di sini . Padahal Memproses adalah bahasa berbasis Java: p
dzaima

18

> <> , 438 byte

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"

Cobalah online!

Tidak terlalu menarik, tapi saya pikir itu adalah jawaban pertama di mana keacakan tidak seragam. Saya menempatkan semua pesan negatif sebagai yang paling tidak mungkin :)

Beberapa penjelasan:

Pointer mulai mengarah ke kanan di baris pertama. xmengubah pointer ke arah mata angin acak. Jika naik atau turun, itu hanya bertemu dengan yang berbeda x. Jika benar, itu memantul |dan hits yang sama x. Jika berbelok ke kiri, ia membungkus dan mendorong teks garis itu ke tumpukan. Sebagian besar garis kemudian mengenai jalur yang sama ^yang mengubah arah ke atas. Ini loop di atas opada baris pertama, yang menampilkan tumpukan sampai kosong. Kasing khusus adalah Yepgaris, yang memiliki loop horisontal |o<sebagai gantinya.


7
Saya akan menggunakan yang ini. Itu (hampir) selalu memberikan respons positif. Sayangnya jawabannya juga berbau amis ...
Suppen

15

Python 2, 369 368 byte

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 byte

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

Saya sebelumnya menggunakan hashbuiltin untuk mengindeks (hash(id)%20 ), yang mengembalikan nilai acak per-awal interpreter Python sejak https://bugs.python.org/issue13703 . Ini bukan acak untuk string kosong (selalu 0), jadi perlu menggunakan sesuatu yang lain, idbuiltin!

Pada tampilan kedua, saya bisa menggunakan idlangsung, tetapi tampaknya selalu menghasilkan angka genap. IIRC, id(object)di CPython hanya mengembalikan lokasi memori object, jadi ini masuk akal. Mungkin jika saya menggunakan Jython atau IronPython, saya bisa melewatkan divide-by-7. Bagaimanapun, hash(id)vs id(0)//7sama dengan Python 3, tetapi dapat menggunakan /operator untuk memotong divisi integer di Python 2, menghemat byte.


13

PowerShell , 354 byte

"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

Cobalah online!

Ho-hum. Mengambil semua hasil, disatukan dengan 0s, lalu -splitaktif 0untuk membuat array string. Lewati array Get-Randomyang akan dipilih secara acak salah satunya. Yang tersisa pada pipa dan output tersirat.


11

Python 2 , 385 byte

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

Cobalah online!


22
@Downvoter, bolehkah saya bertanya mengapa Anda menurunkan setiap jawaban?
manusia

7
Itu menurut saya sebagai perilaku pemilih yang mencurigakan, saya sarankan menandai pertanyaan untuk perhatian mod sehingga mereka dapat menyelidikinya.
Shaggy

9

Applescript, 391

Saya suka bagaimana daftar AppleScript memiliki some itemmetode:

{"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
Beri tanda downvoter-of-all-jawaban yang bersemangat dalam 3, 2, 1 ... Teruskan - Saya berani Anda untuk mengungkapkan siapa Anda dan menjelaskan alasan Anda yang rendah hati. Atau akankah Anda terus mengintai secara anonim di dalam bayangan?
Digital Trauma

7

Utilitas Bash + GNU, 230

  • 15 byte disimpan berkat @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

Output biner zopfli tidak terwakili dengan baik di sini; sebagai gantinya Anda dapat merekonstruksi skrip dari data yang disandikan base64:

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

Catatan, sebagaimana diizinkan oleh pertanyaan, data terkompresi akan mendekompresi ke semua huruf kecil. Ini membuat kompresi zopfli sedikit lebih efisien dan menghemat 16 byte.


tail +2tidak bekerja untuk saya, tetapi tetap sed 1d $0menyimpan byte. Juga, karena keluaran ke STDERR diizinkan secara default, saya rasa Anda tidak perlu exit. Juga, sepuluh byte terakhir dari program dapat dihapus.
Dennis

@Dennis terima kasih! Output ekstra ke STDERR selalu membuat saya merasa sedikit tidak nyaman, tapi saya rasa saya harus menjalankannya.
Digital Trauma

6

R , 360 byte

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

Cobalah online!

Bukan solusi yang paling elegan. R memiliki fitur yang rapi di mana stdinakan mengarahkan ulang ke file sumber, sehingga Anda dapat menempatkan (kecil) kumpulan data ke dalam kode sumber, menyimpan byte untuk pemisahan string atau lebih buruk, membangun vektor itu sendiri (semua kutipan ditambahkan dengan cepat). Seiring dengan bawaan untuk pengambilan sampel acak, ini membuat jawaban singkat.


6

Arang , 203 184 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 19 byte dengan menurunkan semuanya. Penjelasan:

  ”...”     Compressed string of newline-delimited responses
 ⪪     ¶    Split on newlines
‽           Random element
            Implicitly print

5

Retina , 333 331 321 byte


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

Cobalah online! Sunting: Disimpan 1 byte dengan mengompresi doubtdan 1 byte dengan menurunkan semuanya jadi saya bisa mengompres reply. Kemudian disimpan 10 byte dengan menggunakan pegolf Retina Kolmogorov @ Leo pada teks yang lebih rendah (yang secara kebetulan adalah jumlah byte yang disimpan pada jawaban 333-byte saya).


323 byte dengan menggunakan pegolf
Leo

@ Leo Perhatikan bahwa Retina 0.8.2 adalah bahasa yang berbeda
mbomb007

@ mbomb007 Saya tahu, tetapi untuk substitusi sederhana seperti ini ia memiliki sintaks yang sama dengan Retina 1.0. Saya baru saja menunjukkan bahwa pegolf Kolmogorov ditulis untuk versi Retina yang lebih lama tetapi masih dapat digunakan dalam kasus ini.
Leo

4

Kelapa , 380 byte

Kelapa pelabuhan totallyhuman 's jawabannya

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

Cobalah online!


4

T-SQL, 393 byte

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

Fungsinya STRING_SPLIT ini hanya tersedia di SQL 2016 dan yang lebih baru.

Terbaik yang bisa saya dapatkan untuk versi sebelumnya menggunakan VALUES('It is certain'),('It is decidedly so'),... adalah 464 karakter.

Diformat, supaya Anda bisa melihat bagian yang berfungsi:

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

NEWID() menghasilkan GUID baru, pseudo-acak, sehingga merupakan cara untuk melakukan semacam pseudo-acak.


4

Jeli , 201 byte

-2 byte terima kasih kepada Tn. Xcoder. -1 byte terima kasih kepada pengguna202729.

“æ⁽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

Cobalah online!

Sial , kompresi SOGL bagus.



201 byte . Cukup tambahkan 2 karakter terakhir.
user202729

(Maksud saya, tambahkan ỴXke akhir kode sehingga ia memilih secara acak dari salah satu dari mereka)
user202729

4

05AB1E , 171 byte

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

Cobalah online!

Penjelasan

“ ... “mendorong string dari semua kata yang diperlukan.
Beberapa kata diambil langsung dari kamus 05ab1e.
Beberapa ditulis dalam ascii (seperti haze).
Beberapa kamus gabungan dan ascii (seperti do+ n't).

Maka kode pemrosesan adalah:

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

Cobalah online! - 176 dengan konversi bruteforce.
Magic Gurita Guci

1
@ MagicOctopusUrn: Saya pikir ini 182 ,dan 'ditambahkan.
Emigna

Doh! Ah saya melihatnya, ya. Omong-omong, hapus input dari TIO Anda, ini sedikit membingungkan.
Magic Gurita Guci

@MagicOctopusUrn: Doh! Terima kasih. Saya tidak sadar bahwa saya meninggalkannya di sana: P
Emigna

166: TIO . Tiga kali -1 dari menggunakan kata-kata kamus baru ( ye,, dondan ha), dan -2 dari menyortir daftar berdasarkan jumlah kata dan menggunakan kompresi delta.
Grimmy

4

Ruby, 362 361 byte

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

Cobalah online!

  • 1 byte terima kasih kepada @ benj2240

Anda dapat mengurangi byte dengan ?.alih - alih '.'.
benj2240

@ benj2240 wow, saya belum pernah melihat itu sebelumnya. Sangat keren.
BigRon

1
Saya harus menggali untuk dokumentasi tentang ?string karakter tunggal
BigRon

3

Python 3, 386 byte

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
Saya menemukan bug. Anda tidak dapat menggunakan koma sebagai pemisah karena 1 dari kemungkinan jawaban dari Magic 8-ball berisi koma: As I see it, yes.
g4v3

1
Saya sarankan Anda menggunakan satu digit sebagai pemisah. Ini akan menghemat 1 byte, karena tanda kutip tidak lagi diperlukan, tetapi spasi masih harus ditambahkan untuk memisahkan digit dan split.
g4v3

1
Anda juga dapat menghilangkan tanda kurung printdan menyimpan 1 byte lebih. Masukkan saja tanda tambah unary sebelum daftar: print((0..9)[5])akan menjadi print+(0..9)[5].
g4v3

3

05AB1E , 208 217 byte

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

Cobalah online!

Solusi yang cukup mendasar. Kemungkinan jawaban disatukan dengan karakter x (karena tidak ada dalam jawaban) dan kemudian dikompresi (di dalam ), 'x¡Ω berpisah pada x dan pop pilihan acak.

Terima kasih kepada @Emigna untuk menunjukkan bahwa kompresi alfabet tidak disukai 'atau, banyak. Diperbaiki dengan menyurvei string yang dikompresi dengan don ' dan , ya .


Ide bagus untuk dibagi pada karakter yang tidak ada. Sayangnya kompresi alfabet menggantikan ,dan 'dengan spasi, sehingga output untuk 2 baris tersebut salah.
Emigna

@Emigna Terima kasih banyak untuk menunjukkannya! Saya ingin tahu apakah perbaikan yang lebih baik tidak ada untuk masalah ini ... Saya bisa menggunakan karakter yang tidak digunakan lainnya dalam jawaban tetapi hanya ada dua: q dan x :-(
Kaldo

3

PHP , 412 385 337 384 byte

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

Cobalah online!

Solusi yang cukup lurus ke depan. Pisahkan string dengan pembatas (dalam hal ini 1) dan pilih elemen acak dari array.


Selamat datang di PPCG! Saya telah membuat beberapa perubahan format kecil pada posting Anda, dan punya beberapa saran kecil - 1, Anda perlu menambahkan spasi setelahnya phpagar kode Anda dikompilasi; 2, Anda dapat mengganti '|'dengan 1dan semua |dengan 1-2 byte; 3 harus mempertimbangkan untuk mengubah tautan Anda untuk Mencoba Daring ke TIO.run seperti yang disukai oleh komunitas.
Taylor Scott

Dan ini adalah versi yang berfungsi berdasarkan umpan balik saya. Cobalah online!
Taylor Scott

@TaylorScott Tampaknya berfungsi dengan baik di lingkungan saya tanpa spasi setelah tag <? Php. Saya sedang berlari PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Tidak yakin apakah dalam versi sebelumnya itu penting atau tidak. Either way, saya sudah mengedit pertanyaan.
Andrew

Ahh, mungkin itu hanya versi - Tautan yang Anda berikan menggunakan PHP versi 7.0.3, dan itu tidak berjalan di TIO.run tanpa spasi
Taylor Scott

2
Anda bisa menggunakan <?=dan menggemakan meledak secara langsung menggunakan [rand(0, 19)]alih-alih menambahkan pertama ke variabel<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen

3

Javascript, 372 byte

-10 byte terima kasih kepada 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]

Cobalah online!


1
Gunakan bitwise ORbukan Math.floor()untuk menyimpan 7 bytes: Math.random()*20|0.
Shaggy

3

Dibalik

1221 870 byte (perimeter seluruh bidang adalah 33x36 30 * 29 karakter) Terima kasih kepada Jo King karena telah membantu saya menghapus nol yang tertinggal dan mendesak saya untuk mengubah pengacak.

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

Baris teratas menempatkan karakter '<' dan posisi-x (28) di mana ia harus diletakkan di stack. Kemudian kita masukkan semacam generator angka acak. Ini dapat ditingkatkan, tetapi ini adalah apa yang dapat saya berikan dalam waktu singkat ... Angka "acak" diimbangi untuk mendapatkan baris "acak" yang sebenarnya untuk dibaca.

Setelah angka acak dihasilkan, kita menempatkan karakter '<' di baris itu dan mendorong huruf-huruf di tumpukan dan di baris bawah mengeluarkannya lagi.

Catatan; jika Anda menggunakan juru bahasa yang saya tautkan dalam judul posting ini, Anda harus mengklik ulang "Show" setelah setiap kali dijalankan, karena penambahan karakter '<' tetap setelah eksekusi.


1
Anda jauh lebih baik menggunakan format yang sama dengan jawaban saya> <>. Cobalah online! . Seperti sekarang, ia juga mencetak banyak byte nol pada akhirnya
Jo King

Ya, saya tahu, saya ingin nomor acak itu tidak terlalu bias, tapi saya bisa saja menggunakan satu baris tanda tanya.
rael_kid

Anda setidaknya dapat golf beberapa ratus byte dari spasi kosong, dan mengubah baris terakhir >:#,_@untuk menghindari pencetakan byte nol. Oh, dan tambahkan tautan TIO.
Jo King

Itu benar, saya akan memposting pembaruan hari ini.
rael_kid

3

Java 8 , 433 , 392 , 380 , 379 byte

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

Cobalah online!

  • 41 byte berkat AdmBorkBork!
  • 10 byte terima kasih kepada Kevin!
  • 1 byte berkat Oliver!

2
Tentunya Anda dapat menggunakan String.split () untuk menyimpan banyak byte - docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork

2
Seperti yang dikatakan @AdmBorkBork , Anda dapat menghemat 41 byte menggunakan String#split. Selain itu, Anda dapat menyimpan 11 byte tambahan menggunakan (int)(Math.random()*20)bukan new java.util.Random().nextInt(20). Dan semi-colon tidak diperhitungkan terhadap byte-count untuk lambdas. Jadi totalnya: 380 byte .
Kevin Cruijssen

2
Ada ruang ekstra dalam jawaban Anda dan di @ KevinCruijssen's golf: gunakan Don'tsebagai ganti Don' t.
Olivier Grégoire

2

Merah , 367 byte

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

Cobalah online!

Tampaknya tidak benar-benar acak di TIO (meskipun berfungsi dengan baik di Konsol Merah), itu sebabnya saya menambahkan acak / seed ke 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")

Karena CHOOSE(X.Y,<>)sama dengan CHOOSE(X,<>), tidak perlu untukINT

Tidak banyak bermain golf yang bisa Anda lakukan di sini ...


2

Aceto , 345 +1 = 346 byte (+1 untuk -lbendera)

"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

Cobalah online!

Tidak terlalu menarik, tapi saya tidak bisa memikirkan sesuatu yang lebih pendek dalam bahasa ini, tidak ada string terkompresi atau apa pun.

"...." senar dorong dipisahkan oleh titik
      ' periode literal
        : split pada periode
         Y mengocok tumpukan
          p print top


tanpa tanda-l mungkin terlihat lebih menarik.
Laura Bostan

@LauraBostan Tapi saya tidak tahu kurva masa lalu tipe 3
drham

dan itu lebih banyak byte untuk semua \ n
drham

1
Tapi ya itu akan terlihat lebih 'menarik' per se
drham

iup ... bendera -l telah ditambahkan untuk bermain golf. Namun, saya tidak terlalu menyukainya, mencuri dengan murah seluruh pokok bahasanya. Mungkin versi Aceto selanjutnya akan menyerahkan bendera ini.
Laura Bostan

1

C - 426 byte

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

Menggunakan variabel mod 20 yang tidak diinisialisasi untuk mengindeks ke dalam array string yang berisi semua kemungkinan output. Compiler mengeluh bahwa stdio.h tidak termasuk, tetapi berfungsi dengan baik. Mungkin karena kebetulan memiliki perpustakaan standar yang terhubung di anyways. Beruntung saya.


Perlu dicatat pada beberapa implementasi, variabel yang tidak diinisialisasi memiliki nilai 0, karena perilaku tersebut, yah, tidak terdefinisi. Tanyakan sihir 8-bola Anda apakah ini benar pada mesin Anda.
Orion

1

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

Harap perhatikan bahwa, di Go Playground, karena cara kerja penyemaian, hasilnya selalu sama. Saat dijalankan pada komputer biasa, semuanya berfungsi sebagaimana mestinya.
Saya pikir mungkin untuk menghemat lebih sedikit tetapi pengetahuan saya di Go berhenti di sana :)

Versi yang diformat dan dapat diuji


Selamat datang di PPCG! The Go juru Cobalah online tampaknya menggunakan benih acak.
Dennis

Saya pasti sangat tidak beruntung maka D:
Nathanael C.

Apakah Anda menyegarkan halaman? Itu akan mengambil hasil dari cache setiap kali, sehingga tidak akan berubah. Mengklik tombol Run akan menjalankan kode lagi.
Dennis

Saya terus mendapatkan "Sudah pasti" bahkan setelah dengan CTRL + R untuk menyegarkan kembali ... Saya tidak mengerti: x
Nathanael C.

Menyegarkan tidak akan mengubah hasilnya; mereka di-cache di sisi server. Klik tombol jalankan (ikon putar dalam lingkaran) atau tekan Ctrl-Enter.
Dennis

1

Excel-VBA, 362 341 339 Bytes

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

Di mana A1:T1berisi opsi yang berbeda. Membaca seluruh baris pertama sheet menjadi arrayv dan mengindeks titik acak di sepanjang 19 nilai pertama.

Terkejut menemukan bahwa pengindeksan array tidak memerlukan nilai integer


Kekhawatiran saya tentang jawaban Anda untuk Excel bahkan lebih di sini, karena Lembar Kerja dihitung sebagai STDIN untuk Excel VBA, jadi ini lebih dekat dengan memiliki input yang telah ditentukan sebelumnya
Taylor Scott

0

VBA, 358 byte

Fungsi jendela langsung VBE anonim yang tidak mengambil input dan output ke 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)]

Cobalah online

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.