Crea una bola mágica 8

34

Cuando era niño, mi amigo tenía una bola mágica 8 a la que le hacíamos preguntas y veíamos cuál era el destino de esa pregunta.

Reto

Su desafío es escribir un programa (o función) que cuando se ejecuta (o se llama), genera (o devuelve) una respuesta aleatoria de las posibles respuestas a continuación. (Random ser: each output should have a nonzero chance of occurring but they do not need to meet any other criteria)

Las posibles respuestas de Magic 8-ball son (sin distinción entre mayúsculas y 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

Sin entrada.

Salida

Una elección al azar desde arriba. El caso no importa.

Reglas

Las lagunas estándar no están permitidas.

Este es el , por lo que gana el código más corto en bytes para cada idioma.

Desarrollador en desarrollo
fuente
2
Cambié "sin entrada permitida" a "sin entrada", algunos idiomas requieren argumentos en blanco / nulos como entradas.
Rɪᴋᴇʀ
12
¿Soy yo o alguien está rechazando todas las respuestas ??????
Dat
1
@Dat Publiqué algo aquí en meta para discutir esto. He votado a favor de cada respuesta, como siempre lo hago para las respuestas que cumplen los requisitos de mis preguntas. Tal vez un moderador intervendrá ...
DevelopingDeveloper
37
@DatSigns point to yes
mbomb007
1
@ mbomb007 ¡Mi comentario favorito que he visto en PPCG hasta ahora!
DevelopingDeveloper

Respuestas:

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

Pruébalo aquí!

\ o / cada palabra estaba en el diccionario SOGLs!

dzaima
fuente
¡Esta es una respuesta increíble!
DevelopingDeveloper
Me encantaría echar un vistazo al motor de compresión de SOGL, pero desafortunadamente no hablo JavaScript :(
caird coinheringaahing
Espera, ¿SOGL es un lenguaje basado en JavaScript?
Shaggy
@cairdcoinheringaahing SOGL está escrito en Processing, y los archivos de compresión relevantes están aquí y aquí . Aunque Processing es un lenguaje basado en 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"

Pruébalo en línea!

No es tan interesante, pero creo que es la primera respuesta donde la aleatoriedad no es uniforme. Puse todos los mensajes negativos como menos probable :)

Alguna explicación:

El puntero comienza a ir directamente a la primera línea. xcambia el puntero a una dirección cardinal aleatoria. Si sube o baja, simplemente encuentra un diferente x. Si sale bien, rebota |y golpea lo mismo x. Si se va hacia la izquierda, se envuelve y empuja el texto de esa línea a la pila. La mayoría de las líneas luego golpean la misma pista de las ^cuales cambia la dirección hacia arriba. Esto recorre ola primera línea, que genera la pila hasta que esté vacía. El caso especial es la Yeplínea, que tiene el bucle horizontal en su |o<lugar.

Jo King
fuente
77
Usaré este. (Casi) siempre da una respuesta positiva. Lamentablemente, la respuesta también huele a pescado ...
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])

Anteriormente estaba usando el hashbuiltin to index ( hash(id)%20), que devuelve un valor aleatorio por inicio del intérprete de Python desde https://bugs.python.org/issue13703 . Sin embargo, no es aleatorio para la cadena vacía (siempre 0), por lo que debe usar algo más, ¡el idincorporado!

En una segunda mirada, podría usar iddirectamente, pero parece que siempre produce números pares. IIRC, id(object)en CPython solo devuelve la ubicación de memoria de object, por lo que esto tiene sentido. Tal vez si usara Jython o IronPython, podría omitir la división entre 7. De todos modos, hash(id)vs id(0)//7es igual en Python 3, pero puede usar el /operador para truncar la división de enteros en Python 2, guardando un byte.

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

Pruébalo en línea!

Ho-hum Toma todos los resultados, concatenados junto con 0s, luego -splits 0para crear una serie de cadenas. Pasa esa matriz a la Get-Randomque seleccionará aleatoriamente uno de ellos. Eso queda en la tubería y la salida es implícita.

AdmBorkBork
fuente
11

Python 2 , 385 bytes

-1 byte gracias a los 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('.'))

Pruébalo en línea!

totalmente humano
fuente
22
@Downvoter, ¿puedo preguntar por qué ha rechazado cada respuesta?
totalmente humano
77
Eso me parece un comportamiento de votación sospechoso, sugeriría marcar la pregunta para llamar la atención de un mod para que puedan investigar.
Shaggy
9

Applescript, 391

