สร้าง Magic 8 Ball


34

เมื่อตอนเป็นเด็กเพื่อนของฉันมีลูกบอลวิเศษ 8 ลูกที่เราจะถามคำถามและดูว่าชะตากรรมของคำถามนั้นคืออะไร

ท้าทาย

ความท้าทายของคุณคือการเขียนโปรแกรม (หรือฟังก์ชั่น) ที่เมื่อรัน (หรือเรียกว่า) เอาต์พุต (หรือส่งคืน) คำตอบแบบสุ่มจากคำตอบที่เป็นไปได้ด้านล่าง (Random เป็น: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

คำตอบที่เป็นไปได้จาก Magic 8-ball คือ (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

อินพุต

ไม่มีอินพุต

เอาท์พุต

ตัวเลือกแบบสุ่มจากด้านบน กรณีไม่สำคัญ

กฎระเบียบ

ไม่อนุญาตช่องโหว่มาตรฐาน

นี่คือดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาจะชนะ!


2
ฉันเปลี่ยน "ไม่อนุญาตให้ป้อน" เป็น "ไม่มีอินพุต" บางภาษาต้องการอาร์กิวเมนต์ว่าง / null เป็นอินพุต
Rɪᴋᴇʀ

12
ฉันหรือใครบางคนกำลัง downvoting ทุกคำตอบ ??????
Dat

1
@Dat ฉันโพสต์สิ่งที่นี่ในเมตาเพื่อหารือเกี่ยวกับเรื่องนี้ ฉัน upvoted ทุกคำตอบเพราะฉันมักจะทำเพื่อหาคำตอบที่ตรงตามข้อกำหนดในคำถามของฉัน บางทีผู้ดำเนินรายการอาจแทรกแซง ...
กำลังพัฒนาผู้พัฒนา

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 / ทุกคำอยู่ในพจนานุกรม SOGL!


นี่คือคำตอบที่ยอดเยี่ยม !!!
กำลังพัฒนาผู้พัฒนา

ฉันชอบที่จะดูที่เครื่องมือบีบอัดของ SOGL แต่น่าเสียดายที่ฉันไม่พูด JavaScript :(
caird coinheringaahing

เดี๋ยวก่อน SOGL เป็นภาษาที่ใช้ JavaScript หรือไม่
Shaggy

@cairdcoinheringaahing SOGL เป็นลายลักษณ์อักษรในการประมวลผลและการบีบอัดไฟล์ที่เกี่ยวข้องที่มีที่นี่และที่นี่ แม้ว่าการประมวลผลเป็นภาษาที่ใช้ภาษาจาวา: 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) ซึ่งส่งกลับค่าสุ่มต่อจุดเริ่มต้นของล่ามหลามนับตั้งแต่https://bugs.python.org/issue13703 มันไม่ได้สุ่มสำหรับสตริงว่างแม้ว่า (เสมอ 0) ดังนั้นต้องใช้อย่างอื่นidbuiltin!

ในการดูครั้งที่สองฉันสามารถใช้idโดยตรง แต่ดูเหมือนว่าจะผลิตตัวเลขได้เสมอ IIRC id(object)ใน CPython เพิ่งส่งคืนตำแหน่งหน่วยความจำของobjectดังนั้นสิ่งนี้จึงสมเหตุสมผล บางทีถ้าฉันใช้ Jython หรือ IronPython ฉันสามารถข้ามหารด้วย 7 Anyways, hash(id)vs id(0)//7มีค่าเท่ากับ Python 3 แต่สามารถใช้/โอเปอเรเตอร์เพื่อตัดทอนการหารจำนวนเต็มใน Python 2 โดยบันทึกเป็นไบต์


13

PowerShellขนาด 354 ไบต์

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

ลองออนไลน์!

โฮครวญเพลง นำผลลัพธ์ทั้งหมดมาต่อกันพร้อมกับ0s จากนั้น-splitเปิด0เพื่อสร้างอาร์เรย์ของสตริง ส่งผ่านอาร์เรย์Get-Randomนั้นซึ่งจะสุ่มเลือกอย่างใดอย่างหนึ่ง ที่เหลืออยู่บนไปป์ไลน์


11

Python 2 , 385 ไบต์

-1 ไบต์ขอบคุณ 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('.'))

ลองออนไลน์!


22
@Downvoter ฉันขอถามได้ไหมว่าทำไมคุณถึงลงคะแนนทุกคำตอบ
มนุษย์

7
นั่นทำให้ฉันเป็นพฤติกรรมการลงคะแนนที่น่าสงสัยฉันขอแนะนำให้ตั้งค่าสถานะคำถามเพื่อให้ความสนใจของ mod เพื่อให้พวกเขาสามารถตรวจสอบได้
Shaggy

9

Applescript, 391

ฉันรักวิธี AppleScript รายการของมีsome itemวิธีการ:

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

5
อ้างถึงผู้ลงคะแนนเฉลี่ยใจกล้าในคำตอบใน 3, 2, 1 ... ไป - ฉันกล้าให้คุณเปิดเผยว่าคุณเป็นใครและอธิบายเหตุผลของการลงคะแนนเสียงของคุณ หรือคุณจะยังคงแฝงตัวอยู่ในเงามืดต่อไปโดยไม่ระบุชื่อ
บาดเจ็บทางดิจิทัล

7

ยูทิลิตี Bash + GNU, 230

  • บันทึก 15 ไบต์ด้วย @Dennis
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

เอาต์พุต zopfli แบบไบนารีไม่ได้ถูกแสดงที่นี่ แต่คุณสามารถสร้างสคริปต์ใหม่จากข้อมูลที่เข้ารหัส base64:

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

หมายเหตุตามที่อนุญาตโดยคำถามข้อมูลที่ถูกบีบอัดจะแตกตัวเป็นตัวพิมพ์เล็กทั้งหมด สิ่งนี้ทำให้การบีบอัด zopfli มีประสิทธิภาพมากขึ้นและประหยัด 16 ไบต์


tail +2ใช้งานไม่ได้สำหรับฉัน แต่sed 1d $0บันทึกเป็นไบต์ นอกจากนี้ตั้งแต่ออกไป STDERR exitที่ได้รับอนุญาตโดยค่าเริ่มต้นผมไม่คิดว่าคุณต้องการ นอกจากนี้สิบไบต์สุดท้ายของโปรแกรมสามารถลบได้
Dennis

@ เดนนิสขอบคุณ! เอาต์พุตพิเศษไปยัง 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จะเปลี่ยนเส้นทางไปยังไฟล์ต้นฉบับดังนั้นคุณสามารถใส่ชุดข้อมูล (เล็ก ๆ ) ลงในซอร์สโค้ดได้การบันทึกไบต์สำหรับการแยกสตริงหรือแย่กว่านั้นสร้างเวกเตอร์เอง พร้อมกับ builtins สำหรับการสุ่มตัวอย่างสิ่งนี้ทำให้คำตอบสั้น ๆ


6

ถ่าน , 203 184 ไบต์

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

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด แก้ไข: บันทึก 19 ไบต์โดยลดทุกอย่าง คำอธิบาย:

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

5

เรติน่า , 333 331 321 ไบต์


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

ลองออนไลน์! แก้ไข: บันทึก 1 ไบต์ด้วยการบีบอัดdoubtและ 1 ไบต์โดยลดทุกอย่างลงเพื่อให้ฉันสามารถบีบอัดreplyได้ จากนั้นบันทึก 10 ไบต์โดยใช้นักกอล์ฟ Retina Kolmogorov ของ @ Leo บนข้อความที่ลดระดับลง (ซึ่งบังเอิญคือจำนวนไบต์ที่บันทึกไว้ในคำตอบ 333- ไบต์ของฉัน)



@Leo โปรดทราบว่า Retina 0.8.2 เป็นภาษาที่แตกต่าง
mbomb007

@ mbomb007 ฉันรู้ แต่สำหรับการทดแทนอย่างง่ายเช่นนี้มันมีรูปแบบเดียวกับ Retina 1.0 ฉันเพิ่งชี้ให้เห็นว่านักกอล์ฟ Kolmogorov นั้นเขียนขึ้นสำหรับ Retina รุ่นเก่ากว่า แต่มันก็ยังใช้งานได้ในกรณีนี้
Leo

4

มะพร้าวขนาด 380 ไบต์

โคโคนัทท่าเรือtotallyhuman 's คำตอบ

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 ไบต์

-2 ไบต์ขอบคุณ Mr. Xcoder -1 ไบต์ขอบคุณ user202729

“æ⁽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ส่วนท้ายของรหัสเพื่อที่จะเลือกแบบสุ่มจากหนึ่งในนั้น)
user202729

