Créer une Magic 8 Ball

34

Enfant, mon ami avait un ballon magique auquel on posait des questions et voyait quel était le sort de cette question.

Défi

Votre défi consiste à écrire un programme (ou une fonction) qui, une fois lancé (ou appelé), génère (ou renvoie) une réponse aléatoire parmi les réponses possibles ci-dessous. (Être aléatoire: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Les réponses possibles du Magic 8-ball sont (insensibles à la casse):

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

Contribution

Pas d'entrée.

Sortie

Un choix aléatoire d'en haut. Le cas n'a pas d'importance.

Règles

Les failles standard ne sont pas autorisées.

C'est du , donc le code le plus court en octets pour chaque langue gagne!

DevelopingDeveloper
la source
2
J'ai remplacé "aucune entrée autorisée" par "aucune entrée", certaines langues requièrent des arguments vierges / nuls comme entrées.
Rɪᴋᴇʀ
12
Est-ce moi ou quelqu'un est en désaccord chaque réponse ??????
Dat
1
@Dat j'ai posté quelque chose ici dans meta pour en discuter. J'ai voté chaque réponse, comme je le fais toujours pour les réponses qui répondent aux exigences de mes questions. Peut-être qu'un modérateur interviendra ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 Mon commentaire préféré que j'ai vu sur PPCG jusqu'à présent!
DevelopingDeveloper

Réponses:

22

SOGL V0.12 , 166 octets

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

Essayez-le ici!

\ o / chaque mot était dans le dictionnaire SOGL!

dzaima
la source
C'est une réponse géniale !!!
DevelopingDeveloper
J'adorerais jeter un coup d'œil au moteur de compression de SOGL, mais malheureusement, je ne parle pas JavaScript :(
caird coinheringaahing
Attendez, SOGL est un langage basé sur JavaScript?
Shaggy
@cairdcoinheringaahing SOGL est écrit en traitement, et les fichiers de compression pertinents sont ici et ici . Bien que Processing soit un langage basé sur Java: p
dzaima
18

> <> , 438 octets

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"

Essayez-le en ligne!

Ce n'est pas intéressant, mais je pense que c'est la première réponse où le caractère aléatoire n'est pas uniforme. Je mets tous les messages négatifs comme les moins probables :)

Quelques explications:

Le pointeur commence à aller directement à la première ligne. xchange le pointeur en direction cardinale aléatoire. S'il monte ou descend, il en rencontre un autre x. Si tout va bien, il rebondit |et frappe le même x. Si elle va à gauche, elle tourne et pousse le texte de cette ligne dans la pile. La plupart des lignes atteignent alors la même piste, ^ce qui modifie la direction vers le haut. Cela boucle osur la première ligne, qui sort la pile jusqu’à ce qu’elle soit vide. Le cas particulier est la Yepligne, qui a la boucle horizontale à la |o<place.

Jo King
la source
7
Je vais utiliser celui-ci. Cela donne (presque) toujours une réponse positive. Malheureusement, la réponse sent aussi le poisson ...
Suppen,
15

Python 2, 369 368 octets

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 octets

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

J'utilisais précédemment l' hashindex intégré to index ( hash(id)%20), qui renvoie une valeur aléatoire au début de l'interpréteur Python depuis https://bugs.python.org/issue13703 . Cependant, ce n'est pas aléatoire pour la chaîne vide (toujours 0), il faut donc utiliser autre chose, la commande idintégrée!

À la deuxième recherche, je pourrais utiliser iddirectement, mais il semble toujours produire des nombres pairs. IIRC, id(object)dans CPython , ne fait que renvoyer l'emplacement mémoire de object, alors c'est logique. Peut-être que si j'utilisais Jython ou IronPython, je pourrais sauter la division par 7. Quoi qu'il en soit, hash(id)vs id(0)//7est égal en Python 3, mais peut utiliser l' /opérateur pour tronquer une division entière en Python 2, en sauvegardant un octet.

Nick T
la source
13

PowerShell , 354 octets

"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

Essayez-le en ligne!

Ho-hum. Prend tous les résultats, concaténés avec 0s, puis -splits 0pour créer un tableau de chaînes. Passe le tableau sur Get-Randomlequel l’un d’entre eux sera sélectionné aléatoirement. Cela reste sur le pipeline et la sortie est implicite.

AdmBorkBork
la source
11

Python 2 , 385 octets

-1 octet grâce à 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('.'))

Essayez-le en ligne!

totalement humain
la source
22
@Downvoter, puis-je vous demander pourquoi vous avez voté contre chaque réponse?
totalement humain
7
Cela me semble un comportement de vote suspect, je suggérerais de signaler la question à l'attention d'un mod afin qu'il puisse enquêter.
Shaggy
9

Applescript, 391

J'aime la façon dont les listes AppleScript ont une some itemméthode:

{"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
Trauma numérique
la source
5
Indiquez les réponses négatives de toutes les réponses en 3, 2, 1 ... Allez-y - Je vous mets au défi de révéler qui vous êtes et d'expliquer votre raisonnement. Ou allez-vous continuer à cacher anonymement dans l'ombre?
Trauma numérique
7

Utilitaires Bash + GNU, 230

  • 15 octets sauvés grâce à @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

La sortie binaire zopfli n'est pas bien représentée ici; à la place, vous pouvez reconstruire le script à partir de données codées en base64:

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

Notez que, comme le permet la question, les données compressées sont décompressées en minuscules. Cela rend la compression zopfli un peu plus efficace et économise 16 octets.

Trauma numérique
la source
tail +2ne fonctionne pas pour moi, mais sed 1d $0enregistre un octet de toute façon. De plus, comme la sortie vers STDERR est autorisée par défaut, je ne pense pas que vous ayez besoin de exit. En outre, les dix derniers octets du programme peuvent être supprimés.
Dennis
@ Dennis merci! Les sorties supplémentaires vers STDERR me rendent toujours un peu inconfortable, mais je suppose que je devrais courir avec.
Trauma numérique
6

R , 360 octets

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

Essayez-le en ligne!

Pas exactement la solution la plus élégante. R possède une fonctionnalité stdinintéressante permettant de rediriger le fichier vers le fichier source. Vous pouvez ainsi insérer de (petits) ensembles de données dans le code source, en économisant des octets pour le fractionnement de chaînes ou pire, en construisant le vecteur lui-même (toutes ces citations s'additionnent rapidement). En plus des fonctions intégrées pour l'échantillonnage aléatoire, cela donne une réponse courte.

Giuseppe
la source
6

Charbon de bois , 203 184 octets

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

Essayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: 19 octets enregistrés en mettant en minuscule tout. Explication:

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

Retina , 333 331 321 octets


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

Essayez-le en ligne! Edit: Sauvegardé 1 octet en compressant doubtet 1 octet en minuscule pour que tout soit compressé reply. Puis sauvegardé 10 octets en utilisant le golfeur Retina Kolmogorov de @ Leo sur le texte minuscule (qui correspond au nombre d’octets enregistrés sur ma réponse de 333 octets).

Neil
la source
@Leo Notez que Retina 0.8.2 est une langue différente
mbomb007
@ mbomb007 Je sais, mais pour les substitutions simples, la syntaxe est identique à celle de Retina 1.0. Je viens de souligner que le golfeur Kolmogorov a été écrit pour une version plus ancienne de Retina, mais il est toujours utilisable dans ce cas.
Leo
4

Noix de coco , 380 octets

Le port de coco de la réponse de tout homme

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

Essayez-le en ligne!

ovs
la source
4

T-SQL, 393 octets

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

La fonction STRING_SPLITest uniquement disponible dans SQL 2016 et versions ultérieures.

Le meilleur que je pouvais obtenir pour les versions précédentes en utilisant VALUES('It is certain'),('It is decidedly so'),...était 464 caractères.

Formaté, juste pour que vous puissiez voir la partie active:

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

NEWID() génère un nouveau GUID pseudo-aléatoire, ce qui permet de faire un tri pseudo-aléatoire.

BradC
la source
4

Gelée , 201 octets

-2 octets merci à M. Xcoder. -1 octet grâce à 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

Essayez-le en ligne!

Zut , la compression de SOGL est bonne.

totalement humain
la source
202 octets
M. Xcoder
201 octets . Il suffit d'ajouter les 2 derniers caractères.
user202729
(Je veux dire, ajouter ỴXà la fin du code afin qu'il choisisse au hasard parmi l'un d'eux)
user202729
4

05AB1E , 171 octets

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

Essayez-le en ligne!

Explication

“ ... “pousse une chaîne de tous les mots requis.
Certains mots sont tirés directement du dictionnaire 05ab1e.
Certains sont écrits en ascii clair (comme haze).
Certains combinent dictionnaire et ascii (comme do+ n't).

Le code de traitement est alors:

#                 # 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
la source
Essayez-le en ligne! - 176 avec conversion bruteforce.
Urne magique Octopus
1
@MagicOctopusUrn: Je pense que c'est 182 avec ,et 'ajouté.
Emigna
D'oh! Ah je le vois, oui. En passant, supprimez les entrées de votre TIO, c'est un peu déroutant.
Urne magique Octopus
@MagicOctopusUrn: Doh! Merci. Je ne savais pas que je l'avais laissé là-dedans: P
Emigna
166: TIO . Trois fois -1 d'utiliser de nouveaux mots dans le dictionnaire ( ye, don, et ha), et -2 de tri de la liste par le nombre de mots et en utilisant la compression delta.
Grimmy le
4

Ruby, 362 361 octets

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

Essayez-le en ligne!

  • 1 octet grâce à @ benj2240
BigRon
la source
Vous pouvez supprimer un octet au ?.lieu de '.'.
benj2240
@ benj2240 wow, je n'avais jamais vu ça auparavant. Très sympa.
BigRon
1
Je devais aller chercher la documentation sur ce ?littéral de chaîne de caractères unique
BigRon
3

Python 3, 386 octets

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
la source
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])
Flying_whale
la source
2
J'ai trouvé un bug. Vous ne pouvez pas utiliser la virgule comme séparateur , car 1 des réponses possibles de la Magic 8-Ball contient une virgule: As I see it, yes.
g4v3
1
Je vous suggère d'utiliser un seul chiffre comme séparateur. Cela économiserait 1 octet, car les guillemets ne sont plus nécessaires, mais un espace doit toujours être ajouté pour séparer le chiffre et split.
G4v3
1
En outre, vous pouvez omettre les parenthèses printet enregistrer 1 octet supplémentaire. Il suffit de mettre un signe plus unaire avant la liste: print((0..9)[5])deviendrait print+(0..9)[5].
G4v3
3

05AB1E , 208 217 octets

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

Essayez-le en ligne!

Jolie solution de base. Les réponses possibles sont concaténées avec le caractère x (puisqu'il n'est pas présent dans les réponses), puis compressées (à l'intérieur du ), 'x¡Ω se divise sur x et saute un choix aléatoire.

Merci à @Emigna pour avoir souligné que la compression de l'alphabet n'aime pas 'ou beaucoup. Fixé en entourant la chaîne compressée avec don ' et , oui .

Kaldo
la source
Belle idée de se séparer d'un personnage absent. Malheureusement, la compression alphabétique remplace ,et 'par des espaces, de sorte que la sortie pour ces 2 lignes est incorrecte.
Emigna
@ Emigna Merci beaucoup de l'avoir signalé! Je me demande s'il n'existe pas de solution meilleure à ce problème ... J'aurais pu utiliser d'autres caractères non utilisés dans les réponses, mais il n'y en a que deux: q et x :-(
Kaldo
3

PHP , 412 385 337 384 octets

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

Essayez-le en ligne!

Solution assez simple. Divisez la chaîne par un délimiteur (dans ce cas 1) et choisissez un élément aléatoire dans le tableau.

Andrew
la source
Bienvenue chez PPCG! J'ai apporté quelques modifications de mise en forme mineures à votre publication et quelques suggestions: 1, vous devez ajouter un espace après phppour que votre code soit compilé; 2, vous pouvez remplacer '|'avec 1et tous |avec 1pour -2 octets; 3 devrait envisager de changer votre lien pour Trying it Online en TIO.run selon les préférences de la communauté.
Taylor Scott
Et voici une version de travail basée sur mes commentaires. Essayez-le en ligne!
Taylor Scott
@TaylorScott Cela semble fonctionner correctement sur mon enovironnement sans l'espace après la balise <? Php. Je cours PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Pas sûr que dans les versions précédentes ce qui compte ou non. De toute façon, j'ai édité la question.
Andrew
Ahh, c'est peut-être juste la version - Le lien que vous avez fourni utilise PHP version 7.0.3, et il ne fonctionne pas sur TIO.run sans espace
Taylor Scott
2
Vous pouvez utiliser <?=et faire écho à l'exploser directement en utilisant [rand(0, 19)]au lieu d'ajouter d'abord à une variable<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen
3

Javascript, 372 octets

-10 octets grâce à 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]

Essayez-le en ligne!

SuperStormer
la source
1
Utiliser au niveau du bit au ORlieu de Math.floor()sauver 7 octets: Math.random()*20|0.
Shaggy
3

Befunge

1221 870 octets (le périmètre de l'ensemble du champ est 33 x 36 30 * 29 caractères) Merci à Jo King de m'avoir aidé à supprimer les valeurs NULL de fin et de m'avoir exhorté à modifier le randomiseur.

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

La ligne du haut place le caractère '<' et la position x (28) à l'endroit où il devrait être placé sur la pile. Ensuite, nous entrons dans la sorte de générateur de nombres aléatoires. Cela pourrait être amélioré, mais voici ce que je pourrais vous livrer rapidement ... Le nombre "aléatoire" est compensé pour obtenir la ligne "aléatoire" à lire.

Une fois le nombre aléatoire généré, nous plaçons le caractère '<' sur cette ligne, plaçons les lettres dans la pile et les rediffusons sur la dernière ligne.

Remarque; si vous utilisez l'interprète auquel j'ai lié dans ce titre, vous devez reclicker le bouton "Afficher" après chaque exécution, car l'ajout du caractère "<" reste après l'exécution.

rael_kid
la source
1
Vous feriez bien mieux d'utiliser le même format que ma réponse> <>. Essayez-le en ligne! . En ce moment, il imprime également une série d'octets nuls à la fin
Jo King
Oui, je sais, je voulais que le nombre aléatoire ne soit pas trop biaisé, mais j'aurais pu utiliser une seule ligne de points d'interrogation.
Rael_kid
Vous pouvez au moins jouer au golf quelques centaines d’octets, et modifier la dernière ligne >:#,_@pour éviter d’imprimer des octets nuls. Oh, et ajoutez un lien TIO.
Jo King
C'est vrai, je posterai une mise à jour plus tard aujourd'hui.
Rael_kid
3

Java 8 , 433 , 392 , 380 , 379 octets

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

Essayez-le en ligne!

  • 41 octets grâce à AdmBorkBork!
  • 10 octets merci à Kevin!
  • 1 octet grâce à Oliver!
DevelopingDeveloper
la source
2
Vous pouvez sûrement utiliser String.split () pour enregistrer de nombreux
AdmBorkBork
2
Comme @AdmBorkBork l'a déclaré, vous pouvez enregistrer 41 octets avec String#split. En outre, vous pouvez enregistrer 11 octets supplémentaires en utilisant à la (int)(Math.random()*20)place de new java.util.Random().nextInt(20). Et le point-virgule n'est pas compté dans le nombre d'octets pour lambdas. Donc au total: 380 octets .
Kevin Cruijssen
2
Il y a un espace supplémentaire dans votre réponse et dans le golf de @ KevinCruijssen: utilisez Don'tplutôt que Don' t.
Olivier Grégoire
2

Rouge , 367 octets

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

Essayez-le en ligne!

Cela ne semble pas vraiment aléatoire dans TIO (bien que cela fonctionne très bien dans la console rouge), c'est pourquoi j'ai ajouté une graine aléatoire à l'en-tête.

Galen Ivanov
la source
2

Excel, 399 octets

=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")

Depuis CHOOSE(X.Y,<>)est le même que CHOOSE(X,<>), pas besoin d'unINT

Pas beaucoup de golf que vous pouvez faire ici cependant ...

Chronocide
la source
2

Aceto , 345 + 1 = 346 octets (+1 pour -ldrapeau)

"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

Essayez-le en ligne!

Pas trop intéressant, mais je ne peux pas penser à quelque chose de plus court dans cette langue, pas de chaînes compressées ou quoi que ce soit.

"...." push strings séparés par des points
      '. période littérale
        : fractionné par période
         Y shuffle stack
          p imprimer haut

drham
la source
sans le drapeau -l pourrait paraître plus intéressant.
Laura Bostan
@LauraBostan Mais je ne connais pas les courbes d'Hilbert après le type 3
drham
et c'est plus d'octets pour tous les \ n
drham
1
Mais oui, cela aurait l'air plus 'intéressant' en soi
drham
iup ... le drapeau -l a été ajouté pour le golf. Cependant, je ne l’aime pas beaucoup, vole à peu de frais tout le sens de la langue. Peut-être que la prochaine version d'Aceto abandonnera ce drapeau.
Laura Bostan
1

C - 426 octets

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

Utilise une variable non initialisée mod 20 pour indexer dans un tableau de chaînes contenant toutes les sorties possibles. Les compilateurs se plaignent que stdio.h ne soit pas inclus, mais cela fonctionne correctement. Probablement parce que la bibliothèque standard est liée de toute façon. J'ai de la chance.

Orion
la source
À noter sur certaines implémentations, une variable non initialisée a une valeur de 0, puisque le comportement est, ainsi, indéfini. Demandez à votre 8-ball magique si cela est vrai sur votre machine.
Orion
1

Go, 530 octets

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

Veuillez noter que, sur le terrain de jeu de Go, en raison de la façon dont fonctionne le semis, cela donne toujours le même résultat. Lorsque vous utilisez un ordinateur ordinaire, tout fonctionne comme il se doit.
Je pense qu'il est possible d'économiser un peu plus mais mes connaissances dans Go s'arrêtent là :)

Version formatée et testable

Nathanael C.
la source
Bienvenue chez PPCG! L' interprète Go de Try It Online semble utiliser une graine aléatoire.
Dennis
Je dois être terriblement malchanceux alors D:
Nathanael C.
Rafraîchissez-vous la page? Cela irait chercher le résultat dans le cache à chaque fois, donc ça ne changerait pas. Cliquez sur le bouton Exécuter pour exécuter le code à nouveau.
Dennis
Je continue à obtenir "c'est certain" même après un CTRL + R trop fort ... Je ne comprends pas: x
Nathanael C.
Le rafraîchissement ne changera pas le résultat. ils sont mis en cache côté serveur. Cliquez sur le bouton Exécuter (icône de lecture dans un cercle) ou appuyez sur Ctrl-Entrée.
Dennis
1

Excel-VBA, 362 341 339 octets

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

A1:T1contiennent les différentes options. Lit toute la première ligne de la feuille dans un tableau vet indexe un point aléatoire le long des 19 premières valeurs.

Surprise de constater que l'indexation d'un tableau ne nécessite pas de valeurs entières

Greedo
la source
Mes inquiétudes au sujet de votre réponse pour Excel le sont encore plus ici, car la feuille de calcul est considérée comme un STDIN pour Excel VBA. Il est donc préférable d'avoir une entrée prédéterminée
Taylor Scott
0

VBA, 358 octets

Une fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et qui sort vers 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)
Taylor Scott
la source
-1

Java 8, 379 octets

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

Essayez-le en ligne

Twometer
la source