Erschaffe einen Magic 8 Ball

34

Als Kind hatte mein Freund eine magische Kugel , bei der wir Fragen stellten und das Schicksal dieser Frage erkannten.

Herausforderung

Ihre Herausforderung besteht darin, ein Programm (oder eine Funktion) zu schreiben, das beim Ausführen (oder Aufrufen) eine zufällige Antwort aus den folgenden möglichen Antworten ausgibt (oder zurückgibt). (Random sein: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Die möglichen Antworten vom Magic 8-Ball sind (ohne Berücksichtigung der Groß- und Kleinschreibung):

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

Eingang

Keine Eingabe.

Ausgabe

Eine zufällige Auswahl von oben. Fall spielt keine Rolle.

Regeln

Standardlücken sind nicht erlaubt.

Das ist , also gewinnt der kürzeste Code in Bytes für jede Sprache!

Entwicklungsentwickler
quelle
2
Ich habe "keine Eingabe erlaubt" in "keine Eingabe" geändert. Einige Sprachen erfordern leere / Null-Argumente als Eingaben.
7.
12
Bin es ich oder stimmt jemand jede Antwort runter ??????
Dat
1
@Dat Ich habe hier etwas in Meta gepostet , um dies zu diskutieren. Ich habe jede Antwort positiv bewertet, wie immer für Antworten, die die Anforderungen meiner Fragen erfüllen. Vielleicht greift ein Moderator ein ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 Mein Lieblingskommentar, den ich bisher bei PPCG gesehen habe!
DevelopingDeveloper

Antworten:

22

SOGL V0.12 , 166 Bytes

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

Probieren Sie es hier aus!

\ o / jedes Wort war im SOGL-Wörterbuch!

dzaima
quelle
Das ist eine großartige Antwort !!!
DevelopingDeveloper
Ich würde gerne einen Blick auf die Kompressionsmaschine von
SOGL werfen
Warten Sie, SOGL ist eine JavaScript-basierte Sprache?
Shaggy
@cairdcoinheringaahing SOGL ist in Processing geschrieben, und die relevanten Komprimierungsdateien sind hier und hier . Obwohl Processing eine Java-basierte Sprache ist: p
dzaima
18

> <> 438 Bytes

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"

Probieren Sie es online!

Nicht so interessant, aber ich denke, es ist die erste Antwort, bei der die Zufälligkeit nicht einheitlich ist. Ich habe alle negativen Nachrichten als unwahrscheinlich eingestuft :)

Einige Erklärungen:

Der Zeiger beginnt in der ersten Zeile nach rechts zu gehen. xändert den Zeiger in eine zufällige Himmelsrichtung. Wenn es rauf oder runter geht, trifft es einfach auf ein anderes x. Wenn es richtig läuft, prallt es ab |und trifft dasselbe x. Wenn es nach links geht, wird es umgebrochen und der Text dieser Zeile wird auf den Stapel verschoben. Die meisten Linien treffen dann dieselbe Spur, ^deren Richtung sich nach oben ändert. Dies durchläuft odie erste Zeile, die den Stapel ausgibt, bis er leer ist. Der Sonderfall ist die YepLinie, die |o<stattdessen die horizontale Schleife hat .

Scherzen
quelle
7
Ich werde dieses verwenden. Es gibt (fast) immer eine positive Antwort. Leider riecht die Antwort auch fischig ...
Suppen
15

Python 2, 369 368 Bytes

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 Bytes

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

Ich habe zuvor das hashBuilt-In für index ( hash(id)%20) verwendet, das einen zufälligen Wert pro Start des Python-Interpreters seit https://bugs.python.org/issue13703 zurückgibt . Es ist jedoch kein Zufall für die leere Zeichenfolge (immer 0), Sie müssen also etwas anderes verwenden, das ideingebaute!

Auf den zweiten Blick könnte ich iddirekt verwenden, aber es scheint immer gerade Zahlen zu produzieren. IIRC gibt id(object)in CPython nur den Speicherort von zurück object, dies ist also sinnvoll. Wenn ich Jython oder IronPython verwenden würde, könnte ich die Division durch 7 überspringen. Trotzdem ist hash(id)vs id(0)//7in Python 3 gleich, kann aber den /Operator zum Abschneiden der Ganzzahldivision in Python 2 verwenden und ein Byte speichern.

Nick T
quelle
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

Probieren Sie es online!

Ho-hum. Nimmt alle Ergebnisse zusammen mit 0s und setzt sie dann -splitfort 0, um ein Array von Zeichenfolgen zu erstellen. Übergibt das Array, an Get-Randomdas zufällig eines ausgewählt wird. Das bleibt in der Pipeline und die Ausgabe ist implizit.