4

05AB1E , 171 ไบต์

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

ลองออนไลน์!

คำอธิบาย

“ ... “ดันสตริงของคำที่ต้องการทั้งหมด
บางคำถูกนำมาจากพจนานุกรม 05ab1e โดยตรง
บางคนเขียนออกมาใน ascii ธรรมดา (เช่นhaze)
บางคำเป็นพจนานุกรมรวมและ ascii (เช่นdo+ n't)

จากนั้นรหัสการประมวลผลคือ:

#                 # split string on spaces to a list of words
 •8∞f{ʒβ®•        # push the number 2293515117138698
          6в      # convert to a list of base-6 numbers 
                  # ([3,4,3,2,5,5,2,2,1,4,4,3,5,3,4,4,4,4,4,2])
            £     # group the list into sublists of these sizes
             ðý   # join on spaces
               Ω  # pick one at random

ลองออนไลน์! - 176 กับการแปลง bruteforce
Magic Octopus Urn

1
@ MagicOctopusUrn: ฉันคิดว่ามันเป็น 182 ด้วย,และ'เพิ่ม
Emigna

D'โอ้! อาฉันเห็นแล้วใช่ โดยวิธีลบอินพุตจาก TIO ของคุณก็สับสนเล็กน้อย
Magic Octopus Urn

@MagicOctopusUrn: Doh! ขอบคุณ ฉันไม่ทราบว่าฉันทิ้งไว้ที่นั่น: P
Emigna

166: TIO -1 สามครั้งจากการใช้คำในพจนานุกรมใหม่ ( ye, donและha) และ -2 จากการเรียงลำดับรายการตามการนับจำนวนคำและใช้การบีบอัดเดลต้า
Grimmy

4

Ruby, 362 361 ไบต์

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

ลองออนไลน์!

  • 1 ไบต์ต้องขอบคุณ @ benj2240

คุณสามารถโกนไบต์ที่มีแทน?. '.'
benj2240

@ benj2240 ว้าวฉันไม่เคยเห็นมาก่อน เด็ดมาก
BigRon

1
ฉันต้องไปขุดหาเอกสารเกี่ยวกับ?สตริงตัวอักษรตัว
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
ฉันพบข้อผิดพลาด คุณไม่สามารถใช้เครื่องหมายจุลภาคเป็นตัวคั่นเพราะ 1 ในคำตอบที่เป็นไปได้จาก Magic 8 As I see it, yesลูกมีเครื่องหมายจุลภาค:
g4v3

1
ฉันขอแนะนำให้คุณใช้ตัวเลขตัวเดียวเป็นตัวคั่น มันจะประหยัด 1 ไบต์เป็นคำพูดที่มีความจำเป็นอีกต่อไป splitแต่เป็นพื้นที่ที่ยังคงต้องเพิ่มที่จะแยกหลักและ
g4v3

1
นอกจากนี้คุณสามารถละเว้นวงเล็บprintและบันทึกได้อีก 1 ไบต์ เพียงแค่ใส่เครื่องหมายบวกเอกก่อนที่รายการจะกลายเป็นprint((0..9)[5]) print+(0..9)[5]
g4v3

3

05AB1E , 208 217 ไบต์

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

ลองออนไลน์!

วิธีแก้ปัญหาขั้นพื้นฐานสวย คำตอบที่เป็นไปได้นั้นเชื่อมโยงกับอักขระ x (เนื่องจากไม่มีอยู่ในคำตอบ) จากนั้นบีบอัด (ภายใน ), 'x¡Ωแยกบน x และเลือกตัวเลือกแบบสุ่ม

ขอบคุณ @Emigna ที่ชี้ให้เห็นว่าการบีบอัดตัวอักษรไม่ชอบ 'หรือมากนัก แก้ไขโดยแวดล้อมไปด้วยสตริงบีบอัดด้วยสวม'และใช่


ความคิดที่ดีที่จะแยกตัวละครที่ไม่ได้อยู่ น่าเสียดายที่การบีบอัดตัวอักษรมาแทนที่,และ'มีช่องว่างดังนั้นเอาต์พุตสำหรับทั้งสองบรรทัดนั้นผิด
Emigna

@Emigna ขอบคุณมากสำหรับการชี้ให้เห็น! ฉันสงสัยว่าไม่มีการแก้ไขที่ดีกว่าสำหรับปัญหานี้หรือไม่ ... ฉันสามารถใช้ตัวละครอื่น ๆ ที่ไม่ได้ใช้ในคำตอบ แต่มีเพียงสอง: q และ x :-(
Kaldo

3

PHP , 412 385 337 384 ไบต์

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

ลองออนไลน์!

ตรงไปตรงมาแก้ปัญหา แยกสตริงด้วยตัวคั่น (ในกรณีนี้1) และเลือกองค์ประกอบแบบสุ่มจากอาร์เรย์


ยินดีต้อนรับสู่ PPCG! ฉันได้ทำการเปลี่ยนแปลงการจัดรูปแบบเล็กน้อยในโพสต์ของคุณและมีข้อเสนอแนะเล็ก ๆ น้อย ๆ - 1 คุณต้องเพิ่มช่องว่างหลังจากphpรับโค้ดของคุณเพื่อรวบรวม 2 คุณสามารถแทนที่'|'ด้วย1และทั้งหมด|ด้วย1-2 ไบต์ 3 ควรพิจารณาเปลี่ยนลิงค์ของคุณสำหรับการลองออนไลน์เป็น TIO.run ตามที่ชุมชนต้องการ
Taylor Scott

และนี่คือเวอร์ชันที่ใช้งานได้ตามความคิดเห็นของฉัน ลองออนไลน์!
เทย์เลอร์สกอตต์

@TaylorScott ดูเหมือนว่าจะทำงานได้ดีในสภาพแวดล้อมของฉันโดยไม่ต้องเว้นวรรคหลังจากแท็ก <? php PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS )ฉันทำงาน ไม่แน่ใจว่าในรุ่นก่อนหน้านี้มีความสำคัญหรือไม่ ทั้งสองวิธีฉันได้แก้ไขคำถาม
Andrew

มันอาจจะเป็นเวอร์ชั่น - ลิงค์ที่คุณให้ใช้ PHP เวอร์ชั่น 7.0.3 และมันไม่ได้รันบน TIO.run โดยไม่มีที่ว่าง
Taylor Scott

2
คุณสามารถใช้<?=และสะท้อนการระเบิดโดยตรงโดยใช้[rand(0, 19)]แทนที่จะเพิ่มลงในตัวแปรก่อน<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen

3

Javascript, 372 ไบต์

-10 ไบต์ขอบคุณ Shaggy

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

ลองออนไลน์!


1
ใช้ค่าที่เหมาะสมORแทนMath.floor()เพื่อประหยัด 7 Math.random()*20|0ไบต์:
Shaggy

3

Befunge

1221 870 ไบต์ (เส้นรอบวงของสนามทั้งหมดคือ33x36 30 * 29 ตัวอักษร) ขอบคุณ Jo King ที่ช่วยฉันลบ nulls ต่อท้ายและแนะนำให้ฉันเปลี่ยนเครื่องมือสุ่ม

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

บรรทัดบนสุดจะใส่อักขระ '<' และ x-position (28) ในตำแหน่งที่ควรวางลงบนสแต็ก จากนั้นเราจะเข้าไปในตัวสร้างตัวเลขสุ่ม นี่อาจปรับปรุงได้ แต่นี่คือสิ่งที่ฉันสามารถส่งให้กับการแจ้งเตือนสั้น ๆ ... หมายเลข "สุ่ม" จะถูกชดเชยเพื่อให้ได้บรรทัด "สุ่ม" ที่แท้จริงเพื่ออ่าน

หลังจากสร้างหมายเลขสุ่มเราใส่อักขระ '<' ที่บรรทัดนั้นแล้วกดตัวอักษรบนสแต็กและบนบรรทัดล่างออกอีกครั้ง

บันทึก; หากคุณใช้ล่ามที่ฉันลิงค์ไว้ในชื่อโพสต์นี้คุณจะต้องเลือก "แสดง" หลังจากเรียกใช้แต่ละครั้งเพราะการเพิ่มตัวอักษร '<' ยังคงอยู่หลังจากการดำเนินการ


1
คุณดีกว่ามากโดยใช้รูปแบบเดียวกับคำตอบของฉัน> <> ลองออนไลน์! . ตามที่ตอนนี้มันยังพิมพ์จำนวนไบต์ว่างท้าย
Jo King

ใช่ฉันรู้ว่าฉันต้องการให้เลขสุ่มนั้นไม่เอนเอียงเกินไป แต่ฉันอาจใช้เครื่องหมายคำถามบรรทัดเดียวก็ได้
rael_kid

คุณสามารถปิดช่องว่างอย่างน้อยสองร้อยไบต์และเปลี่ยนบรรทัดสุดท้ายเป็น>:#,_@เพื่อหลีกเลี่ยงการพิมพ์ว่างเป็นไบต์ โอ้แล้วเพิ่มลิงค์ TIO
Jo King

เป็นเรื่องจริงฉันจะโพสต์อัปเดตในวันนี้
rael_kid

3

Java 8 , 433 , 392 , 380 , 379 ไบต์

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

ลองออนไลน์!

  • 41 ไบต์ขอบคุณ AdmBorkBork!
  • 10 ไบต์ขอบคุณเควิน!
  • 1 ไบต์ต้องขอบคุณโอลิเวอร์!

2
แน่นอนคุณสามารถใช้ String.split () เพื่อบันทึกจำนวนไบต์ - docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork

2
ในฐานะที่เป็น@AdmBorkBorkกล่าวคุณสามารถบันทึก 41 String#splitไบต์ใช้ นอกจากนี้คุณยังสามารถบันทึกเพิ่มเติม 11 ไบต์ใช้แทน(int)(Math.random()*20) new java.util.Random().nextInt(20)และเซมิโคลอนนั้นไม่นับรวมกับจำนวนไบต์สำหรับลูกแกะ ดังนั้นในการทั้งหมด: 380 ไบต์
Kevin Cruijssen

2
การใช้งาน: มีพื้นที่พิเศษในคำตอบของคุณและใน @ กอล์ฟ KevinCruijssen ของเป็นแทนDon't Don' t
Olivier Grégoire

2

สีแดง 367 ไบต์

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

ลองออนไลน์!

ดูเหมือนจะไม่ค่อยสุ่มใน TIO (แม้ว่ามันจะใช้ได้ดีใน Red Console) นั่นคือเหตุผลที่ฉันเพิ่มการสุ่ม / การเพาะลงในส่วนหัว


2

Excel, 399 ไบต์

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

เนื่องจากCHOOSE(X.Y,<>)เป็นเช่นเดียวกับCHOOSE(X,<>)ไม่จำเป็นต้องมีINT

คุณไม่สามารถเล่นกอล์ฟได้ที่นี่ ...


2

Aceto , 345 + 1 = 346 ไบต์ (+1 สำหรับการ-lตั้งค่าสถานะ)

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

ลองออนไลน์!

ไม่น่าสนใจมากเกินไป แต่ฉันไม่สามารถคิดอะไรที่สั้นกว่าในภาษานี้ไม่มีสตริงที่บีบอัดหรืออะไร

".... " ดันสตริงคั่นด้วยจุด
      ' ระยะเวลาตามตัวอักษร
        : แยกตามช่วงเวลา
         Y shuffle stack
          p พิมพ์ด้านบน


หากไม่มีแฟล็ก -l อาจดูน่าสนใจกว่านี้
Laura Bostan

@LauraBostan แต่ฉันไม่ทราบว่าฮิลแบร์ตโค้งประเภทที่ผ่านมา 3
drham

และมันก็เป็นไบต์สำหรับ \ n
drham ทั้งหมด

1
แต่ใช่มันจะดูน่าสนใจยิ่งขึ้นต่อ se
drham

iup ... เพิ่มแฟล็ก -l สำหรับการเล่นกอล์ฟ อย่างไรก็ตามฉันไม่ชอบมันมากขโมยภาษาทั้งหมดไปในราคาถูก อาจจะเป็นรุ่นต่อไปของ Aceto จะยอมแพ้ธงนี้
Laura Bostan

1

C - 426 ไบต์

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

ใช้ตัวแปร uninitialized mod 20 เพื่อทำดัชนีลงในอาร์เรย์ของสตริงที่มีเอาต์พุตที่เป็นไปได้ทั้งหมด คอมไพเลอร์บ่นว่า stdio.h ไม่ได้รวมอยู่ แต่ใช้งานได้ อาจเป็นเพราะมันเกิดขึ้นกับการเชื่อมต่อไลบรารี่มาตรฐานเข้าด้วยกัน ฉันโชคดี.


น่าสังเกตว่าการใช้งานบางอย่างตัวแปร uninitialized มีค่าเป็น 0 เนื่องจากพฤติกรรมดีไม่ได้กำหนด ถามมายากล 8 ลูกของคุณว่าสิ่งนี้เป็นจริงในเครื่องของคุณหรือไม่
Orion

1

ไป 530 ไบต์

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

โปรดทราบว่าบนสนามเด็กเล่นไปเพราะวิธีการเพาะเมล็ดมันให้ผลเหมือนกันเสมอ เมื่อทำงานกับคอมพิวเตอร์ทั่วไปทุกอย่างทำงานได้ตามปกติ
ฉันคิดว่าเป็นไปได้ที่จะประหยัดอีกเล็กน้อย แต่ความรู้ใน Go หยุดตรงนั้น :)

เวอร์ชันที่จัดรูปแบบและทดสอบได้


ยินดีต้อนรับสู่ PPCG! ล่ามไปลองมันออนไลน์ดูเหมือนว่าจะใช้เมล็ดพันธุ์แบบสุ่ม
Dennis

ฉันจะต้องเป็นคนที่โชคร้ายมาก D:
นาธานาเอลซี.

คุณกำลังรีเฟรชหน้า? ที่จะดึงผลลัพธ์จากแคชทุกครั้งดังนั้นมันจะไม่เปลี่ยนแปลง การคลิกปุ่มเรียกใช้จะเรียกใช้รหัสอีกครั้ง
Dennis

ฉันได้รับ "แน่นอน" แม้หลังจากใช้ CTRL + R เพื่อรีเฟรชอย่างหนัก ... ฉันไม่เข้าใจ: x
Nathanael C.

การรีเฟรชจะไม่เปลี่ยนผลลัพธ์ มันถูกแคชไว้ที่ฝั่งเซิร์ฟเวอร์ คลิกปุ่มเรียกใช้ (ไอคอนเล่นในวงกลม) หรือกด Ctrl-Enter
Dennis

1

Excel-VBA, 362 341 339 ไบต์

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

A1:T1มีตัวเลือกต่าง ๆอยู่ที่ไหน อ่านแถวแรกของชีตทั้งหมดลงในอาร์เรย์vและทำดัชนีจุดสุ่มตามค่า 19 รายการแรก

ประหลาดใจที่พบว่าการทำดัชนีอาร์เรย์ไม่ต้องการค่าจำนวนเต็ม


ความกังวลของฉันเกี่ยวกับคำตอบของคุณสำหรับ Excel มีมากขึ้นที่นี่เนื่องจากแผ่นงานถูกนับเป็น STDIN สำหรับ Excel VBA ดังนั้นสิ่งนี้จึงใกล้เคียงกับการป้อนข้อมูลที่กำหนดไว้ล่วงหน้า
Taylor Scott

0

VBA, 358 ไบต์

ฟังก์ชันหน้าต่าง VBE ที่ไม่ระบุชื่อแบบทันทีที่ไม่รับอินพุตและเอาต์พุตไปยัง STDOUT

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

-1

Java 8, 379 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)]

ลองออนไลน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.