¿Recuerdas el juego para niños, 'Pato, pato, ganso' ? ¿No? Yo tampoco.
El reto
- Imprima la palabra 'pato' en líneas individuales una cantidad indeterminada de veces.
- Imprime la palabra 'ganso'.
- Tu programa termina.
Las normas
- Intenta jugar el juego en la menor cantidad de bytes.
- Debe haber al menos un pato.
- Debe haber exactamente un ganso al final de la lista.
- Debe haber exactamente un pájaro en cada línea. No hay líneas vacías.
- El caso de las cadenas de salida es irrelevante.
- El espacio en blanco dentro de una línea está bien.
- Tu programa debe terminar.
- Su programa no debe producir constantemente la misma cantidad de patos.
¡Que te diviertas!
Tenga en cuenta: esta pregunta no es un duplicado del código más corto para producir una salida no determinista
Las razones incluyen:
- La asociación al juego de los niños.
- Los requisitos de inicio y finalización definidos de la cadena de resultados. No hay salida especificada en el otro desafío.
- Respuestas Para el otro, el desafío no duplicado está en un número de bytes de un solo dígito. El promedio para este es de alrededor de 30, o alrededor.
- Por la cantidad de superposición entre este desafío y aquel, cualquier pregunta de código de golf que incluya la etiqueta 'aleatoria' es un duplicado. ¿Deberíamos eliminarlos a todos?
- Las respuestas del código para este desafío coincidirían con el otro desafío (de una manera ridículamente hinchada), pero las respuestas a ese desafío no coincidirían con este.

