Barajar un mazo de cartas es difícil para los niños, por lo que deben encontrar formas de obtener un mazo razonable y bien barajado de la manera más simple posible.
Una forma de hacer esto que da resultados razonablemente buenos es:
- Saca la carta superior e insértala en un lugar aleatorio en el mazo
- Saque la tarjeta inferior e insértela en un lugar aleatorio en el mazo.
- Continúa hasta que creas que es lo suficientemente bueno.
Tenga en cuenta que nunca debe insertar una tarjeta en el punto superior o inferior, debe colocarse en algún lugar del mazo.
En lugar de barajar las cartas, vamos a barajar caracteres alfanuméricos: 0-9
, A-J
, a-j
, q-z
y Q-Z
.
Comience con la cadena que se muestra a continuación y mezcle los caracteres de la manera descrita anteriormente. Puede elegir si desea continuar barajando infinitamente o barajar las cartas 100 rondas (100 cartas desde la parte superior y 100 cartas desde la parte inferior).
0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ
El desafío es mostrar los personajes que se barajan. Cada "barajado" (sacar e insertar la tarjeta) tomará entre 0.25 y 0.35 segundos.
El siguiente gif muestra un ejemplo de salida:
Este es el código de golf, por lo que gana el código más corto en bytes.
"¿Por qué no tienes a-t
en lugar de a-j
, q-z
?" Porque esto ilustrará juegos de cartas, no solo personajes. Y sí, hay 5 trajes.
Nota: he decidido dejar de usar la marca de verificación en code-golf -challenges. Publicaciones meta relevantes aquí y aquí .
0-9
,A-J
,a-j
,q-z
yQ-Z
, de acuerdo con la pregunta.Respuestas:
JavaScript (ES6),
192188185 bytesEditar: Guardado 4 bytes gracias a @ L.Serné. Guardado 3 bytes gracias a @Arnauld.
fuente
e^=1
dentro de los paréntesis vacíos de laMath.random
llamada. También puede cambiar textContent a innerHTML, ya que no está pasando caracteres especiales. También puede establecere
a 0 dentro de latoLowerCase
llamada.e
. Podrías usarlos
. (Porque('some_string'^1) === 1
)MATL,
625856 bytes2 bytes guardados gracias a @Luis
Esta versión se ejecutará indefinidamente. Pruebe la demostración en línea en MATL Online , un intérprete experimental en línea que admite salida dinámica. Esto se ejecutará durante 30 segundos (un límite estricto impuesto por la versión en línea) si no se elimina primero.
Explicación
fuente
Perl, 117 bytes
Para ejecutarlo:
Explicaciones:
-
@F=(0..9,a..j,"q"..z,A..J,Q..Z)
crea el mazo inicial y lo almacena@F
.- Se
{...;redo}
ejecuta...
para siempre.-
splice@F,++$|+rand(@F-2),0,++$v%2?shift@F:pop@F
alternativamente, retire el primer / último elemento de la plataforma e insértelo en una posición aleatoria (mientras se incrementa$|
, para que las impresiones no se almacenen),-
print"\r",@F
imprime la cubierta,-
select$,,$,,$,,.3
duerme durante 0.3 segundos (Perlsleep
no puede dormir menos de 1 segundo),fuente
0..9
, no1..9
, y tu mazo inicial también está fuera de servicio :)Python 3,
199196192186 bytes¡Ahorró 4 bytes gracias a TuukkaX y 6 bytes gracias a FlipTack!
Utiliza la
print
función de Python 3 para suprimir la nueva línea, más corta que la de Python 2sys.stdout.write
.Utiliza una variable flip-flop para cambiar entre mover las cartas superior e inferior.
Sin golf:
fuente
import random,time
Sería más corto?C,
290285 bytesSin golf:
fuente
Rápido, 288 bytes
Jugar al golf en Swift siempre es un desafío, ya que uno de sus puntos de venta es la expresividad.
fuente
Rubí (
138119 Bytes)No es tan corto como @PaulPrestidge, pero al menos lo entiendo. ¡También es genial saber que Ruby es como un túnel interminable de increíble!
fuente
Rubí,
111101 caracteresBucles infinitamente.
fuente
Noodel , 41 bytes no competitivos
Intentalo:)
Cómo funciona
fuente
bash, 170 bytes
aquí '^' (en la primera línea) representa
ctrl-m
: ingresado en la línea de comandos comoctrl-v
enter
o en un editor de acuerdo con cómo funciona su editor (suponiendo que su editor funcione)fuente