Me encanta cómo las listas de AppleScript tienen un 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
fuente
55
Indique la respuesta negativa de todas las respuestas en 3, 2, 1 ... Continúe, le desafío a que revele quién es usted y explique su razón de voto negativo. ¿O continuarás acechando anónimamente en las sombras?
Trauma digital
7

Bash + GNU utilidades, 230

  • 15 bytes guardados gracias a @Dennis.
sed 1d $0|zcat|shuf -n1
# zopflied 8 ball list

La salida binaria de zopfli no está bien representada aquí; en su lugar, puede reconstruir el script a partir de datos codificados en base64:

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

Tenga en cuenta que, según lo permitido por la pregunta, los datos comprimidos se descomprimen en minúsculas. Esto hace que la compresión zopfli sea un poco más eficiente y ahorra 16 bytes.

Trauma digital
fuente
tail +2no funciona para mí, pero sed 1d $0guarda un byte de todos modos. Además, dado que la salida a STDERR está permitida por defecto, no creo que necesite el exit. Además, los últimos diez bytes del programa se pueden eliminar.
Dennis
@ Dennis gracias! La salida adicional a STDERR siempre me hace sentir un poco incómodo, pero supongo que debería ejecutarlo.
Trauma digital
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

Pruébalo en línea!

No es exactamente la solución más elegante. R tiene una característica ordenada donde stdinse redirigirá al archivo fuente, por lo que puede colocar conjuntos de datos (pequeños) en el código fuente, guardar bytes para la división de cadenas o peor, construir el vector en sí (todas esas citas se suman a toda prisa). Junto con las incorporaciones para el muestreo aleatorio, esto da una respuesta breve.

Giuseppe
fuente
6

Carbón , 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&”¶

Pruébalo en línea! El enlace es a la versión detallada del código. Editar: guardado 19 bytes en minúscula todo. Explicación:

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

Pruébalo en línea! Editar: guardado 1 byte al comprimir doubty 1 byte en minúsculas todo para que pueda comprimir reply. Luego guardé 10 bytes usando el golfista Retina Kolmogorov de @ Leo en el texto en minúsculas (que casualmente es el número de bytes que guardó en mi respuesta de 333 bytes).

Neil
fuente
@Leo Tenga en cuenta que Retina 0.8.2 es un idioma diferente
mbomb007
@ mbomb007 Lo sé, pero para sustituciones simples como estas tiene la misma sintaxis que Retina 1.0. Solo estaba señalando que el golfista Kolmogorov fue escrito para una versión anterior de Retina, pero aún es utilizable en este caso.
Leo
4

Coco , 380 bytes

Puerto de coco de la respuesta totalmente humana

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

Pruébalo en línea!

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

La función STRING_SPLITsolo está disponible en SQL 2016 y versiones posteriores.

Lo mejor que pude obtener para versiones anteriores usando VALUES('It is certain'),('It is decidedly so'),...fue 464 caracteres.

Formateado, para que pueda ver la parte de trabajo:

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

NEWID() genera un nuevo GUID pseudoaleatorio, por lo que es una forma de hacer una ordenación pseudoaleatoria.

BradC
fuente
4

Jalea , 201 bytes

-2 bytes gracias al Sr. Xcoder. -1 byte gracias al usuario202729.

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

Pruébalo en línea!

Maldición , la compresión de SOGL es buena.

totalmente humano
fuente
202 bytes
Sr. Xcoder
201 bytes . Solo agregue los 2 últimos caracteres.
usuario202729
(Quiero decir, agregue ỴXal final del código para que elija al azar de uno de ellos)
usuario202729
4

05AB1E , 171 bytes

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

Pruébalo en línea!

Explicación

