Una tarjeta de Bingo tiene cinco columnas de cinco casillas cada una, con la casilla central designada "GRATIS". Los números no pueden duplicarse.
Las cinco columnas se rellenan con el siguiente rango de números:
- B: 1-15
- Yo: 16-30
- N: 31-45
- G: 46-60
- O: 61-75
En la menor cantidad de caracteres posible, genere una cadena que se pueda interpretar como una tarjeta de Bingo aleatorizada. Por ejemplo:
1,2,3,4,5,16,17,18,19,20,31,32,33,34,35,46,47,48,49,50,61,62,63,64,65
Este ejemplo no está aleatorizado, por lo que puedo mostrar que la columna 1 se rellena con 1,2,3,4,5. También tenga en cuenta que el espacio libre no ha recibido ningún tratamiento especial porque el front-end que interpreta esta cadena lo omitirá.
Otro ejemplo sería:
1,16,31,46,61,2,17,32,47,62 ...
En este ejemplo, la salida es por fila en lugar de por columna.
Un tercer ejemplo podría ser:
01020304051617181920313233343546474849506162636465
Esta es la misma salida que el primer ejemplo, excepto en longitud fija.
Respuestas:
PHP, 86
fuente
join
es un alias paraìmplode
y puede colocar la asignación en el bucle after. Esto acortará su idea afor($o=[];25>$i=count($o);$o[$n]=$n)$n=rand(1,15)+($i-$i%5)*3;echo join(",",$o);
Ruby 1.9, 48 caracteres
fuente
Windows PowerShell, 51
54Sin embargo, no estoy seguro si entendí tu tarea correctamente.
Resultados de muestra:
fuente
PHP 106
No estoy seguro de haber entendido correctamente el problema ... ¿Puede proporcionar una explicación más detallada?
fuente
R,
6351504945 bytesGracias a Billywob por las sugerencias continuas y por alentar mi racha competitiva.
fuente
cat(sapply(list(15,16:30,31:45,46:60,61:75),sample,5))
Editar: no importa la impresión, agregada en sucat
lugarcat(sapply(split(1:75,ceiling(1:75/15)),sample,5))
. Funciona dividiendo el vector1:75
en una lista donde cada elemento es un vector de longitud en15
lugar de usarlist()
para pasar objetossapply
.labels = FALSE
opcióncut
. Porque lo único que importa es que se pasan5
factores repetidos a la función de división, independientemente de los nombres.Clojure - 52 caracteres
Ejemplo de salida (tenga en cuenta que proporciona las filas separadas como sublistas):
fuente
Python 2, 84 bytes
Si la salida como list if lists está bien, hay una solución de 75 bytes :
fuente