Crie uma bola mágica 8

34

Quando criança, meu amigo tinha uma bola mágica de 8 a qual poderíamos fazer perguntas e ver qual era o destino dessa pergunta.

Desafio

Seu desafio é escrever um programa (ou função) que, quando executado (ou chamado), gera (ou retorna) uma resposta aleatória das possíveis respostas abaixo. (Random sendo: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

As respostas possíveis da bola 8 mágica são (sem distinção entre maiúsculas e minúsculas):

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

Entrada

Sem entrada.

Saída

Uma escolha aleatória de cima. Caso não importa.

Regras

As brechas padrão não são permitidas.

Isso é , então o código mais curto em bytes para cada idioma vence!

DevelopingDeveloper
fonte
2
Alterei "nenhuma entrada permitida" para "nenhuma entrada", alguns idiomas exigem argumentos em branco / nulos como entradas.
Rɪᴋᴇʀ
12
Sou eu ou alguém está com voto negativo em todas as respostas ??????
Dat
1
@ Data eu postei algo aqui na meta para discutir isso. Eu votei todas as respostas, como sempre faço para respostas que atendem aos requisitos de minhas perguntas. Talvez um moderador intervenha ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 Meu comentário favorito que já vi no PPCG até agora!
DevelopingDeveloper

Respostas:

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

Experimente aqui!

\ o / cada palavra estava no dicionário SOGLs!

dzaima
fonte
Esta é uma resposta incrível !!!
DevelopingDeveloper
Eu adoraria dar uma olhada em motor de compressão de Sogl, mas, infelizmente, eu não falo JavaScript :(
caird coinheringaahing
Aguarde, SOGL é uma linguagem baseada em JavaScript?
Shaggy
@cairdcoinheringaahing SOGL está escrito em Processing, e os arquivos de compactação relevantes estão aqui e aqui . Embora Processing seja uma linguagem baseada em Java: 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"

Experimente online!

Não é tão interessante, mas acho que é a primeira resposta em que a aleatoriedade não é uniforme. Coloquei todas as mensagens negativas como menos prováveis ​​:)

Alguma explicação:

O ponteiro começa a ir direto para a primeira linha. xmuda o ponteiro para uma direção cardinal aleatória. Se sobe ou desce, apenas encontra um diferente x. Se der certo, ele ricocheteia |e bate no mesmo x. Se for para a esquerda, ele se aproxima e empurra o texto dessa linha para a pilha. A maioria das linhas atinge a mesma faixa ^que altera a direção para cima. Isso faz um loop ona primeira linha, que gera a pilha até ficar vazia. O caso especial é a Yeplinha, que possui o loop horizontal |o<.

Brincadeira
fonte
7
Eu vou usar este. (Quase) sempre dá uma resposta positiva. Infelizmente, a resposta também cheira bem ...
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])

Eu estava usando anteriormente o hashbuiltin para index ( hash(id)%20), que retorna um valor aleatório por início do interpretador Python desde https://bugs.python.org/issue13703 . Embora não seja aleatório para a string vazia (sempre 0), é necessário usar outra coisa, a idembutida!

Em uma segunda olhada, eu poderia usar iddiretamente, mas parece sempre produzir números pares. IIRC, id(object)no CPython apenas retorna a localização da memória de object, então isso faz sentido. Talvez se eu usasse o Jython ou o IronPython, eu poderia pular a divisão por 7. De qualquer forma, hash(id)vs id(0)//7é igual no Python 3, mas pode usar o /operador para truncar a divisão inteira no Python 2, salvando um byte.

Nick T
fonte
13

PowerShell , 354 bytes

"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

Experimente online!

Ho-hum. Toma todos os resultados, concatenados com 0s, depois -splits on 0para criar uma matriz de seqüências de caracteres. Passa a matriz para a Get-Randomqual selecionará aleatoriamente uma delas. Isso é deixado no pipeline e a produção está implícita.

AdmBorkBork
fonte
11

Python 2 , 385 bytes

-1 byte graças a 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('.'))

Experimente online!

totalmente humano
fonte
22
@ Downvoter, posso perguntar por que você diminuiu todas as respostas?
totallyhuman
7
Isso me parece um comportamento suspeito de votação, eu sugiro sinalizar a pergunta pela atenção de um mod para que ele possa investigar.
Shaggy
9

Applescript, 391

Eu amo como as listas do AppleScript têm um some itemmétodo:

{"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 Digital
fonte
5
Sugira a resposta negativa de todas as respostas em 3, 2, 1 ... Continue - te desafio a revelar quem você é e a explicar sua lógica negativa. Ou você continuará se escondendo anonimamente nas sombras?
Digital Trauma
7

Utilitários Bash + GNU, 230

  • 15 bytes salvos graças ao @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

A saída binária do zopfli não está bem representada aqui; em vez disso, você pode reconstruir o script a partir dos dados codificados em base64:

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

Observe que, conforme permitido pela pergunta, os dados compactados são descompactados para todas as letras minúsculas. Isso torna a compactação zopfli um pouco mais eficiente e economiza 16 bytes.

Trauma Digital
fonte
tail +2não funciona para mim, mas sed 1d $0salva um byte de qualquer maneira. Além disso, como a saída para STDERR é permitida por padrão, não acho que você precise do exit. Além disso, os últimos dez bytes do programa podem ser removidos.
Dennis
@Dennis thanks! Saída extra para STDERR sempre me faz sentir um pouco desconfortável, mas acho que devo executar com ela.
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

Experimente online!

Não é exatamente a solução mais elegante. O R possui um recurso interessante, onde stdinserá redirecionado para o arquivo de origem, para que você possa colocar (pequenos) conjuntos de dados no código-fonte, economizando bytes para a divisão de seqüências de caracteres ou pior, construindo o próprio vetor (todas essas aspas são adicionadas às pressas). Juntamente com os recursos internos para amostragem aleatória, isso fornece uma resposta curta.

Giuseppe
fonte
6

Carvão , 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&”¶

Experimente online! Link é a versão detalhada do código. Editar: salvou 19 bytes em minúsculas. Explicação:

  ”...”     Compressed string of newline-delimited responses
 ⪪     ¶    Split on newlines
‽           Random element
            Implicitly print
Neil
fonte
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?`

Experimente online! Editar: salvei 1 byte ao compactar doubte 1 byte ao colocar tudo em minúsculas para que eu pudesse comprimir reply. Em seguida, salvei 10 bytes usando o jogador de golfe Retina Kolmogorov de Leo no texto em minúsculas (que coincidentemente é o número de bytes que ele salvou na minha resposta de 333 bytes).

Neil
fonte
Nota @Leo que Retina 0.8.2 é uma língua diferente
mbomb007
@ mbomb007 eu sei, mas para substituições simples como essas, ela tem a mesma sintaxe do Retina 1.0. Eu estava apenas apontando que o jogador de golfe Kolmogorov foi escrito para uma versão mais antiga do Retina, mas ainda é utilizável neste caso.
Leo
4

Coco , 380 bytes

Coconut porto de totallyhuman 's resposta

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

Experimente online!

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

A função STRING_SPLITestá disponível apenas no SQL 2016 e posterior.

O melhor que pude obter nas versões anteriores VALUES('It is certain'),('It is decidedly so'),...foi o de 464 caracteres.

Formatado, apenas para ver a parte de trabalho:

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

NEWID() gera um novo GUID pseudo-aleatório, portanto, é uma maneira de fazer uma classificação pseudo-aleatória.

BradC
fonte
4

Geléia , 201 bytes

-2 bytes graças ao Sr. Xcoder. -1 byte graças a 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

Experimente online!

Porra , a compressão da SOGL é boa.

totalmente humano
fonte
202 bytes
Sr. Xcoder,
201 bytes . Basta acrescentar os 2 últimos caracteres.
user202729
(Quero dizer, acrescente ỴXao final do código para que ele escolha aleatoriamente um deles) #
user202729
4

05AB1E , 171 bytes

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

Experimente online!

Explicação

“ ... “empurra uma sequência de todas as palavras necessárias.
Algumas palavras são retiradas diretamente do dicionário 05ab1e.
Alguns são escritos em ASCII simples (como haze).
Alguns são combinados dicionário e ascii (como do+ n't).

Então o código de processamento é:

#                 # 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
fonte
Experimente online! - 176 com conversão de força bruta.
Magic Octopus Urn
1
@MagicOctopusUrn: Eu acho que são 182 ,e 'adicionados.
Emigna
D'oh! Ah eu vejo sim. A propósito, remova a entrada do seu TIO, é um pouco confuso.
Magia Octopus Urna
@MagicOctopusUrn: Doh! Obrigado. Eu não sabia que tinha deixado isso lá: P
Emigna 13/03/19
166: TIO . Três vezes a partir de -1 usando novas palavras do dicionário ( ye, don, e ha), e -2 de ordenar a lista por palavra e contagem usando compressão delta.
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

Experimente online!

  • 1 byte graças a @ benj2240
BigRon
fonte
Você pode cortar um byte em ?.vez de '.'.
precisa saber é
@ benj2240 uau, eu não tinha visto isso antes. Muito legal.
BigRon
1
Eu tive que procurar a documentação nessa ?literal de cadeia de caracteres
BigRon
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
fonte
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
fonte
2
Eu encontrei um bug. Você não pode usar a vírgula como separador porque um dos possíveis respostas do Magic 8-ball contém uma vírgula: As I see it, yes.
G4v3 9/0318
1
Eu sugiro que você use um único dígito como separador. Isso economizaria 1 byte, pois as aspas não são mais necessárias, mas ainda é necessário adicionar um espaço para separar o dígito e split.
g4v3
1
Além disso, você pode omitir parênteses printe salvar mais 1 byte. Basta colocar um sinal de adição unário antes da lista: print((0..9)[5])se tornará print+(0..9)[5].
G4v3 9/0318
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¡Ω

Experimente online!

Solução bastante básica. As respostas possíveis são concatenadas com o caractere x (já que não está presente nas respostas) e depois compactadas (dentro de ), 'x¡Ω divide em x e uma escolha aleatória.

Agradecemos a @Emigna por apontar que a compactação do alfabeto não gosta de 'ou, muito. Corrigido substituindo a sequência compactada com don ' e , sim .

Kaldo
fonte
Boa idéia para dividir em um personagem não presente. Infelizmente, a compactação do alfabeto substitui ,e 'por espaços, portanto a saída para essas 2 linhas está incorreta.
Emigna
@ Emigna Muito obrigado por apontar! Eu estou querendo saber se uma melhor exist correção doen't para este problema ... Eu poderia ter usado outros caracteres não-utilizado nas respostas, mas há apenas dois: Q e 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)];

Experimente online!

Solução bastante direta. Divida a sequência por um delimitador (neste caso 1) e escolha um elemento aleatório da matriz.

Andrew
fonte
Bem-vindo ao PPCG! Fiz algumas pequenas alterações de formatação na sua postagem e tenho algumas sugestões: 1, você precisa adicionar um espaço depois phppara compilar seu código; 2, você pode substituir '|'com 1e tudo |com 1a -2 bytes; 3 deve considerar a alteração do seu link de Trying it Online para TIO.run, conforme preferir a comunidade.
Taylor Scott
E aqui está uma versão de trabalho baseada nos meus comentários. Experimente online!
Taylor Scott
@TaylorScott Parece estar funcionando bem no meu ambiente sem o espaço após a tag <? Php. Estou correndo PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). Não tenho certeza se nas versões anteriores isso importa ou não. De qualquer maneira, editei a pergunta.
Andrew
Ahh, ele pode ser apenas a versão - O link que você forneceu usos PHP versão 7.0.3, e ele não é executado em TIO.run sem o espaço
Taylor Scott
2
Você pode usar <?=e ecoar a explodir directamente utilizando [rand(0, 19)], em vez de primeiro somando-se a uma variável<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen
3

Javascript, 372 bytes

-10 bytes graças a 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]

Experimente online!

SuperStormer
fonte
1
Use bit a bit ORem vez de Math.floor()salvar 7 bytes: Math.random()*20|0.
Shaggy
3

Befunge

1221 870 bytes (o perímetro de todo o campo tem 33x36 caracteres 30 * 29) Obrigado a Jo King por me ajudar a remover os valores nulos à direita e por me pedir para alterar o randomizador.

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

A linha superior coloca o caractere '<' e a posição x (28) onde deve ir na pilha. Então entramos no tipo de gerador de números aleatórios. Isso poderia ser melhorado, mas é isso que eu poderia entregar em pouco tempo ... O número "aleatório" é deslocado para que a linha "aleatória" real seja lida.

Depois que o número aleatório é gerado, colocamos o caractere '<' nessa linha e pressionamos as letras na pilha e na linha inferior as produzimos novamente.

Nota; se você usar o intérprete ao qual vinculei neste título, você deverá clicar novamente em "Mostrar" após cada execução, porque a adição do caractere '<' permanece após a execução.

rael_kid
fonte
1
Você está muito melhor usando o mesmo formato da minha resposta> <>. Experimente online! . Como é agora, ele também imprime um monte de bytes nulos no final
Jo rei
Sim, eu sei, eu queria que o número aleatório não fosse muito tendencioso, mas eu poderia ter usado apenas uma única linha de pontos de interrogação.
rael_kid
Você pode pelo menos desativar algumas centenas de bytes de espaço em branco e alterar a última linha >:#,_@para evitar a impressão de bytes nulos. Ah, e adicione um link TIO.
Jo rei
Isso é verdade, postarei uma atualização ainda hoje.
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)]

Experimente online!

  • 41 bytes graças a AdmBorkBork!
  • 10 bytes graças a Kevin!
  • 1 byte graças a Oliver!
DevelopingDeveloper
fonte
2
Certamente você pode usar String.split () para salvar um monte de bytes - docs.oracle.com/javase/7/docs/api/java/lang/...
AdmBorkBork
2
Como @AdmBorkBork afirmou, você pode salvar 41 bytes usando String#split. Além disso, você pode salvar 11 bytes adicionais usando em (int)(Math.random()*20)vez de new java.util.Random().nextInt(20). E o ponto-e-vírgula não é contado na contagem de bytes das lambdas. Então, no total: 380 bytes .
Kevin Cruijssen 8/0318
2
Há um espaço extra na sua resposta e no golfe do @ KevinCruijssen: use em Don'tvez de Don' t.
Olivier Grégoire
2

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

Experimente online!

Não parece realmente aleatório no TIO (embora funcione bem no Red Console), é por isso que adicionei um aleatório / semente ao cabeçalho.

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

Como CHOOSE(X.Y,<>)é o mesmo CHOOSE(X,<>), não há necessidade deINT

Não há muito golfe que você pode fazer aqui ...

Cronocida
fonte
2

Aceto , 345 + 1 = 346 bytes (+1 para -lsinalizador)

"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

Experimente online!

Não é muito interessante, mas não consigo pensar em nada mais curto nessa linguagem, nenhuma string compactada ou qualquer coisa.

"...." push strings separadas por pontos
      ' período literal
        : divisão no período
         Y baralhar pilha
          p imprimir topo

drham
fonte
sem o sinalizador -l pode parecer mais interessante.
22718 Laura Bostan
@LauraBostan Mas eu não sei Hilbert curvas últimos tipo 3
drham
e é mais bytes para todos os \ n
drham
1
Mas sim, pareceria mais "interessante" por si só
drham
iup ... a bandeira -l foi adicionada para jogar golfe. No entanto, eu não gosto muito disso, rouba barato todo o ponto da linguagem. Talvez a próxima versão do Aceto desista dessa bandeira.
22718 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]);}

Usa uma variável não inicializada mod 20 para indexar em uma matriz de cadeias contendo todas as saídas possíveis. Os compiladores reclamam que stdio.h não está incluído, mas funciona bem. Provavelmente porque acontece que a biblioteca padrão está vinculada de qualquer maneira. Sorte minha.

Orion
fonte
É importante notar que em algumas implementações, uma variável não inicializada tem um valor de 0, pois o comportamento é bem indefinido. Pergunte à sua bola mágica 8 se isso é verdade em sua máquina.
Orion
1

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

Observe que, no Go Playground, por causa de como a propagação funciona, sempre dá o mesmo resultado. Ao executar em um computador comum, tudo funciona como deveria.
Eu acho que é possível economizar um pouco mais, mas meu conhecimento em Go para por aí :)

Versão formatada e testável

Nathanael C.
fonte
Bem-vindo ao PPCG! O intérprete Go no Try It Online parece usar uma semente aleatória.
Dennis
Devo ser terrivelmente infeliz D, então:
Natanael C.
Você está atualizando a página? Isso sempre buscava o resultado do cache, para que não fosse alterado. Clicar no botão Executar executará o código novamente.
Dennis
Eu continuo recebendo "É certo", mesmo depois com um CTRL + R para atualizar duro ... Eu não obtê-lo: x
Natanael C.
Atualizar não altera o resultado; eles são armazenados em cache no lado do servidor. Clique no botão executar (ícone de reprodução em um círculo) ou pressione Ctrl-Enter.
Dennis
1

Excel-VBA, 362 341 339 bytes

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

Onde A1:T1contêm as diferentes opções. Lê a primeira linha inteira da planilha na matriz ve indexa um ponto aleatório ao longo dos 19 primeiros valores.

Surpreso ao descobrir que a indexação de uma matriz não requer valores inteiros

Greedo
fonte
Minhas preocupações sobre a sua resposta para o Excel são ainda mais aqui, como a planilha é contado como um STDIN para Excel VBA, por isso este é mais perto de ter pré-determinado de entrada
Taylor Scott
0

VBA, 358 bytes

Uma função de janela imediata anônima do VBE que não recebe nenhuma entrada e sai para 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
fonte
-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)]

Experimente online

Twometer
fonte