Algunas tarjetas comerciales tienen un valor real y se pueden vender por dinero. Doblar las cartas está mal visto porque les quita su valor y las hace parecer menos nuevas. Digamos que tienes una baraja de cartas coleccionables (Pokémon, Magia, etc.) y quieres barajarlas. En lugar de hacer el puente que dobla todas las cartas, otra forma simple de barajar cartas es ponerlas en pilas. Esto es lo que quiero decir.
Antecedentes
Con un mazo de 60 cartas que necesita barajar, puede separar las 60 cartas en tres montones de 20 cartas. Hay varias formas de hacer esto, la más simple es colocar una carta en la pila A, luego una en la pila B, luego una en la pila C. Otra forma es poner una carta en la pila C, luego B, luego A. También hay formas de distribuir las cartas en las pilas de manera desigual. Aquí hay una: pon una carta en la pila A, pon otra carta en A, luego pon una carta en la pila B, luego pon una carta en la pila C.
Desafío
Cree un programa completo que se generará even
si una determinada forma de barajar en pilas distribuye las cartas en las pilas de manera uniforme y, de lo uneven
contrario , genera y el número de cartas en cada pila.
Entrada
La entrada se tomará a través de STDIN o la alternativa más cercana (sin funciones).
[sequence] [deck size]
sequence
Es una cadena de caracteres. Le dice al patrón que las cartas se colocan en las pilas. Cada personaje diferente corresponde a una sola pila. Esta cadena siempre estará por debajo del tamaño del mazo y contendrá solo letras mayúsculas AZ.deck size
es un número entero que especifica cuántas cartas hay en el mazo. Si el tamaño del mazo es 60, el número de cartas en el mazo es 60.
Salida
even
Si el número de cartas en cada pila al final de la baraja es el mismo, su programa debería mostrar esto.
uneven [pile1] [pile2] [...]
Si el número de cartas en cada pila al final de las barajas no es el mismo, su programa debería generar uneven
y la cantidad de cartas en cada pila de esta manera: uneven 20 30
si la pila A contiene 20 canrds y la pila B contiene 30. El orden del los números de pila no importan.
Otra información
- Este es un desafío de código de golf, por lo que gana el código más corto en bytes el 25 de septiembre. Si hay un empate en el recuento de bytes, el código que se envió primero gana.
- Su programa debe ser un programa, no una función.
- Si es posible, incluya un enlace a un intérprete en línea o un enlace a un lugar donde pueda descargar un intérprete para su idioma en su respuesta.
- Cualquier cosa que no especifique en este desafío es un juego justo, lo que significa que si no lo digo, depende de ti. Si algo es vago, dígame y editaré la respuesta en consecuencia. (Espero que esto sea más fácil que mi último desafío).
Ejemplos
Input | Output | Alternate outputs (if uneven)
|
ABC 30 | even
ABC 31 | uneven 11 10 10 | uneven 10 11 10 | uneven 10 10 11
BCA 60 | even
BBA 24 | uneven 8 16 | uneven 16 8
ABACBC 120 | even
BBABA 50 | uneven 20 30 | uneven 30 20
AABBB 12 | even
sequence
ve o cómo funciona. ¿Podría agregar algunos casos de prueba?:P
ABDD 12
una entrada válida? ¿Cuál debería ser el resultado? Además, ¿entiendo bien queAABBB 12
es par?Respuestas:
Pyth,
3331 bytesEntrada de ejemplo:
fuente
Python 3.x, 106
128138bytesEsto duplica la secuencia de entrada (más veces de lo necesario, lo cual es lo suficientemente bueno) y luego toma solo los primeros
n
caracteres. Estos se cuentan y se eligeuneven
oeven
, y si es el primero, también se imprimen los recuentosprint(*z)
, que se desempacan automáticamentez
para mí.¡Ahorró 32 bytes gracias a xnor y Sp3000!
Además, Python 3.5 tiene una nueva característica que permite esta solución de 102 bytes:
len({*z})>1
desempaqueta la listaz
, crea un conjunto a partir de ella, luego verifica si tiene más de un elemento. Es{*z}
específicamente que es nuevo.fuente
[t.count(x) for x in set(t)]
se puede hacer comomap
:map(t.count,set(t))
. La pregunta permite que las pilas en cualquier orden, por lo que creo que se puede evitar hacersorted
, incluso si esto significa que tiene que hacer algo un poco más largo quez==z[::-1]
comoz[1:]==z[:-1]
.print*
imprimir los elementos de una lista separada por espacios. Esto suele ser más corto que' '.join
.CJam, 35 bytes
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente