Tạo một quả bóng ma thuật 8


34

Khi còn nhỏ, bạn tôi có một quả bóng ma thuật 8 mà chúng tôi sẽ đặt câu hỏi và xem số phận của câu hỏi đó là gì.

Thử thách

Thử thách của bạn là viết một chương trình (hoặc hàm) mà khi chạy (hoặc được gọi), sẽ xuất ra (hoặc trả về) một câu trả lời ngẫu nhiên từ các câu trả lời có thể có dưới đây. (Ngẫu nhiên each output should have a nonzero chance of occurring but they do not need to meet any other criteria:)

Các câu trả lời có thể có từ Magic 8-ball là (không phân biệt chữ hoa chữ thường):

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

Đầu vào

Không có đầu vào.

Đầu ra

Một sự lựa chọn ngẫu nhiên từ trên. Trường hợp không quan trọng.

Quy tắc

Sơ hở tiêu chuẩn không được phép.

Đây là , vì vậy mã ngắn nhất tính theo byte cho mỗi ngôn ngữ sẽ thắng!


2
Tôi đã thay đổi "không cho phép đầu vào" thành "không có đầu vào", một số ngôn ngữ yêu cầu đối số trống / null làm đầu vào.
Rɪᴋᴇʀ

12
Có phải tôi hoặc ai đó đang hạ thấp mọi câu trả lời ??????
Đạt

1
@ Tôi đã đăng một cái gì đó ở đây trong meta để thảo luận về điều này. Tôi đã nâng cao mọi câu trả lời, vì tôi luôn luôn làm cho câu trả lời đáp ứng các yêu cầu cho câu hỏi của tôi. Có thể một người điều hành sẽ can thiệp ...
DevelopDeveloper

37
@DatSigns point to yes
mbomb007

1
@ mbomb007 Nhận xét yêu thích của tôi tôi đã thấy trên PPCG cho đến nay!
DevelopDeveloper

Câu trả lời:


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

Hãy thử nó ở đây!

\ o / mỗi từ đều có trong từ điển SOGLs!


Đây là một câu trả lời tuyệt vời !!!
DevelopDeveloper

Tôi rất muốn xem qua công cụ nén của SOGL, nhưng thật không may, tôi không nói được JavaScript :(
caird coinheringaahing 7/03/18

Đợi đã, SOGL là ngôn ngữ dựa trên JavaScript?
Shaggy

@cairdcoinheringaahing SOGL được viết trong Đang xử lý và các tệp nén có liên quan ở đâyđây . Mặc dù Xử lý là ngôn ngữ dựa trên 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"

Hãy thử trực tuyến!

Không thú vị lắm, nhưng tôi nghĩ đó là câu trả lời đầu tiên trong đó tính ngẫu nhiên không đồng nhất. Tôi đặt tất cả các tin nhắn tiêu cực ít nhất có thể :)

Một số giải thích:

Con trỏ bắt đầu đi ngay tại dòng đầu tiên. xthay đổi con trỏ theo hướng hồng y ngẫu nhiên. Nếu nó đi lên hoặc xuống, nó chỉ gặp một sự khác biệt x. Nếu nó đi đúng, nó bật ra |và đánh như cũ x. Nếu nó đi bên trái, nó sẽ quấn quanh và đẩy văn bản của dòng đó vào ngăn xếp. Hầu hết các dòng sau đó nhấn cùng một bản nhạc ^sẽ thay đổi hướng lên trên. Vòng lặp này otrên dòng đầu tiên, đầu ra ngăn xếp cho đến khi trống. Trường hợp đặc biệt là Yepdòng, có vòng lặp ngang |o<thay thế.


7
Tôi sẽ sử dụng cái này Nó (gần như) luôn cho một phản ứng tích cực. Thật không may, câu trả lời cũng có mùi tanh ...
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])

Trước đây tôi đã sử dụng hàm hashdựng sẵn để lập chỉ mục ( hash(id)%20), trả về giá trị ngẫu nhiên mỗi lần khởi động của trình thông dịch Python kể từ https://bugs.python.org/su13703 . Nó không phải là ngẫu nhiên cho chuỗi rỗng mặc dù (luôn là 0), vì vậy cần phải sử dụng một thứ khác, idnội dung!