Respuestas:
Jalea , 13 bytes
Pruébalo en línea!
Explicación:
Versión más legible: ¡ Pruébelo en línea!
Siempre devolverá 1 o 2 patos.
fuente
Lenguaje de script Operation Flashpoint , 48 bytes
Siempre imprime uno o dos patos.
random 1devuelve un número (punto flotante) entre 0 y 1. Ese número se pasa como argumentoselectjunto con la matriz[s,""]. El número aleatorio se redondea al entero más cercano (0 o 1), y el elemento de matriz en ese índice se selecciona de la matriz.Llamar con:
Salida:
Versión alternativa de 56 bytes:
fuente
World of Warcraft 81 Bytes
Aquí hay una macro que puedes ejecutar en World of Warcraft.
fuente
/run for x=1,random(1,9)do print("Duck")end print("Goose")Minecraft <1.13,
7254 bytesLo siento, tuve que hacerlo.
Instrucciones:
data/functions/minecraft/ddg.mcfunction/function ddgen la consola de juegosCómo funciona:
Emite la palabra "pato" para cada entidad en el mundo, luego emite la palabra "ganso". Dado que las entidades están constantemente engendrando y desapareciendo, el número de "pato" no será consistente. Utilicé en
tellrawlugar del mucho más cortosayporquesaygenera el nombre de la entidad, mientras quetellrawgenera exactamente lo que se le dice.Captura de pantalla
Editar: se cambió {"text": "duck"} a solo "duck" (y lo mismo con "goose")
fuente
JavaScript,
4544423937 bytesTiene el potencial de producir un error de desbordamiento.
Pruébalo
fuente
Octava ,
3833 bytesEste no es el más corto (son 36 bytes), pero es mi favorito. La explicación está en la parte inferior.
Pruébalo en línea!
Algunas variaciones más cortas:
Esto funciona en principio (33 bytes), pero los intérpretes en línea agota el tiempo de espera:
Agregar algunos bytes para acortar la salida hace que sea 35 o 36 bytes:
Explicación:
Solo explicaré el último al azar. Los otros son similares, pero usan la cantidad de días desde el 1 de enero de 0000 hasta hoy.
randdevuelve un número aleatorio en el intervalo (0, 1) . Por lo tanto,1/randdevuelve un número mayor que 1 . Dado que un rango1:f, dondefes un flotante aleatorio mayor que 1, es idéntico a1:floor(f),1:1/randcrea un rango 1 .. x , donde x> = 1 .Trataré de explicar esto como si Octave fuera un lenguaje basado en la pila.
fuente
disp(['duck '+~pwd';'goose'])? No estoy seguro si esto es lo suficientemente "indeterminado"Perl 5 , 20 bytes
Primero un práctico 26 bytes:
Patos 1 a 9 veces antes de ser engullido.
Pruébalo en línea!
Pero si tiene mucha memoria y tiempo, esta versión de 20 bytes (como lo sugiere Chris ) también funciona:
Esto también supone que el problema del año 2038 se resolverá para Perl 5 , de lo contrario será inválido durante 1 segundo dentro de 20 años.
fuente
1+$^T%9a solo$^T, aún funciona y ahorra 4 bytes.Python 2 ,
3634 bytes¡Pruébelo en línea!
La sugerencia de Kevin Cruijssen nos lleva a 34 bytes:
fuente
((id(id)%5)+1)a-~(id(id)%5)para deshacerte del paréntesis. Los consejos para jugar golf en <todos los idiomas> y los consejos para jugar golf en Python pueden ser interesantes de leer. ¡Disfruta tu estancia!id(id)puede serid(0)o me estoy perdiendo algo?id(0)un par de computadoras diferentes sugiere que es una constante.id([]). Esto debería inicializar una lista distinta cada vez que se ejecuta el programa, lo que en teoría debería dar como resultado consistentemente direcciones de memoria diferentes.Z Shell (+ wget y Netpbm),
168160150148145135120 bytesNo es la solución más corta, pero tuve ganas de darle un giro a este desafío (inspirado en la solución de @ AlexG a este otro problema ).
Este script genera una imagen PPM que contiene entre 1 y 8 imágenes de patos y una imagen de un ganso en la parte inferior en la salida estándar. Descarga las dos imágenes fuente de Wikipedia, por lo que el acceso a Internet es necesario para que funcione.
Salida de muestra convertida a JPEG a través de pnmtojpeg :
fuente
R , 35 bytes
Pruébalo en línea!
rexp()produce un número aleatorio a partir de una función de disminución exponencial.+1para asegurar al menos un pato. Todas las líneas después de la primera incluyen un espacio inicial (que es el separador predeterminadocat), pero esto está permitido.fuente
exp(-1)o alrededor del 36.8%.\nya que es un byte más corto. Si visita el "Pruébelo en línea!" enlace puede ver que el efecto es el mismo.Bash ,
393837 bytesPruébalo en línea!
Imprime un número de patos igual al número de dígitos en un número entero distribuido uniformemente en [0,32767] (por lo tanto, la mayoría de las veces, cinco patos (un buen número de patos)).
-1 byte cada uno gracias a @Chris y @sch señalando pares de citas que no estaban presionando su peso.
fuente
\ncon\\n.sed s/[0-9]/duck\\n/g<<<$RANDOM\goosepuede afeitarse un bytesedno es completamente portátil. En algunas plataformas, puede salirse con una barra invertida\n. En otros no obtendrá una nueva línea, no importa lo que haga.Pure Bash (sin utilidades externas), 25
Basado en la respuesta de @ SophiaLechner , esto también imprime una buena cantidad de patos .
La idea de @ OlivierDulac de usar el script PID shell almacenado en el
$parámetro ahorra 5 bytes.Pruébalo en línea .
fuente
RANDOMa$afeitar 5 bytes? Y uno también podría hacer una cadena muy larga de patos:yes duck|head -n $$;echo goose$$es aceptable, ¡gracias!yes duck | head -n $$;echo goose) como alternativa (más larga que la suya, pero uno tiene MUCHOS patos por 5 caracteres adicionales ^^)Rubí , 30 bytes.
Pruébalo en línea!
Nota: realmente 31 bytes sin el
\ntruco.fuente
Bash + Coreutils,
3627 bytesImprime demasiados patos (entre 2 y
cat /proc/sys/kernel/pid_max), luego un ganso.Ahorró nueve bytes gracias a Digital Trauma y Olivier Dulac.
Pruébalo en línea! (pero tenga en cuenta que puede truncarse ocasionalmente)
Misma longitud, pero sin
echo:Pruébalo en línea!
aes el comando anexarsedy seqcierra. Ambos solo se ejecutan en la línea$$, que corresponde al PID.fuente
head -n $((1+(RANDOM % 5)))$$lugar de$RANDOMpara mi respuesta . Creo que podrías usar lo mismo para ahorrarte 5 bytes. Ah, y pruebasedtambién:yes duck|sed 1$$q;echo gooseyes duck|sed $$q;echo gooseestá bien: no creo que su script tenga un PID <1.PowerShell ,
353028 bytesPruébalo en línea! (versión modificada)
Genera una matriz de
Get-Randomnúmero de artículos. Podría tomar un tiempo. Esto agrega una+1para garantizar que obtengamos al menos unoduck. La versión modificada también incluye un-maindicador ximum5para que pueda ver que el programa funciona como se esperaba (la versión modificada se imprimirá 1, 2, 3 o 4ducks antes degoose).La matriz y la
goosecadena solitaria se dejan en la tubería, y lo implícitoWrite-Outputnos da valores separados por la nueva línea de forma gratuita.No sabes lo difícil que fue para mí no cambiar la última línea a "pato gris" ...
fuente
0..(random)|%{'duck'};'goose'parece un 29, y también generará en algún lugar hasta [int] :: MaxValue (2,1 mil millones) patos antes de un ganso. (Y0..0imprime un pato)Python 2 , 54 bytes
¡Pruébelo en línea!
fuente
C # (compilador interactivo de Visual C #) , 55 bytes
Pruébalo en línea!
fuente
Brachylog ,
2421 bytes-3 bytes gracias a Erik the Outgolfer
Pruébalo en línea!
En celebración del Idioma del mes , mi primera publicación de brachylog El flujo de control en este idioma es genial.
Cómo funciona:
fuente
Geometry Dash World 2.2 Editor - 4 objetos
Explicación:
El disparador BG es el disparador aleatorio actual de 2.2, por lo que alterna el ID de grupo 1 o 2.
El primer "PATO" tiene una identificación de grupo de 1, lo que hace que tenga un 50% de posibilidades de ser eliminado o no (activado).
No hay ningún objeto con el ID de grupo 2 en este nivel, por lo que hay un 50% de posibilidades de que se muestren 2 "PATO".
Cómo reproducir esto:
El primer "PATO" tiene una ID de grupo de 1.
Goose y 2nd duck no tienen ID de grupo
Dentro del disparador aleatorio.
fuente
05AB1E ,
1514 bytesPruébalo en línea!
Imprimirá 2, 5 o 6 patos y luego ganso.
-1 byte gracias a @Emigna usando 'para una sola palabra comprimida (pato)
fuente
'Мya que pato es una sola palabra.['МTΩ#].•zíΘ•»'М₁Ω.D.•zíΘ•»APL (Dyalog) , 22 bytes
1 byte guardado gracias a @EriktheOutgolfer
Pruébalo en línea!
fuente
'Goose'⊣⎕←⍣(?9)⊢'Duck'Retina , 17 bytes
Pruébalo en línea!
Pruébalo en línea!
Imprime 1 o 2 patos, con la misma probabilidad.
Explicación
Establezca la cadena de trabajo
ducke imprímala con un salto de línea final (\). Luego, esto se envuelve en otra etapa de salida, pero esta tiene?aplicada la bandera aleatoria ( ), por lo que solo se imprime con una probabilidad del 50%.Reemplace
duckcongoose, que se imprime implícitamente al final del programa.Aquí hay una alternativa divertida que imprime 1 pato con 50% de probabilidad, 2 patos con 25%, 3 patos con 12.5% ...:
fuente
Vim (script) en Linux,
4643 bytes (4946 con:al inicio de la línea)Ejecutado como
vim -S filenameo pegado en ejecuciónvimcon:antes de cada línea.fuente
\dmás[0-9]. Además, parece que vim no requiere la nueva línea final, por lo que puede ser de 45 bytes :)> <> ,
3122 bytesPruébalo en línea!
-9 bytes basados en la revisión de No es un árbol
fuente
l?!;y salir con un error.Befunge 98 ,
383025 bytesPruébalo en línea!
Duckcabe en una sola cadenafuente
#en la segunda líneawhitespace within a line is finepara que pueda recortar un par de citas (incluso si la salida se ve rara)T-SQL ,
70 4443 bytes (Muchos patos)Gracias @Zac Faragher!
Versión revisada,
54 4340 bytes (1 o 2 patos)Gracias @BradC!
Parece que no puedo hacer que esto se ejecute correctamente en SQL Fiddle , pero funciona bien en LINQPad y SSMS.
No estoy seguro de si esta es una limitación conocida de SQL Fiddle o simplemente estoy haciendo algo mal
fuente
selectaprinty reemplazar la final'duck'select'goose'con'duck(linebreak)goose'(con un salto de línea literal, por supuesto)while rand()<.5print'duck'print'duck(linebreak)goose'por 43.whileaif. Imprime (al azar) uno o dos patos, lo que (creo) aún satisface el desafío.Powershell -
3130 bytesAdvertencia : lo más probable es que termines con muchos patos.
Randomincluye los valores de 0, porInt32.MaxValuelo que, dependiendo de cuán aleatorio sea su número, esto podría ser una gran cantidad de graznidos.fuente
$frente de(Random). Pruébalo en línea!Fisión ,
2419 bytesPruébalo en línea!
-5 bytes gracias a Martin Ender
fuente
Brachylog , 21 bytes
Pruébalo en línea!
Oye, el idioma del mes está inactivo, ¡vamos a mejorar un poco las cosas!
fuente
Befunge
5735 bytes (el perímetro de todo el campo es de19x317x2 caracteres) Gracias a Karhell por la mejora.La segunda línea pone pato y una nueva línea en la pila (al revés) y la genera como una cadena. Después de ese 75% de posibilidades de volver al inicio e imprimir pato nuevamente, 25% (cuando el signo de interrogación decida bajar) para imprimir ganso y detenerse.
fuente
55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"<reduciría su código a 35 bytes