Hoje é noite de jogo de cartas! Você é o dealer e sua tarefa é escrever um programa para distribuir as cartas aos jogadores.
Dada uma série de cartas e o número de jogadores, você precisa dividir a série de cartas em uma mão para cada jogador.
Regras
Seu programa receberá uma matriz não vazia A
, além de um número inteiro positivo diferente de zero n
. A matriz deve ser dividida em n
mãos. Se o comprimento da string não for divisível por n
quaisquer cartões restantes no final, ele deve ser distribuído da maneira mais uniforme possível.
- Se
n==1
, você precisará retornar uma matriz de matriz comA
esse elemento. Se
n
for maior que o comprimento deA
, você precisará retornar todas as mãos e uma mão vazia. sen = 4
earray A = [1,2,3]
, você deve retornar[[1],[2],[3]]
ou[[1],[2],[3],[]]
. Você é livre para lidar com a mão vazia com vazio, indefinido ou nulo.A matriz pode conter qualquer tipo, e não um número.
Você não deve alterar a ordem da matriz ao negociar. Por exemplo
if n = 2
eA= [1,2,3]
, qualquer resultado e não[[1,3],[2]]
será inválido.
Casos de teste
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 demonstração
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)
Isso é código-golfe , então você terá os bytes mais curtos de cada idioma.
Inspirado em Criar pedaços da matriz por chau giang
fonte
0
?Respostas:
05AB1E ,
31 byteEconomizou 2 bytes graças a Adnan
Experimente online! ou como um conjunto de testes
Explicação
Faz exatamente o que o desafio pede
fonte
ι
n=7
, mas esse é um formato de saída aceitável. Eu perdi totalmente o que estava embutido: /R ,
46bytes 25Experimente online!
split
sA
em grupos definidos por1:n
, reciclando1:n
até que corresponda ao comprimento comA
.fonte
Perl 6 ,
3324 bytesExperimente online!
Bloco de código ao curry anônimo que pega um número e retorna um lambda Whatever que pega uma lista e retorna uma lista de listas. Isso pega a segunda opção quando recebe um número maior que o tamanho das listas, por exemplo,
f(4)([1,2,3])
retorna[[1],[2],[3]]
Explicação:
fonte
Wolfram Language (Mathematica) , 28 bytes
Experimente online!
fonte
Japonês, 2 bytes
Toma o array como a primeira entrada.
Tente
fonte
Python 2 , 37 bytes
Código:
Experimente online!
fonte
Geléia ,
62 bytesExperimente online!
Obrigado a @ Jonathanon Allan por salvar 4 bytes
fonte
sZ
funciona?J ,
13,11,10, 9 bytesExperimente online!
como (explicação anterior, fundamentalmente a mesma)
fonte
Carvão , 9 bytes
Experimente online! Link é a versão detalhada do código. Recebe entrada na ordem
[n, A]
e gera cada valor em sua própria linha e cada ponteiro com espaçamento duplo do anterior. Explicação:fonte
Haskell , 39 bytes
Nota:
Data.Lists
é das listas de bibliotecas de terceiros , que não estão no Stackage e, portanto, não serão exibidas no Hoogle.fonte
Data.Lists
parece não existir. Eu diria que você quis dizerData.List
, mas não contémchunksOf
.chunksOf
apenas parece aparecer com a assinaturaInt -> Text -> [Text]
. 1lists
pacote.split
pacote e reexportado pelolists
pacote. Existem versõeschunksOf
para listas, textos, seqüências e provavelmente outras coisas.Kotlin ,
535149 bytesA solução antiga e incorreta funcionava apenas para divisores do comprimento da matriz. Estou certo de que isso pode ser jogado para baixo.
Experimente online!
fonte
n
não é um divisor do comprimento da listaJavaScript (Node.js) , 51 bytes
Experimente online!
JavaScript (Node.js) , 53 bytes
Experimente online!
fonte
APL + WIN 26 ou 31 bytes
Se mãos individuais puderem ser representadas como colunas de uma matriz 2D, 26 bytes se uma matriz de matrizes adicionará 5 bytes.
Experimente online! cortesia do Dyalog Classic
ou
Experimente online! Cortesia de Dyalog Classic
Explicação:
um ← ⎕ prompt para conjunto de cartões
((l ← ⌈ ()a) ÷ n) × n ← ⎕) ↑ solicita o número inteiro, preenche a com zeros para as mãos pares
(l, n) ⍴ crie uma matriz 2D com cada coluna representando cada mão
⊂ [1] se necessário converter para vetor aninhado - matriz de matrizes APL
fonte
TSQL, 44 bytes
Experimente
fonte
MathGolf , 9 bytes
Experimente online!
Explicação
fonte
Java (JDK) , 90 bytes
Experimente online!
Agradecemos a Olivier Grégoire pela lambda e melhor incremento durante a iteração.
fonte
Ruby, 81 bytes
Experimente Online
fonte
each_with_index
é muito caro comparado a um contador de incremento,map{[]}
basicamente faz a mesma coisa que seumap(&:dup)
truque, Proc anônimo etc., que pode reduzir seu código para 59 bytes. Experimente online! Também confira a página de dicas de RubyPHP ,
858382 bytesExperimente online!
Essa não será a entrada mais curta, mas achei que seria divertido tentar e fazer isso usando os recursos da função de matriz PHP. Resultado: longo.
Resultado
fonte
print_flat
você pode simplesmente fazerjson_encode
sandbox - realmente não mude a resposta, apenas pensei em mencioná-la.Wolfram Language (Mathematica) , 25 bytes
Experimente online!
fonte
;; ;;
é apenas uma fatia, aproximadamente equivalente à de python: :
; isso recebe fatias de cada;;
não era;
lol. estava olhando para isso "wth isi ; ; ; ; #
"C # (compilador interativo do Visual C #) , 43 bytes
Experimente online!
fonte
[1,2,3], 4
deve sair[[1],[2],[3]]
. Você está distribuindo 3 cartas para 4 jogadores. Vou atualizar a questão principal.C (gcc), 5 bytes
O sinalizador do compilador
-Df=
(necessário espaço inicial) atende às especificações.f(n_cards,n_hands,card_ptr)
avalia para um ponteiro para uma lista de mãos.Explicação
Em C, é prática comum implementar listas de listas como uma única matriz intercalada, quando o número de listas permanece constante, mas todas as listas podem ser estendidas. Por exemplo, neste caso de cartas de distribuição, é mais comum que mais cartas sejam adicionadas a cada mão do que mais mãos a serem adicionadas, portanto, seria razoável implementar uma lista de mãos como uma lista intercalada. Coincidentemente, o "deck" é uma lista e, portanto, retornamos o parâmetro sem modificação.
Esse desafio provavelmente deveria ter sido protegido.
fonte
Perl 5
-la
,6656 bytesExperimente online!
fonte