¡Esta noche es la noche del juego de cartas! Usted es el distribuidor y su tarea es escribir un programa para repartir las cartas a los jugadores.
Dado un conjunto de cartas y la cantidad de jugadores, debes dividir el conjunto de cartas en una mano para cada jugador.
Reglas
Su programa recibirá una matriz no vacía A
, así como un entero positivo no cero n
. La matriz debería dividirse en n
manos. Si la longitud de la cadena no es divisible por n
las cartas sobrantes al final, debe distribuirse de la manera más uniforme posible.
- Si
n==1
, tendrá que devolver una matriz de matriz conA
su único elemento Si
n
es mayor que la longitud deA
, deberá devolver cada mano y una mano vacía. sin = 4
yarray A = [1,2,3]
, debe regresar[[1],[2],[3]]
o[[1],[2],[3],[]]
. Usted es libre de manejar la mano vacía con vacía, indefinida o nula.La matriz puede contener cualquier tipo en lugar de un número.
No debe cambiar el orden de la matriz mientras trata. Por ejemplo
if n = 2
yA= [1,2,3]
, cualquier resultado en lugar de[[1,3],[2]]
será inválido.
Casos de prueba
n A Output
1 [1,2,3,4,5,6] [[1,2,3,4,5,6]]
2 [1,2,3,4,5,6] [[1,3,5],[2,4,6]]
3 [1,2,3,4,5,6] [[1,4],[2,5],[3,6]]
4 [1,2,3,4,5,6] [[1,5],[2,6],[3],[4]]
7 [1,2,3,4,5,6] [[1],[2],[3],[4],[5],[6]] // or [[1],[2],[3],[4],[5],[6],[]]
Programa de demostración
def deal(cards, n):
i = 0
players = [[] for _ in range(n)]
for card in cards:
players[i % n].append(card)
i += 1
return players
hands = deal([1,2,3,4,5,6], 2)
print(hands)
Este es el código de golf , por lo que los bytes más cortos de cada idioma serán los ganadores.
Inspirado en Crear fragmentos de matriz por chau giang
fuente
0
?Respuestas:
05AB1E ,
31 byteGuardado 2 bytes gracias a Adnan
Pruébalo en línea! o como un conjunto de pruebas
Explicación
Hace exactamente lo que pide el desafío
fuente
ι
n=7
, pero ese es un formato de salida aceptable. He echado de menos esa función integrada: /R ,
4625 bytesPruébalo en línea!
split
sA
en grupos definidos por1:n
, reciclando1:n
hasta que coincida con la longitudA
.fuente
Perl 6 ,
3324 bytesPruébalo en línea!
Bloque de código curioso anónimo que toma un número y devuelve un Lambda Cualquiera que tome una lista y devuelva una lista de listas. Esta toma la segunda opción cuando se le da un número mayor que la longitud de las listas, por ejemplo,
f(4)([1,2,3])
devuelve[[1],[2],[3]]
Explicación:
fuente
Wolfram Language (Mathematica) , 28 bytes
Pruébalo en línea!
fuente
Japt, 2 bytes
Toma la matriz como la primera entrada.
Intentalo
fuente
Python 2 , 37 bytes
Código:
Pruébalo en línea!
fuente
Jalea ,
62 bytesPruébalo en línea!
Gracias a @JonathanAllan por guardar 4 bytes
fuente
sZ
funcionaJ ,
13,11,10, 9 bytesPruébalo en línea!
cómo (explicación previa, fundamentalmente la misma)
fuente
Carbón de leña , 9 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma la entrada en el orden
[n, A]
y genera cada valor en su propia línea y cada mano a doble espacio de la anterior. Explicación:fuente
Haskell , 39 bytes
Nota:
Data.Lists
es de las listas de bibliotecas de terceros , que no está en Stackage y, por lo tanto, no aparecerá en Hoogle.fuente
Data.Lists
no parece existir Supongo que quisiste decirData.List
, pero no contienechunksOf
.chunksOf
solo parece aparecer con la firmaInt -> Text -> [Text]
. 1lists
paquete.split
paquete y reexportado por ellists
paquete. Hay versiones dechunksOf
listas, texto, secuencias y probablemente otras cosas.Kotlin ,
535149 bytesLa antigua solución incorrecta solo funcionaba para los divisores de la longitud de la matriz. Estoy seguro de que esto se puede jugar golf.
Pruébalo en línea!
fuente
n
no es un divisor de la longitud de la listaJavaScript (Node.js) , 51 bytes
Pruébalo en línea!
JavaScript (Node.js) , 53 bytes
Pruébalo en línea!
fuente
APL + WIN 26 o 31 bytes
Si las manos individuales se pueden representar como columnas de una matriz 2D, entonces 26 bytes si una matriz de matrices agrega 5 bytes.
Pruébalo en línea! cortesía de Dyalog Classic
o
Pruébalo en línea! Cortesía de Dyalog Classic.
Explicación:
un aviso ← ⎕ para una variedad de tarjetas
((l ← ⌈ (⍴a) ÷ n) × n ← ⎕) ↑ solicitud de número entero, rellene a con ceros a las manos pares
(l, n) ⍴ crea una matriz 2D con cada columna que representa cada mano
⊂ [1] si es necesario convertir a vector anidado - matriz de matrices APL
fuente
TSQL, 44 bytes
Pruébalo
fuente
MathGolf , 9 bytes
Pruébalo en línea!
Explicación
fuente
Java (JDK) , 90 bytes
Pruébalo en línea!
Gracias Olivier Grégoire por la lambda y mejor incremento al iterar.
fuente
Ruby, 81 bytes
Pruébalo en línea
fuente
each_with_index
es bastante costoso en comparación con un contador incremental,map{[]}
básicamente hace lo mismo que sumap(&:dup)
truco, proceso anónimo, etc. que puede reducir su código a 59 bytes. Pruébalo en línea! Consulte también la página de consejos de RubyPHP ,
858382 bytesPruébalo en línea!
Esta no será la entrada más corta, pero pensé que sería divertido intentar hacerlo utilizando las funciones integradas de la matriz de PHP. Resultado: largo.
Salida
fuente
print_flat
ti solo puedes hacer unjson_encode
sandbox : realmente no cambiar la respuesta, solo pensé en mencionarlo, ¡salud!Wolfram Language (Mathematica) , 25 bytes
Pruébalo en línea!
fuente
;; ;;
: :
;;
no era;
jajaja. estaba mirando este "wth isi ; ; ; ; #
" en marchaC # (compilador interactivo de Visual C #) , 43 bytes
Pruébalo en línea!
fuente
[1,2,3], 4
debería salir[[1],[2],[3]]
. Estás repartiendo 3 cartas a 4 jugadores. Actualizaré la pregunta principal.C (gcc), 5 bytes
El indicador del compilador
-Df=
(se requiere espacio inicial) cumple la especificación.f(n_cards,n_hands,card_ptr)
evalúa a un puntero a una lista de manos.Explicación
En C, es una práctica común implementar listas de listas como una sola matriz intercalada, cuando el número de listas permanece constante pero todas las listas se pueden extender. Por ejemplo, en este caso de repartir cartas, es más común agregar más cartas a cada mano que agregar más manos, por lo que sería razonable implementar una lista de manos como una lista intercalada. Casualmente, el "mazo" es una lista de este tipo y, por lo tanto, devolvemos el parámetro sin modificar.
Este desafío probablemente debería haber sido sandboxed.
fuente
Perl 5
-la
,6656 bytesPruébalo en línea!
fuente