“ ... “empuja una cadena de todas las palabras requeridas.
Algunas palabras se toman directamente del diccionario 05ab1e.
Algunos están escritos en ascii simple (como haze).
Algunos son diccionario y ascii combinados (como do+n't ).

Entonces el código de procesamiento es:

#                 # 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
fuente
Pruébalo en línea! - 176 con conversión de fuerza bruta.
Urna de pulpo mágico
1
@MagicOctopusUrn: Creo que es 182 con ,y 'agregado.
Emigna
D'oh! Ah ya lo veo, sí. Por cierto, elimine la entrada de su TIO, es un poco confuso.
Magic Octopus Urn
@MagicOctopusUrn: Doh! Gracias. No sabía que había dejado eso allí: P
Emigna
166: TIO . Tres veces -1 del uso de nuevas palabras del diccionario ( ye, dony ha), y -2 de la clasificación de la lista de recuento de palabras y el uso de la compresión delta.
Grimmy
4

Rubí, 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

Pruébalo en línea!

  • 1 byte gracias a @ benj2240
BigRon
fuente
Puede eliminar un byte con en ?.lugar de '.'.
benj2240
@ benj2240 wow, no había visto eso antes. Muy genial.
BigRon
1
Tuve que buscar la documentación en ese ?literal de cadena de caracteres único
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
fuente
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
fuente
2
Encontré un error. No se puede usar una coma como separador, ya 1 de las posibles respuestas de los Magic 8-Ball contiene una coma: As I see it, yes.
g4v3
1
Te sugiero que uses un solo dígito como separador. Ahorraría 1 byte, ya que las comillas ya no son necesarias, pero aún se debe agregar un espacio para separar el dígito y split.
g4v3
1
Además, puede omitir paréntesis printy guardar 1 byte más. Simplemente ponga un signo más unario antes de la lista: print((0..9)[5])se convertiría 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¡Ω

Pruébalo en línea!

Solución bastante básica. Las posibles respuestas se concatenan con el carácter x (ya que no está presente en las respuestas) y luego se comprimen (dentro de ), 'x¡Ω se divide en x y aparece una opción aleatoria.

Gracias a @Emigna por señalar que a la compresión del alfabeto no le gusta 'o mucho'. Se solucionó rodeando la cadena comprimida con don ' y , sí .

Kaldo
fuente
Buena idea dividir en un personaje no presente. Desafortunadamente, la compresión del alfabeto reemplaza ,y 'con espacios, por lo que la salida de esas 2 líneas es incorrecta.
Emigna
@Emigna ¡Muchas gracias por señalarlo! Me pregunto si no existe una solución mejor para este problema ... Podría haber usado otros caracteres no utilizados en las respuestas, pero solo hay dos: q y 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)];

Pruébalo en línea!

Solución bastante sencilla. Divida la cadena por un delimitador (en este caso 1) y elija un elemento aleatorio de la matriz.

Andrew
fuente
Bienvenido a PPCG! He realizado algunos cambios menores de formato en su publicación, y tengo un par de pequeñas sugerencias: 1, debe agregar un espacio después phppara que su código se compile; 2, puede reemplazar '|'con 1y todo |con 1-2 bytes; 3 debe considerar cambiar su enlace para Probarlo en línea a TIO.run como lo prefiere la comunidad.
Taylor Scott
Y aquí hay una versión funcional basada en mis comentarios. Pruébalo en línea!
Taylor Scott
@TaylorScott Parece estar funcionando bien en mi entorno sin el espacio después de la etiqueta <? Php. Estoy corriendo PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS ). No estoy seguro si en versiones anteriores eso importa o no. De cualquier manera, he editado la pregunta.
Andrew
Ahh, puede ser solo la versión: el enlace que proporcionó usa la versión PHP 7.0.3 y no se ejecuta en TIO.run sin el espacio
Taylor Scott
2
Puede usar <?=y hacer eco de la explosión directamente usando en [rand(0, 19)]lugar de agregar primero a una variable<?= explode("1", "str1str1str")[rand(0, 19)]
Jeroen
3

Javascript, 372 bytes

-10 bytes gracias 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]

Pruébalo en línea!

SuperStormer
fuente
1
Uso bit a bit ORen lugar de Math.floor()ahorrar 7 bytes: Math.random()*20|0.
Shaggy
3

Befunge

1221 870 bytes (el perímetro de todo el campo es de 33x36 30 * 29 caracteres) Gracias a Jo King por ayudarme a eliminar los nulos finales e instarme a cambiar el aleatorizador.

"<"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 línea superior coloca el carácter '<' y la posición x (28) donde debería ir en la pila. Luego ingresamos el tipo de generador de números aleatorios. Esto podría mejorarse, pero esto es lo que podría entregar a corto plazo ... El número "aleatorio" se compensa para obtener la línea "aleatoria" real para leer.

Después de que se genera el número aleatorio, colocamos el carácter '<' en esa línea y empujamos las letras en la pila y en la línea inferior las imprimimos nuevamente.

Nota; si usa el intérprete al que he vinculado en el título de esta publicación, debe volver a hacer clic en "Mostrar" después de cada ejecución, porque la adición del carácter '<' permanece después de la ejecución.

rael_kid
fuente
1
Es mucho mejor usar el mismo formato que mi> <> respuesta. Pruébalo en línea! . Tal como está ahora, también imprime un montón de bytes nulos al final
Jo King
Sí, lo sé, quería que el número aleatorio no fuera demasiado sesgado, pero podría haber usado una sola línea de signos de interrogación.
rael_kid
Puede al menos jugar un par de cientos de bytes de espacio en blanco y cambiar la última línea >:#,_@para evitar imprimir bytes nulos. Ah, y agregue un enlace TIO.
Jo King
Es cierto, publicaré una actualización más tarde hoy.
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)]

