Entonces, la semana pasada publiqué un desafío para jugar a Duck, Duck, Goose . Esto llevó a que varios habitantes de Minnesota comentaran sobre su variación regional de 'pato gris' .
Así que aquí están las reglas:
Usando esta lista de colores:
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Gray
Escriba un programa para seguir estas reglas:
- Seleccione uno de estos colores y añádalo a la palabra 'pato' e imprima el resultado en una nueva línea.
- Si el color no era 'Gris', repita el paso 1.
- Si el color era 'Gris', finalice su programa.
Reglas que deben seguirse:
- El programa no debe imprimir constantemente el mismo número de líneas.
- Puede comenzar en 'Pato gris', pero no debería hacerlo de manera consistente.
- Debe haber exactamente un pato en cada línea y no se emiten líneas vacías.
- Debe haber al menos un espacio entre un color y un pato.
- El espacio en blanco antes y después del resultado significativo no importa.
- El caso de la salida no importa.
- Los colores se pueden repetir.
- La salida no tiene que contener todos los colores cada vez, pero debe ser posible que su código genere todos los colores.
- No se pueden incluir colores fuera de la matriz anterior.
- Gris o gris son aceptables en su respuesta.
- Los colores no deben estar consistentemente en el mismo orden.
- Apunta al programa más corto. El menor número de bytes gana.
Salida de ejemplo:
Green duck
Orange duck
Yellow duck
Indigo duck
Yellow duck
Gray duck
Gracias a @Mike Hill por alertarme por primera vez de esta variación.
Grey
una vez (para no tener que elegir de todos ellos y verificar si he elegidoGrey
).Respuestas:
05AB1E ,
4240 bytesGuardado 2 bytes gracias a Erik the Outgolfer
Pruébalo en línea!
fuente
ind
esëß
!LuaLaTeX,
220211 caracteresmando:
No el más corto, sino el más elegante. Basado en la solución de @ skillmon
fuente
tikzducks
allí :):)
Código de máquina 6502 (C64), 124 bytes
Demo en línea - Uso:
SYS49152
.Explicación (desmontaje comentado):
fuente
sys 49152
.Perl 5 , 79 bytes
Pruébalo en línea!
fuente
Taxi , 1995 bytes
Pruébalo en línea!
Creo que vale la pena señalar que el 47% de este código es solo elegir un número entero aleatorio del 1 al 8.
Además, Taxi es tan detallado que es mucho más corto codificar el código
duck\n
después de cada color en lugar de concatenarlo más tarde.Aquí está la versión sin golf:
fuente
Java (OpenJDK 9) , 133 bytes
Pruébalo en línea!
Explicaciones
fuente
Ruby ,
93 91 90 89 87 8685 bytes¡Gracias a Dom Hastings por guardar 2 bytes, Kirill L. 1 byte y Asone Tuhid 1 byte!
Pruébalo en línea!
fuente
()
todo el código y si se utiliza$.
en lugar des
almacenar el índice, se puede evitar la creacións
por completo (ya que$.
es pre-inicializado al número de línea!) Tendrá que desplazarseGrey
hasta el final de la lista y comprobar si hay$.<7
lugar aunque. ¡Espero que ayude!s=1
y$.
era perfecto!while s...
y se necesitaba el espacio. No vi esta oportunidad después de cambiars
a$.
.Color+" duck"
ahorra 1 byteLenguaje de script Operation Flashpoint , 133 bytes
Llamar con:
Salida de ejemplo:
Al principio, de alguna manera leí mal el desafío como si el objetivo fuera simplemente generar una cantidad variable de líneas, no necesariamente terminando en la línea "Pato gris". Después de esa interpretación incorrecta, se produjo un código un poco más interesante:
fuente
pdfTeX,
231220219209207 bytesLuaTeX,
216206204 bytesfuente
Brachylog , 68 bytes
Pruébalo en línea!
fuente
Ruby ,
8481 bytesGracias a Dom Hastings por -3 bytes.
Pruébalo en línea!
fuente
$_
, ¡puede teneruntil/y/
al final por -3!PHP, 89 bytes
Ejecutar
-nr
o probarlo en línea .fuente
> <> , 107 bytes
Pruébalo en línea!
fuente
Octava ,
114112 bytesPruébalo en línea!
Hay un montón de opciones diferentes que están todas entre 112 y 118 bytes ... Algunos inicializan un índice al principio y lo disminuyen por un número aleatorio para cada ciclo, y esperan hasta que sea 0 . Otros lo usan en
printf
lugar dedisp
evitar algunos corchetes, etc.fuente
cat
yhorzcat
. Gracias aunque :)PHP ,
1331251111089792 bytesPruébalo en línea!
-8 bytes gracias a @Olivier Grégoire
-3 bytes gracias a @manatwork
-11 bytes gracias a @Dom Hastings
fuente
Grey
aX
, ya que no se usa. Ganarás 6 bytes.for
condición de 's a necesitar sin paréntesis:x!=$b=$a[array_rand($a)]
. Por cierto,?>
termina una declaración, no es necesario;
delante de ella.x
y usarlos$b=$a..
como condición y usar enrand(0,7)
lugar dearray_rand
. Puede eliminar la nueva línea entre?>
yGrey duck
también. Además, su enlace TIO todavía tenía etiquetas completas, ¡puede agregarlas-d short_open_tag=on
a las banderas para que funcione! :)Bash + GNU utilidades, 72
Pruébalo en línea .
fuente
bash, 96 bytes
Gracias a @DigitalTrauma.
fuente
>0
, sin embargo, me fui en${#a}
lugar de8
.${#a}
lugar de8
? Este es el código de golf: no es necesario que su código pueda generalizarse para que se modifique para un número diferente de colores. Todo lo que necesita hacer es cumplir con la especificación en el menor número de bytes.JavaScript, 104 bytes
Pruébalo en línea
fuente
new Date
para el RNG aquí.AWK , 114 bytes
Pruébalo en línea!
Explicación
Tenga en cuenta que esto requiere "alguna" entrada. La entrada puede estar vacía. Para evitar la necesidad de entrada, añada la primera línea con
BEGIN
fuente
PowerShell , 94 bytes
Pruébalo en línea!
Bucles hasta que
$r
sea igual aGrey
. Dentro del bucle,-split
s la cadena literal en las nuevas líneas, elige una deRandom
ellas, luego imprime el color másDuck
(técnicamente, se deja en la tubería y la limpieza de la tubería en la siguiente iteración del bucle haceWrite-Output
que suceda). Tenga en cuenta que es teóricamente posibleGrey
que nunca se elija, y que el ciclo continúe infinitamente, pero esto casi nunca (en el sentido de probabilidad) sucederá.fuente
R , 101 bytes
Pruébalo en línea!
Muy inspirado por la respuesta de @ user2390246 al desafío relacionado. Necesitamos dos fuentes de aleatoriedad: cambiar el orden de los colores y muestrear los colores de pato no gris. El
sample
tomará una muestra aleatoria de tamaño aleatorio dada por una distribución exponencial con parámetro de velocidad1
, truncado a un entero. El uso de un distrubtion exponencial lamentablemente significa que hay una probabilidad deexp(-8)
o alrededor de0.0003354
que la muestra será por lo menos8
, por lo que tenemos que muestra conreplace=T
.fuente
\n
con una nueva línea real para 1colors()[c(26,254,498,552,640,652)]
en lugar descan(..)
etc., debería reducirse a aproximadamente 83colors()
! Esos son algunos buenos campos de golf, que creo que deberías publicar como tu propia respuesta, ya que esta es la forma menos elegante de obtener los colores.Python 2 ,
138133120117116 bytesPruébalo en línea!
Mucho mejor con algunas ideas de @EriktheOutgolfer. ¡Gracias!
-3 más gracias a @ovs
-1 con gracias a @Rod por un nuevo y genial truco aprendido :-)
fuente
Retina ,
6968 bytesGracias a Leo por guardar 1 byte.
Pruébalo en línea!
Explicación
.
suprime la salida implícita al final del programa (de lo contrario, obtendríamos dos patos grises)./y/^{
envuelve todo el programa en un bucle que continúa mientras la cadena de trabajo no contenga ay
. El resto de esa línea establece la cadena de trabajo en una lista separada por saltos de línea de todos los colores.Seleccionamos una línea aleatoria de la cadena de trabajo (y, por lo tanto, un color aleatorio). E imprimimos el resultado con un final
duck
y un salto de línea.fuente
MATL ,
6864 bytesPruébalo en línea!
Explicación
fuente
Python 3,
130,128,127,126, 125 bytes-1 por @ElPedro!
-1 por mí
-1 por @Bubbler!
Pruébalo en línea!
fuente
d!=c[0]
que guardar un byte?print(d,'duck')
para guardar un byte El delimitador predeterminado es un espacio.Java (JDK 10) , 287 bytes
Pruébalo en línea!
Mi primer codegolf! Obviamente no es competitivo, simplemente feliz de haber aprendido suficiente Java (actualmente en CS200) para poder participar.
fuente
Kotlin , 122 bytes
Pruébalo en línea!
fuente
MS-SQL, 158 bytes
Basado en gran medida en la excelente respuesta de Razvan , pero utilizando la
STRING_SPLIT
función específica de MS-SQL 2016 y posterior. También usa un enGOTO
lugar de unWHILE
bucle.Formateado:
fuente
T-SQL ,
195185184 bytesfuente
BEGIN
.Python 2 , 98 bytes
Mira ma no hay importaciones!
(Imprime espacios adicionales entre los colores y
duck
según lo permitido en la pregunta)Pruébalo en línea!
Un generador de números pseudoaleatorios bastante pobre sembrado con la identificación del objeto de 0 (pero parece ajustarse a la especificación) que produce repetidamente un número entero
x
, en [0,7] que se utiliza para cortar una lista de caracteres de ese índice en pasos de 8 para obtener el nombre del color que se imprime junto conduck
una tupla, forzando un espacio intermedio. Cuando sex
convierte en ceroGrey
se imprime y la evaluación de la siguiente entrada al módulo genera errores de generador de números aleatorios que intentan dividir por cero (v=1/x,v
intenta hacer una nueva tupla con el primer elemento1/x
=1/0
)La misma manera es 100 en Python 3 con
fuente