AdmBorkBork
quelle
11

Python 2 , 385 Bytes

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

Probieren Sie es online!

total menschlich
quelle
22
@Downvoter, darf ich fragen, warum Sie jede Antwort abgelehnt haben?
Totalhuman
7
Das scheint mir verdächtiges Abstimmungsverhalten zu sein. Ich würde vorschlagen, die Frage für die Aufmerksamkeit eines Mods zu markieren, damit sie nachforschen können.
Shaggy
9

Applescript, 391

Ich finde es toll, wie AppleScript-Listen eine some itemMethode haben:

{"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
Digitales Trauma
quelle
5
Zeigen Sie den boshaften Abwähler aller Antworten in 3, 2, 1 auf ... Ich wage es, Ihnen mitzuteilen, wer Sie sind, und Ihre Gründe für die Abwägung zu erläutern. Oder lauern Sie weiterhin anonym im Schatten?
Digital Trauma
7

Bash + GNU-Dienstprogramme, 230

  • 15 Bytes gespart dank @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

Die binäre zopfli-Ausgabe ist hier nicht gut dargestellt; Stattdessen können Sie das Skript aus Base64-codierten Daten rekonstruieren:

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

Beachten Sie, dass die komprimierten Daten, wie in der Frage angegeben, in Kleinbuchstaben dekomprimiert werden. Dies macht die Zopfli-Komprimierung ein bisschen effizienter und spart 16 Bytes.

Digitales Trauma
quelle
tail +2funktioniert bei mir nicht, sed 1d $0speichert aber trotzdem ein byte. Da die Ausgabe nach STDERR standardmäßig zulässig ist, brauchen Sie das nicht exit. Auch die letzten zehn Bytes des Programms können entfernt werden.
Dennis
@ Tennis danke! Durch die zusätzliche Ausgabe in STDERR fühle ich mich immer etwas unwohl, aber ich denke, ich sollte damit rennen.
Digital Trauma
6

R , 360 Bytes

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

Probieren Sie es online!

Nicht gerade die eleganteste Lösung. R hat eine nette Funktion stdin, mit der Sie in die Quelldatei umleiten können, sodass Sie (kleine) Datensätze in den Quellcode einfügen, Bytes für die Aufteilung von Zeichenfolgen oder schlimmer noch speichern und den Vektor selbst konstruieren können (all diese Anführungszeichen summieren sich in Eile). Zusammen mit den integrierten Funktionen für die Zufallsstichprobe ist dies eine kurze Antwort.

Giuseppe
quelle
6

Kohle , 203 184 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: 19 Bytes gespart, indem alles gesenkt wird. Erläuterung:

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

Retina , 333 331 321 Bytes


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

Probieren Sie es online! Bearbeiten: 1 Byte durch Komprimieren doubtund 1 Byte durch Reduzieren von allem gespeichert, damit ich komprimieren kann reply. Dann speicherte ich 10 Bytes, indem ich @ Leos Retina Kolmogorov-Golfer für den Kleinbuchstaben verwendete (das ist zufällig die Anzahl der Bytes, die in meiner 333-Byte-Antwort gespeichert wurden).

Neil
quelle
@Leo Beachten Sie, dass Retina 0.8.2 eine andere Sprache ist
mbomb007
@ mbomb007 Ich weiß, aber für einfache Ersetzungen wie diese hat es die gleiche Syntax wie Retina 1.0. Ich habe nur darauf hingewiesen, dass der Kolmogorov-Golfer für eine ältere Version von Retina geschrieben wurde, aber in diesem Fall immer noch verwendbar ist.
Leo
4

Kokosnuss , 380 Bytes

Coconut Hafen von totallyhuman ‚s Antwort

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

Probieren Sie es online!

ovs
quelle
4

T-SQL, 393 Bytes

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

Die Funktion STRING_SPLITist nur in SQL 2016 und höher verfügbar.

Das Beste, was ich für frühere Versionen mit VALUES('It is certain'),('It is decidedly so'),...464 Zeichen bekommen konnte.

Formatiert, damit Sie den Arbeitsteil sehen können:

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

NEWID() generiert eine neue, pseudozufällige GUID, so dass eine pseudozufällige Sortierung möglich ist.

BradC
quelle
4

Jelly , 201 Bytes

-2 Bytes dank Mr. Xcoder. -1 Byte dank 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

Probieren Sie es online!

Verdammt , die Komprimierung von SOGL ist gut.

total menschlich
quelle
202 Bytes
Mr. Xcoder
201 Bytes . Fügen Sie einfach die 2 letzten Zeichen hinzu.
user202729
(Ich meine, ỴXan das Ende des Codes anhängen , damit er zufällig aus einem davon auswählt)
user202729
4

05AB1E , 171 Bytes

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

Probieren Sie es online!

Erläuterung

“ ... “Drückt eine Zeichenfolge aller erforderlichen Wörter.
Einige Wörter stammen direkt aus dem 05ab1e-Wörterbuch.
Einige sind in einfachen ASCII (wie haze) geschrieben.
Einige sind kombiniertes Wörterbuch und ASCII (wie do+ n't).

Dann lautet der Verarbeitungscode:

#                 # split string on spaces to a list of words
 •8∞f{ʒβ®•        # push the number 2293515117138698
          6в      # convert to a list of base-6 numbers 
                  # ([3,4,3,2,5,5,2,2,1,4,4,3,5,3,4,4,4,4,4,2])
            £     # group the list into sublists of these sizes
             ðý   # join on spaces
               Ω  # pick one at random
Emigna
quelle
Probieren Sie es online! - 176 mit Bruteforce-Konvertierung.
Magic Octopus Urn
1
@MagicOctopusUrn: Ich denke, es ist 182 mit ,und 'fügte hinzu.
Emigna
D'oh! Ah ich sehe es ja. Übrigens, entfernen Sie den Eingang von Ihrem TIO, es ist ein wenig verwirrend.
Magic Octopus Urn
@MagicOctopusUrn: Doh! Vielen Dank. Ich wusste nicht, dass ich das dort gelassen hatte: P
Emigna
166: TIO . Dreimal -1 ye, wenn neue Wörterbuchwörter (,, donund ha) verwendet werden, und zweimal -2, wenn die Liste nach Wortanzahl sortiert wird und Delta-Komprimierung verwendet wird.
Grimmy
4

Ruby, 362 361 Bytes

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

Probieren Sie es online!

  • 1 Byte danke an @ benj2240
BigRon
quelle
Sie können ein Byte mit abrasieren ?.statt '.'.
benj2240
@ benj2240 wow, das hatte ich noch nie gesehen. Sehr cool.
BigRon
1
Ich musste nach der Dokumentation für dieses ?einzelne Zeichenfolgen-Literal
suchen
3

Python 3, 386 Bytes

from random import*
lambda:choice("It is certain;It is decidedly so;Without a doubt;Yes definitely;You may rely on it;As I see it, yes;Most likely;Outlook good;Yep;Signs point to yes;Reply hazy try again;Ask again later;Better not tell you now;Cannot predict now;Concentrate and ask again;Don't count on it;My reply is no;My sources say no;Outlook not so good;Very doubtful".split(';'))
Dat
quelle
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])
Fliegender Wal
quelle
2
Ich habe einen Fehler gefunden. Sie können nicht durch Komma als Trennzeichen, weil 1 der möglichen Antworten von der Magie 8-Ball enthält ein Komma verwenden: As I see it, yes.
g4v3
1
Ich würde vorschlagen, dass Sie eine einzelne Ziffer als Trennzeichen verwenden. Es würde 1 Byte sparen, da die Anführungszeichen nicht mehr benötigt werden, es muss jedoch noch ein Leerzeichen hinzugefügt werden, um die Ziffern und voneinander zu trennen split.
g4v3
1
Sie können auch die Klammer weglassen printund 1 weiteres Byte speichern. Setzen Sie einfach ein unäres Pluszeichen vor die Liste: print((0..9)[5])würde werden print+(0..9)[5].
g4v3
3

05AB1E , 208 217 Bytes

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

Probieren Sie es online!

Ziemlich einfache Lösung. Die möglichen Antworten werden mit dem Zeichen x verkettet (da es in den Antworten nicht vorhanden ist) und dann komprimiert (innerhalb von ). 'X¡Ω wird auf x aufgeteilt und eine zufällige Auswahl getroffen.

Vielen Dank an @Emigna für den Hinweis, dass die Alphabet-Komprimierung 'oder' nicht gut gefällt. Behoben durch Umgeben der komprimierten Zeichenkette mit don ' und , yes .

Kaldo
quelle
Schöne Idee, sich über einen nicht anwesenden Charakter zu trennen. Leider Alphabet ersetzt Kompression ,und 'ist mit Leerzeichen, so dass der Ausgang für die 2 Zeilen falsch.
Emigna
@Emigna Vielen Dank für den Hinweis! Ich frage mich, ob es für dieses Problem keine bessere Lösung gibt ... Ich hätte andere nicht verwendete Zeichen in den Antworten verwenden können, aber es gibt nur zwei: q und 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)];

Probieren Sie es online!

Ziemlich einfache Lösung. Teilen Sie den String durch ein Trennzeichen (in diesem Fall 1) und wählen Sie ein zufälliges Element aus dem Array aus.

Andrew
quelle
Willkommen bei PPCG! Ich habe einige geringfügige Formatierungsänderungen an Ihrem Beitrag vorgenommen und ein paar kleine Vorschläge gemacht: 1. Fügen Sie nachher ein Leerzeichen hinzu php, damit der Code kompiliert werden kann. 2, Sie können '|'mit 1und alle |mit 1für -2 Bytes ersetzen ; 3 sollte in Betracht ziehen, Ihren Link für "Online-Test" auf TIO.run zu ändern, wie dies von der Community bevorzugt wird.
Taylor Scott
Und hier ist eine funktionierende Version, die auf meinem Feedback basiert. Probieren Sie es online!
Taylor Scott
@TaylorScott Es scheint in meiner Umgebung ohne das Leerzeichen nach dem <? Php-Tag gut zu funktionieren. Ich renne PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Ich bin mir nicht sicher, ob es in früheren Versionen darauf ankommt oder nicht. In jedem Fall habe ich die Frage bearbeitet.
Andrew
Ahh, es kann nur die Version sein - Der von Ihnen bereitgestellte Link verwendet PHP Version 7.0.3 und läuft nicht auf TIO.run ohne Leerzeichen
Taylor Scott
2
Sie können <?=die Explosion auch direkt verwenden und wiedergeben, [rand(0, 19)]anstatt sie zuerst zu einer Variablen hinzuzufügen<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen,
3