Pruébalo en línea!

  • 41 bytes gracias a AdmBorkBork!
  • 10 bytes gracias a Kevin!
  • 1 byte gracias a Oliver!
Desarrollador en desarrollo
fuente
2
Seguramente puede usar String.split () para guardar un montón de bytes - docs.oracle.com/javase/7/docs/api/java/lang/…
AdmBorkBork
2
Como dijo @AdmBorkBork , puede guardar 41 bytes usando String#split. Además, puede guardar 11 bytes adicionales usando en (int)(Math.random()*20)lugar de new java.util.Random().nextInt(20). Y el punto y coma no se cuenta para el conteo de bytes para lambdas. Entonces en total: 380 bytes .
Kevin Cruijssen
2
Hay un espacio extra en su respuesta y en el golf de @ KevinCruijssen: use en Don'tlugar de Don' t.
Olivier Grégoire
2

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

Pruébalo en línea!

No parece realmente aleatorio en TIO (aunque funciona bien en la consola roja), es por eso que agregué un azar / semilla al encabezado.

Galen Ivanov
fuente
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,<>)es lo mismo CHOOSE(X,<>), no es necesario unINT

No hay mucho golf que puedas hacer aquí ...

Chronocidal
fuente
2

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

"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

Pruébalo en línea!

No es demasiado interesante, pero no puedo pensar en nada más corto en este lenguaje, sin cadenas comprimidas ni nada.

"...." empujar cadenas separadas por puntos
      '. periodo literal
        : dividido en período
         Y barajar pila
          p imprimir arriba

drham
fuente
sin la bandera -l podría parecer más interesante.
Laura Bostan
@LauraBostan Pero no sé las curvas de hilbert más allá del tipo 3
drham
y son más bytes para todos los \ n
drham
1
Pero sí, se vería más 'interesante' per se
drham
iup ... se agregó la bandera -l para jugar golf. Sin embargo, no me gusta mucho, roba a bajo precio todo el punto del lenguaje. Quizás la próxima versión de Aceto renuncie a esta bandera.
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]);}

Utiliza una variable no inicializada mod 20 para indexar en una matriz de cadenas que contiene todas las salidas posibles. Los compiladores se quejan de que stdio.h no está incluido, pero funciona bien. Probablemente porque resulta que tiene la biblioteca estándar vinculada de todos modos. Suerte la mía.

Orion
fuente
Vale la pena señalar en algunas implementaciones, una variable no inicializada tiene un valor de 0, ya que el comportamiento es, bueno, indefinido. Pregúntele a su bola mágica 8 si esto es cierto en su máquina.
Orion
1

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

Tenga en cuenta que, en Go Playground, debido a cómo funciona la siembra, siempre da el mismo resultado. Cuando se ejecuta en una computadora normal, todo funciona como debería.
Creo que es posible ahorrar un poco más, pero mi conocimiento en Go se detiene allí :)

Versión formateada y comprobable

Nathanael C.
fuente
Bienvenido a PPCG! El intérprete de Go en Try It Online parece usar una semilla aleatoria.
Dennis
Debo ser terriblemente desafortunado entonces D:
Nathanael C.
¿Estás refrescando la página? Eso obtendría el resultado del caché cada vez, por lo que no cambiará. Al hacer clic en el botón Ejecutar, se ejecutará el código nuevamente.
Dennis
Sigo obteniendo "Es cierto" incluso después de un CTRL + R para actualizar duro ... No lo entiendo: x
Nathanael C.
Actualizar no cambiará el resultado; se almacenan en caché en el lado del servidor. Haga clic en el botón Ejecutar (icono de reproducción en un círculo) o presione Ctrl-Entrar.
Dennis
1

Excel-VBA, 362 341 339 Bytes

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

Donde A1:T1contienen las diferentes opciones. Lee toda la primera fila de la hoja en una matriz ve indexa un punto aleatorio a lo largo de los primeros 19 valores.

Sorprendido al descubrir que indexar una matriz no requiere valores enteros

Greedo
fuente
Mis inquietudes sobre su respuesta para Excel son aún más aquí, ya que la Hoja de trabajo se cuenta como un STDIN para Excel VBA, por lo que esto está más cerca de tener una entrada predeterminada
Taylor Scott el
0

VBA, 358 bytes

Una función de ventana inmediata anónima VBE que no toma entradas y salidas a 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
fuente
-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)]

Pruébalo en línea

Twometer
fuente