Nunca ha habido un desafío definitivo de tarjetas ASCII AFAIK. Entonces, usando el siguiente mazo de cartas ASCII:
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): |
| ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
Tome dos enteros p
y q
como entrada; donde p
es el número de jugadores y q
el número de cartas que recibe cada jugador.
- Aleatoriamente baraja el mazo de cartas (esto es ambiguo, pero significa que todas las cartas deben aparecer igualmente en cualquier lugar una vez).
- Reparte 1 ronda de cartas por jugador, generando
q
filas dep
cartas en cada fila.
Reglas:
- Los resultados deben ser uniformemente aleatorios, cada carta debe ser igualmente probable que aparezca en cualquier lugar.
- Se garantiza que
0 < p*q <= 52 and p < 10
puede tener un comportamiento indefinido para escenarios donde esto no se cumple. - Debe generar
q
filas de tarjetas conp
tarjetas por fila. - Cada columna debe estar separada por
|
(un tubo de caracteres rodeado de espacios); Si elige un personaje diferente a este, explique por qué. Los espacios circundantes aquí NO son opcionales. - Cada fila debe tener 1 o más líneas nuevas entre ellas, más de una es aceptable, 0 no (1 línea nueva significa la línea nueva allí por defecto).
- Cada fila debe estar etiquetada con el jugador que la posee en el formato "Jugador N" (0 o 1 indexado está bien).
- Ninguna tarjeta puede aparecer más de una vez.
T
es por diez.
Ejemplos:
Función ( p=1,q=1
):
Player 1 # Can also be 0.
.------.
|2.--. |
| (\/) |
| :\/: |
| '--'2|
'------'
Función ( p=2,q=1
):
Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|2.--. | | |T.--. |
| (\/) | | | (\/) |
| :\/: | | | :\/: |
| '--'2| | | '--'T|
'------' | '------'
Función ( p=2,q=2
):
Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|J.--. | | |3.--. |
| (\/) | | | :/\: |
| :\/: | | | :\/: |
| '--'J| | | '--'3|
'------' | '------'
.------. | .------.
|8.--. | | |6.--. |
| :(): | | | :/\: |
| ()() | | | (__) |
| '--'8| | | '--'6|
'------' | '------'
Crédito artístico a una fuente en: http://patorjk.com/software/taag
code-golf
ascii-art
random
card-games
Urna de pulpo mágico
fuente
fuente
Each row must have 1 or more newlines inbetween them, more than one is acceptable, 0 is not.
... ¿Pero sus casos de prueba no tienen líneas nuevas entre las tarjetas ...?Respuestas:
De carbón ,
142133125 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: ahorré 9 bytes al mejorar mi código de muestreo aleatorio. Ahorré otros 8 bytes al mejorar el código de impresión de mi traje. Explicación:
Lea el número de tarjetas en
q
.Pase sobre cada jugador.
Si este no es el primer jugador, imprima la línea vertical entre el jugador anterior y este.
Imprime el número de jugador.
Pase sobre cada tarjeta.
Imprime el borde de la tarjeta.
Elija un índice de tarjeta que aún no se haya elegido y agréguelo a la lista de índices de tarjeta elegidos.
Elija e imprima el rango de la tarjeta indexando cíclicamente en una cadena de rangos de tarjeta válidos (
2-9, T, J, Q, K, A
).Imprime la parte superior del traje.
Imprime el centro del traje cortándolo en una cuerda. El segmento comienza en el módulo de índice de tarjeta 4 y toma cada 4 ° carácter hasta que se agota la cadena (o
f
se alcanza el = 1000 ° carácter). Como 4 y 13 son coprimos, esto garantiza que todas las 52 tarjetas sean posibles.Imprima la parte inferior del palo y una copia del rango, y luego muévase a un punto que convenientemente no esté muy lejos de la copia del rango, el comienzo de la siguiente carta o el comienzo de la línea divisoria para el próximo jugador
fuente
Python 2 , 357 bytes
Pruébalo en línea!
No tengo una maldita idea.
fuente
Jalea , 126 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
328... 312 bytesToma entrada en la sintaxis de curry
(p)(q)
. Los jugadores están indexados a 0.Manifestación
Mostrar fragmento de código
¿Cómo?
Esta es una función recursiva, que genera la salida de abajo hacia arriba. Durante la parte principal en la que se roban las cartas,
i
se inicializap*q*6
y disminuye hasta que llega0
. Luego dibujamos el encabezado disminuyendo aún mási
hasta que llegue-p
.El arte ASCII se divide en pequeñas piezas almacenadas en la matriz
a[]
. La siguiente tabla describe el contenido dea[]
, lo que hace que el resto del código sea más fácil de entender.Formateado y comentado
fuente
Python 2 ,
382358346338332 bytesPruébalo en línea!
fuente
SOGL V0.12 , 106 bytes
Pruébalo aquí!
Generador de tarjetas:
Arrastramiento:
Relación comercial:
fuente
Rubí, 262 bytes
¡Más difícil de seguir, pero más corto!
Rubí, 279 bytes
Crea un formato para cada fila, luego usa el
%
operador comosprintf
para rellenarlo.El hecho de que el valor de la tarjeta aparezca en cada 3a fila es útil. Los valores de las tarjetas se presentan en hexadecimal con los dígitos
01BC
sustituidos porTJQK
.Se guardaron 4 bytes de los símbolos del palo al considerar que la parte superior de los diamantes y las espadas son iguales, pero se agregaron 2 nuevamente para que
-4
al final de losj%4*4-4
códigos del traje sean -4 0 4 u 8, donde[-4,4]
significa 4 caracteres que comienzan con el 4to último carácter en el cuerda.Probablemente podría guardar algunos bytes más. Tener que repetir el código para las identificaciones de los jugadores es feo.
fuente
PHP, 509 bytes
Pruébalo en línea!
Este es mi primer intento de golf de código, por lo que probablemente se pueda mejorar mucho. Pensé que tenía que comenzar en alguna parte. :)
fuente
Java (OpenJDK 8) ,
784835843826815781775 bytesPruébalo en línea!
Por qué el voto negativo, cumple con las especificaciones
fuente
Function<String,String>
: este último es muy, muy costoso. Tanto en la creación como cuando se usa.n[c]=t<2?"A":t<10?""+t:""+"TJQK".charAt(t-10)
;for(j=0;j<p;j++){o+=...;l++;}
puede serfor(j=0;j<p;l++,j++)o+=...;
; puedes enreturn o;
lugar deSystem.out.print(o);
usar un segundo enFunction
lugar deConsumer
;,y=p*q
se puede quitar y puede usarp*q
dos veces directamente en lugar dey
. Sin duda, hay mucho más para el golf, pero no tengo tiempo para investigarlo ahora mismo.s[l]<2?":/\\:":s[l]<3?":/\\:"
puede sers[l]<3?":/\\:"
ys[i*p+j]<1?":\\/:":s[i*p+j]<2?":\\/:"
puede sers[i*p+j]<2?":\\/:"
. @ OlivierGrégoire Y soy consciente de que lo más probable es que se reduzca a la mitad, así que entiendo el voto negativo. Pero esto es principalmente una falta de experiencia, y de hecho no leer todos los consejos varias veces. Algunas de las cosas en la respuesta que he hecho también en el pasado, y este no es un desafío fácil en particular para Java. Por cierto, si tiene una respuesta de 400-450 bytes, ¿por qué no la publica como una respuesta separada (si es lo suficientemente diferente)? Tendrías mi voto a favor. ;)Python 3, 332 bytes
fuente