Javascript, 372 Bytes

-10 Bytes dank 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]

Probieren Sie es online!

SuperStormer
quelle
1
Verwenden bitweise ORstatt Math.floor()7 Byte zu speichern: Math.random()*20|0.
Shaggy
3

Befunge

1221 870 Bytes (Umfang des gesamten Feldes ist 33 x 36 30 * 29 Zeichen) Vielen Dank an Jo King, der mir geholfen hat, die nachgestellten Nullen zu entfernen, und mich aufgefordert hat, den Zufallsgenerator zu ändern.

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

In der obersten Zeile werden das Zeichen "<" und die x-Position (28) dort platziert, wo sie auf dem Stapel abgelegt werden sollen. Dann geben wir die Art des Zufallsgenerators ein. Dies könnte verbessert werden, aber das ist, was ich kurzfristig liefern könnte ... Die "Zufalls" -Zahl wird versetzt, um die tatsächliche "Zufalls" -Zeile zum Lesen zu bringen.

Nachdem die Zufallszahl generiert wurde, setzen wir das Zeichen '<' in diese Zeile und drücken die Buchstaben auf dem Stapel und geben sie in der untersten Zeile erneut aus.

Hinweis; Wenn Sie den Interpreter verwenden, den ich in diesem Beitragstitel verlinkt habe, müssen Sie nach jedem Lauf erneut auf "Anzeigen" klicken, da das Hinzufügen des Zeichens "<" nach der Ausführung erhalten bleibt.

rael_kid
quelle
1
Sie sind viel besser dran, wenn Sie dasselbe Format wie meine> <> Antwort verwenden. Probieren Sie es online! . Wie es jetzt ist, gibt es am Ende auch ein paar Null-Bytes aus
Jo King
Ja, ich weiß, ich wollte, dass das Zufallszahlen-Ding nicht zu voreingenommen ist, aber ich hätte auch nur eine einzige Zeile Fragezeichen verwenden können.
Rael_kid
Sie können mindestens ein paar hundert Bytes Whitespace entfernen und die letzte Zeile so ändern >:#,_@, dass keine Nullbytes gedruckt werden. Oh, und fügen Sie einen TIO-Link hinzu.
Jo King
Das stimmt, ich werde heute ein Update veröffentlichen.
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)]

Probieren Sie es online!

  • 41 Bytes dank AdmBorkBork!
  • 10 Bytes danke an Kevin!
  • 1 Byte Danke an Oliver!
Entwicklungsentwickler
quelle
2
Sicherlich können Sie String.split () verwenden, um eine Reihe von Bytes zu speichern - docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork
2
Wie @AdmBorkBork sagte, können Sie mit 41 Bytes sparen String#split. Sie können auch zusätzliche 11 Bytes mit (int)(Math.random()*20)anstelle von speichern new java.util.Random().nextInt(20). Und das Semikolon wird bei Lambdas nicht mitgezählt. Also insgesamt: 380 Bytes .
Kevin Cruijssen
2
In Ihrer Antwort und in @ KevinCruijssens Golf steht ein zusätzliches Leerzeichen: Verwenden Sie Don'tanstelle von Don' t.
Olivier Grégoire
2

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

Probieren Sie es online!

Es scheint in TIO nicht wirklich zufällig zu sein (obwohl es in der roten Konsole gut funktioniert), deshalb habe ich dem Header einen Zufallsgenerator hinzugefügt.

Galen Ivanov
quelle
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")

Da CHOOSE(X.Y,<>)ist das gleiche wie CHOOSE(X,<>), keine Notwendigkeit für eineINT

Hier kann man allerdings nicht viel Golf spielen ...

Chronozid
quelle
2

Aceto , 345 + 1 = 346 Bytes (+1 für -lFlag)

"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

Probieren Sie es online!

Nicht sonderlich interessant, aber ich kann mir nichts kürzeres in dieser Sprache vorstellen, keine komprimierten Strings oder so.

"...." durch Punkte getrennte Zeichenfolgen drücken
      '. wörtliche Periode
        : aufgeteilt nach Zeitraum
         Y mische Stapel
          p oben drucken

drham
quelle
ohne das -l Flag könnte das interessanter aussehen.
Laura Bostan
@LauraBostan Aber ich weiß nicht, Hilbert Kurven nach Typ 3
Drham
und es sind mehr Bytes für alle \ n
drham
1
Aber ja, es würde per se "interessanter" aussehen
drham
iup ... die -l Flagge wurde zum Golfen hinzugefügt. Allerdings bin ich nicht sehr gern, stiehlt billig den ganzen Sinn der Sprache. Vielleicht gibt die nächste Version von Aceto diese Flagge auf.
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]);}

Verwendet eine nicht initialisierte Variable mod 20, um ein Array von Zeichenfolgen zu indizieren, das alle möglichen Ausgaben enthält. Compiler beschweren sich, dass stdio.h nicht enthalten ist, aber es funktioniert. Wahrscheinlich, weil es einfach so ist , dass die Standardbibliothek sowieso verlinkt ist. Ich Glückspilz.

Orion
quelle
Bei einigen Implementierungen ist zu beachten, dass eine nicht initialisierte Variable den Wert 0 hat, da das Verhalten nicht definiert ist. Fragen Sie Ihren magischen 8-Ball, ob dies auf Ihrer Maschine zutrifft.
Orion
1

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

Bitte beachten Sie, dass auf dem Go-Spielplatz aufgrund der Funktionsweise von Seeding immer das gleiche Ergebnis erzielt wird. Wenn auf einem normalen Computer ausgeführt wird, funktioniert alles so, wie es sollte.
Ich denke, es ist möglich, ein bisschen mehr zu sparen, aber mein Wissen in Go hört dort auf :)

Formatierte und testbare Version

Nathanael C.
quelle
Willkommen bei PPCG! Der Go-Interpreter bei Try It Online scheint einen zufälligen Startwert zu verwenden.
Dennis
Ich muss schrecklich Pech haben, dann D:
Nathanael C.
Aktualisieren Sie die Seite? Dadurch wird das Ergebnis jedes Mal aus dem Cache abgerufen, sodass es sich nicht ändert. Durch Klicken auf die Schaltfläche Ausführen wird der Code erneut ausgeführt.
Dennis
Ich bekomme immer wieder "Es ist sicher", auch nachdem ich mit STRG + R eine harte Aktualisierung durchgeführt habe ... Ich verstehe es nicht: x
Nathanael C.
Durch die Aktualisierung wird das Ergebnis nicht geändert. Sie werden serverseitig zwischengespeichert. Klicken Sie auf die Schaltfläche Ausführen (Wiedergabesymbol in einem Kreis) oder drücken Sie Strg-Enter.
Dennis
1

Excel-VBA, 362 341 339 Bytes

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

Wobei A1:T1die verschiedenen Optionen enthalten sind. Liest die gesamte erste Blattreihe in ein Array vund indiziert einen zufälligen Punkt entlang der ersten 19 Werte.

Überrascht, dass für die Indizierung eines Arrays keine ganzzahligen Werte erforderlich sind

Greedo
quelle
Meine Bedenken hinsichtlich Ihrer Antwort für Excel sind umso größer, als das Arbeitsblatt als STDIN für Excel VBA gezählt wird. Dies ist also näher an einer vorher festgelegten Eingabe
Taylor Scott
0

VBA, 358 Bytes

Eine anonyme VBE-Direktfensterfunktion, die keine Ein- und Ausgaben für STDOUT akzeptiert.

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

Probieren Sie es online aus

Twometer
quelle