Ở cái nhìn thứ hai, tôi có thể sử dụng idtrực tiếp, nhưng dường như nó luôn tạo ra các số chẵn. IIRC, id(object)trong CPython chỉ trả về vị trí bộ nhớ của object, vì vậy điều này có ý nghĩa. Có lẽ nếu tôi đã sử dụng Jython hoặc IronPython, tôi có thể bỏ qua cách chia 7. Dù sao, hash(id)vs id(0)//7là bằng nhau trong Python 3, nhưng có thể sử dụng /toán tử để cắt bớt phân chia số nguyên trong Python 2, tiết kiệm một 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

Hãy thử trực tuyến!

Hồ-hum. Đưa tất cả các kết quả, nối với nhau bằng 0s, sau đó -splits 0để tạo ra một chuỗi các chuỗi. Truyền mảng Get-Randomđó sẽ chọn ngẫu nhiên một trong số chúng. Đó là còn lại trên đường ống và đầu ra là ẩn.


11

Python 2 , 385 byte

-1 byte nhờ vào các lò nướng.

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

Hãy thử trực tuyến!


22
@Downvoter, tôi có thể hỏi tại sao bạn lại đánh giá thấp mọi câu trả lời không?
hoàn toàn

7
Điều đó gây ấn tượng với tôi là hành vi bỏ phiếu đáng ngờ, tôi đề nghị gắn cờ câu hỏi cho sự chú ý của một mod để họ có thể điều tra.
Shaggy

9

Bản thảo, 391

Tôi thích cách danh sách của AppleScript có một some itemphương thức:

{"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
Hãy đưa ra câu trả lời có ý nghĩa trong tất cả các câu trả lời trong 3, 2, 1 ... Tiếp tục - Tôi dám tiết lộ bạn là ai và giải thích lý do downvote của bạn. Hay bạn sẽ tiếp tục ẩn danh ẩn nấp trong bóng tối?
Chấn thương kỹ thuật số

7

Tiện ích Bash + GNU, 230

  • 15 byte được lưu nhờ @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

Đầu ra zopfli nhị phân không được thể hiện tốt ở đây; thay vào đó, bạn có thể xây dựng lại tập lệnh từ dữ liệu được mã hóa base64:

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

Lưu ý, như được cho phép bởi câu hỏi, dữ liệu nén sẽ giải nén tất cả chữ thường. Điều này làm cho việc nén zopfli hiệu quả hơn một chút và tiết kiệm 16 byte.


tail +2không làm việc cho tôi, nhưng sed 1d $0dù sao cũng tiết kiệm được một byte. Ngoài ra, vì đầu ra cho STDERR được cho phép theo mặc định, tôi không nghĩ bạn cần exit. Ngoài ra, mười byte cuối cùng của chương trình có thể được gỡ bỏ.
Dennis

@Dennis cảm ơn! Đầu ra thêm vào STDERR luôn khiến tôi cảm thấy hơi khó chịu, nhưng tôi đoán tôi nên chạy với nó.
Chấn thương kỹ thuật số

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

Hãy thử trực tuyến!

Không chính xác là giải pháp thanh lịch nhất. R có một tính năng gọn gàng trong đó stdinsẽ chuyển hướng đến tệp nguồn, vì vậy bạn có thể đặt các bộ dữ liệu (nhỏ) vào mã nguồn, lưu byte để tách chuỗi hoặc tệ hơn, xây dựng chính vectơ (tất cả các trích dẫn đó đều được bổ sung một cách vội vàng). Cùng với các nội trang để lấy mẫu ngẫu nhiên, điều này tạo ra một câu trả lời ngắn gọn.


6

Than , 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&”¶

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Chỉnh sửa: Đã lưu 19 byte bằng cách hạ thấp mọi thứ. Giải trình:

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

5

Võng mạc , 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?`

Hãy thử trực tuyến! Chỉnh sửa: Đã lưu 1 byte bằng cách nén doubtvà 1 byte bằng cách hạ thấp mọi thứ để tôi có thể nén reply. Sau đó, đã lưu 10 byte bằng cách sử dụng golfer Retina Kolmogorov của @ Leo trên văn bản cấp thấp (trùng hợp là số byte được lưu trong câu trả lời 333 byte của tôi).


323 byte bằng cách sử dụng tay golf Retina 0.8 Kolmogorov
Leo

@Leo Lưu ý rằng Retina 0.8.2 là một ngôn ngữ khác
mbomb007

@ mbomb007 Tôi biết, nhưng đối với những sự thay thế đơn giản như thế này thì nó có cùng cú pháp với Retina 1.0. Tôi chỉ chỉ ra rằng golfer Kolmogorov được viết cho một phiên bản cũ hơn của Retina nhưng nó vẫn có thể sử dụng được trong trường hợp này.
Leo

4

Dừa , 380 byte

Dừa cảng totallyhuman 's câu trả lời

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

Hãy thử trực tuyến!


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

Hàm STRING_SPLITnày chỉ khả dụng trong SQL 2016 trở lên.

Tốt nhất tôi có thể nhận được cho các phiên bản trước bằng cách sử dụng VALUES('It is certain'),('It is decidedly so'),...là 464 ký tự.

Được định dạng, để bạn có thể thấy phần làm việc:

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

NEWID() tạo một GUID mới, giả ngẫu nhiên, vì vậy đây là một cách để thực hiện sắp xếp giả ngẫu nhiên.


4

Thạch , 201 byte

-2 byte nhờ ông Xcoder. -1 byte nhờ người dùng202729.

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

Hãy thử trực tuyến!

Chết tiệt , nén của SOGL là tốt.



201 byte . Chỉ cần nối 2 ký tự cuối cùng.
dùng202729

(Ý tôi là, nối ỴXvào cuối mã để nó chọn ngẫu nhiên từ một trong số chúng)
user202729

4

05AB1E , 171 byte

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

Hãy thử trực tuyến!

Giải trình

“ ... “đẩy một chuỗi tất cả các từ cần thiết.
Một số từ được lấy trực tiếp từ từ điển 05ab1e.
Một số được viết ra bằng ascii đơn giản (như haze).
Một số được kết hợp từ điển và ascii (như do+ n't).

Sau đó, mã xử lý là:

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

Hãy thử trực tuyến! - 176 với chuyển đổi bruteforce.
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn: Tôi nghĩ đó là 182 với ,'được thêm vào.
Emigna

Ôi! Ah tôi thấy nó, vâng. Bằng cách loại bỏ đầu vào khỏi TIO của bạn, nó hơi khó hiểu một chút.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn: Đừng! Cảm ơn. Tôi không biết tôi đã để nó ở đó: P
Emigna 13/03/18

166: TIO . Thrice -1 từ việc sử dụng các từ trong từ điển mới ( ye, donha) và -2 từ việc sắp xếp danh sách theo số từ và sử dụng nén 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

Hãy thử trực tuyến!

  • 1 byte nhờ @ benj2240

Bạn có thể cạo một byte bằng ?.thay vì '.'.
benj2240

@ benj2240 wow, tôi chưa từng thấy điều đó trước đây. Rất tuyệt.
BigRon

1
Tôi đã phải đi đào tài liệu về ?chuỗi ký tự đơn
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
Tôi tìm thấy một lỗi. Bạn không thể sử dụng dấu phẩy làm dấu phân cách vì 1 trong số các câu trả lời có thể có từ Bóng ma thuật 8 có chứa dấu phẩy : As I see it, yes.
g4v3

1
Tôi khuyên bạn nên sử dụng một chữ số duy nhất làm dấu phân cách. Nó sẽ tiết kiệm 1 byte, vì các trích dẫn không còn cần thiết nữa, nhưng vẫn phải thêm một khoảng trắng để tách chữ số và split.
g4v3

1
Ngoài ra, bạn có thể bỏ qua dấu ngoặc đơn printvà lưu thêm 1 byte. Chỉ cần đặt một dấu cộng đơn trước danh sách: print((0..9)[5])sẽ trở thành 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¡Ω

Hãy thử trực tuyến!

Giải pháp khá cơ bản. Các câu trả lời có thể được nối với ký tự x (vì nó không có trong các câu trả lời) và sau đó được nén (bên trong ), 'x¡Ω tách trên x và bật một lựa chọn ngẫu nhiên.

Cảm ơn @Emigna đã chỉ ra rằng nén bảng chữ cái không thích 'hoặc, nhiều. Đã sửa lỗi bằng cách ghép chuỗi nén bằng don ', vâng .


Ý tưởng tốt đẹp để phân chia trên một nhân vật không có mặt. Thật không may, nén bảng chữ cái thay thế ,'với khoảng trắng, vì vậy đầu ra cho 2 dòng đó là sai.
Emigna

@Emigna Cảm ơn rất nhiều vì đã chỉ ra! Tôi tự hỏi liệu một bản sửa lỗi tốt hơn không tồn tại cho vấn đề này ... Tôi có thể đã sử dụng các ký tự không sử dụng khác trong các câu trả lời nhưng chỉ có hai: q và 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)];

Hãy thử trực tuyến!

Giải pháp khá thẳng về phía trước. Tách chuỗi bằng một dấu phân cách (trong trường hợp này 1) và chọn một phần tử ngẫu nhiên từ mảng.


Chào mừng đến với PPCG! Tôi đã thực hiện một số thay đổi định dạng nhỏ cho bài đăng của bạn và có một vài gợi ý nhỏ - 1, bạn cần thêm một khoảng trắng sau phpđể mã của bạn được biên dịch; 2, bạn có thể thay thế '|'bằng 1và tất cả |bằng 1-2 byte; 3 nên xem xét việc thay đổi liên kết của bạn để Dùng thử trực tuyến thành TIO.run như được cộng đồng ưa thích.
Taylor Scott

Và đây là một phiên bản làm việc dựa trên phản hồi của tôi. Hãy thử trực tuyến!
Taylor Scott

@TaylorScott Có vẻ như nó hoạt động tốt trên môi trường của tôi mà không có khoảng trống sau thẻ <? Php. Tôi đang chạy PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Không chắc chắn trong các phiên bản trước đó có vấn đề hay không. Dù bằng cách nào, tôi đã chỉnh sửa câu hỏi.
Andrew

À, nó có thể chỉ là phiên bản - Liên kết bạn cung cấp sử dụng phiên bản PHP 7.0.3 và nó không chạy trên TIO.run mà không có dung lượng
Taylor Scott

2
Bạn có thể sử dụng <?=và lặp lại phát nổ trực tiếp bằng cách sử dụng [rand(0, 19)]thay vì lần đầu tiên thêm vào một biến<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen

3

Javascript, 372 byte

-10 byte nhờ 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]

Hãy thử trực tuyến!


1
Sử dụng bitwise ORthay vì Math.floor()để lưu 7 byte : Math.random()*20|0.
Shaggy

3

Befunge

1221 870 byte (chu vi của toàn bộ trường là 33x36 30 * 29 charachters) Cảm ơn Jo King đã giúp tôi loại bỏ các null null và thúc giục tôi thay đổi bộ ngẫu nhiên.

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

Dòng trên cùng đặt ký tự '<' và vị trí x (28) nơi nó sẽ đi trên ngăn xếp. Sau đó chúng ta nhập loại trình tạo số ngẫu nhiên. Điều này có thể được cải thiện, nhưng đây là những gì tôi có thể cung cấp trong một thông báo ngắn ... Số "ngẫu nhiên" được bù để có dòng "ngẫu nhiên" thực sự để đọc.

Sau khi số ngẫu nhiên được tạo, chúng tôi đặt ký tự '<' ở dòng đó và đẩy các chữ cái trên ngăn xếp và trên dòng dưới cùng xuất chúng lại.

Chú thích; nếu bạn sử dụng trình thông dịch mà tôi đã liên kết trong tiêu đề bài đăng này, bạn phải đọc lại "Hiển thị" sau mỗi lần chạy, bởi vì việc thêm ký tự '<' vẫn còn sau khi thực thi.


1
Bạn tốt hơn nhiều khi sử dụng cùng định dạng với câu trả lời> <> của tôi. Hãy thử trực tuyến! . Như bây giờ, nó cũng in ra một loạt các byte rỗng ở cuối
Jo King

Vâng, tôi biết, tôi muốn con số ngẫu nhiên không quá thiên vị, nhưng tôi chỉ có thể sử dụng một dòng dấu hỏi.
rael_kid

Bạn ít nhất có thể đánh golf vài trăm byte khoảng trắng và thay đổi dòng cuối cùng >:#,_@để tránh in byte rỗng. Ồ, và thêm một liên kết TIO.
Jo King

Đó là sự thật, tôi sẽ đăng một bản cập nhật sau ngày hôm nay.
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)]

Hãy thử trực tuyến!

  • 41 byte nhờ vào admBorkBork!
  • 10 byte nhờ Kevin!
  • 1 byte nhờ Oliver!

2
Chắc chắn bạn có thể sử dụng String.split () để lưu một loạt byte - docs.oracle.com/javase/7/docs/api/java/lang/iêu
admBorkBork

2
Như @AdmBorkBork đã nêu, bạn có thể lưu 41 byte bằng cách sử dụng String#split. Ngoài ra, bạn có thể lưu thêm 11 byte bằng cách sử dụng (int)(Math.random()*20)thay vì new java.util.Random().nextInt(20). Và dấu chấm phẩy không được tính vào số byte cho lambdas. Vì vậy, trong tổng số: 380 byte .
Kevin Cruijssen

2
Có thêm một khoảng trống trong câu trả lời của bạn và trong golf của @ KevinCruijssen: sử dụng Don'tthay vì Don' t.
Olivier Grégoire

2

Màu đỏ , 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

Hãy thử trực tuyến!

Nó dường như không thực sự ngẫu nhiên trong TIO (mặc dù nó chỉ hoạt động tốt trong Bảng điều khiển màu đỏ), đó là lý do tại sao tôi đã thêm ngẫu nhiên / hạt giống vào tiêu đề.


2

Excel, 399 byte

=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,<>)cũng giống như CHOOSE(X,<>), không cần mộtINT

Không có nhiều golf bạn có thể làm ở đây mặc dù ...


2

Aceto , 345 + 1 = 346 byte (+1 cho -lcờ)

"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

Hãy thử trực tuyến!

Không quá thú vị, nhưng tôi không thể nghĩ bất cứ điều gì ngắn hơn trong ngôn ngữ này, không có chuỗi nén hoặc bất cứ điều gì.

"...." chuỗi đẩy cách nhau bởi dấu chấm
      '. thời kỳ nghĩa đen
        : chia theo thời gian
         Ngăn xếp Y
          đầu in


không có cờ -l có thể trông thú vị hơn.
Laura Bostan

@LauraBostan Nhưng tôi không biết đường cong
hilbert

và đó là nhiều byte hơn cho tất cả \ n
drham

1
Nhưng vâng, nó sẽ trông 'thú vị' hơn mỗi se
drham

iup ... cờ -l đã được thêm vào để chơi gôn. Tuy nhiên, tôi không thích lắm, ăn cắp toàn bộ điểm của ngôn ngữ. Có thể phiên bản tiếp theo của Aceto sẽ từ bỏ lá cờ này.
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]);}

Sử dụng một biến mod 20 chưa được khởi tạo để lập chỉ mục thành một chuỗi các chuỗi chứa tất cả các đầu ra có thể. Trình biên dịch phàn nàn rằng stdio.h không được bao gồm, nhưng nó hoạt động tốt. Có lẽ bởi vì nó chỉ xảy ra để có thư viện tiêu chuẩn được liên kết trong mọi cách. May mắn cho tôi


Đáng lưu ý về một số triển khai, một biến chưa được khởi tạo có giá trị bằng 0, vì hành vi là, không xác định. Hỏi 8 quả bóng ma thuật của bạn xem điều này có đúng trên máy của bạn không.
Orion

1

Đi, 530 byte

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

Xin lưu ý rằng, trên Sân chơi Go, vì cách hoạt động của seeding, nó luôn cho kết quả tương tự. Khi chạy trên một máy tính thông thường, mọi thứ sẽ hoạt động như bình thường.
Tôi nghĩ có thể tiết kiệm thêm một chút nhưng kiến ​​thức của tôi về Go dừng lại ở đó :)

Phiên bản được định dạng và thử nghiệm


Chào mừng đến với PPCG! Trình thông dịch Go trên Try It Online dường như sử dụng một hạt giống ngẫu nhiên.
Dennis

Tôi phải cực kỳ xui xẻo sau đó D:
Nathanael C.

Bạn đang làm mới trang? Điều đó sẽ lấy kết quả từ bộ đệm mỗi lần, vì vậy nó sẽ không thay đổi. Nhấp vào nút Run sẽ chạy lại mã.
Dennis

Tôi tiếp tục nhận được "Điều đó là chắc chắn" ngay cả sau khi có CTRL + R để làm mới cứng ... Tôi không hiểu: x
Nathanael C.

Làm mới sẽ không thay đổi kết quả; chúng được lưu trữ ở phía máy chủ. Nhấp vào nút chạy (biểu tượng phát trong vòng tròn) hoặc nhấn Ctrl-Enter.
Dennis

1

Excel-VBA, 362 341 339 byte

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

Ở đâu A1:T1 chứa các tùy chọn khác nhau. Đọc toàn bộ hàng đầu tiên của bảng thành mảng vvà lập chỉ mục một điểm ngẫu nhiên dọc theo 19 giá trị đầu tiên.

Ngạc nhiên khi thấy rằng lập chỉ mục một mảng không yêu cầu giá trị nguyên


Những lo lắng của tôi về câu trả lời của bạn cho Excel thậm chí còn nhiều hơn ở đây, vì Bảng tính được tính là STDIN cho VBA Excel, do đó, điều này gần với việc có đầu vào được xác định trước
Taylor Scott vào

0

VBA, 358 byte

Một chức năng cửa sổ ngay lập tức VBE ẩn danh không có đầu vào và đầu ra cho 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 byte

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

Dùng thử trực tuyến

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.