Alguns cromos têm valor real e podem ser vendidos por dinheiro. Dobrar as cartas é desaprovado, porque tira seu valor e as faz parecer menos novas. Digamos que você tenha um baralho de cartas (Pokémon, Magia etc.) e queira embaralhá-las. Em vez de fazer a ponte que dobra todas as cartas, outra maneira simples de embaralhar as cartas é colocá-las em pilhas. Aqui está o que eu quero dizer.
fundo
Com um baralho de 60 cartas que precisa ser baralhado, você pode separar as 60 cartas em três pilhas de 20 cartas. Existem várias maneiras de fazer isso, sendo a mais simples colocar uma carta na pilha A, depois uma na pilha B, depois uma na pilha C. Outra maneira é colocar uma carta na pilha C, depois B e depois A. também existem maneiras de espalhar os cartões pelas pilhas de maneira desigual. Aqui está um: coloque um cartão na pilha A, coloque outro cartão em A, depois coloque um cartão na pilha B e depois coloque um cartão na pilha C.
Desafio
Crie um programa completo que produzirá even
se uma certa maneira de se agrupar em pilhas espalhar as cartas nas pilhas uniformemente, e as saídas uneven
e o número de cartas em cada pilha de outra forma.
Entrada
A entrada será feita através do STDIN ou da alternativa mais próxima (sem funções).
[sequence] [deck size]
sequence
é uma sequência de caracteres. Diz o padrão em que as cartas são colocadas nas pilhas. Cada caractere diferente corresponde a uma única pilha. Essa string sempre estará abaixo do tamanho do deck e conterá apenas letras maiúsculas AZ.deck size
é um número inteiro que especifica quantas cartas estão no baralho. Se o tamanho do baralho for 60, o número de cartas no baralho é 60.
Resultado
even
Se o número de cartões em cada pilha no final do shuffle for o mesmo, seu programa deverá produzir isso.
uneven [pile1] [pile2] [...]
Se o número de cartões em cada pilha no final dos shuffles não for o mesmo, seu programa deverá gerar uneven
o número de cartões em cada pilha assim: uneven 20 30
se a pilha A contiver 20 canrds e a pilha B contiver 30. A ordem das números de pilha não importa.
Outra informação
- Esse é um desafio de código de golfe, portanto o código mais curto em bytes de 25 de setembro vence. Se houver um empate na contagem de bytes, o código enviado primeiro vence.
- Seu programa deve ser um programa, não uma função.
- Se possível, inclua um link para um intérprete on-line ou um link para um local onde eu possa baixar um intérprete para o seu idioma na sua resposta.
- Qualquer coisa que eu não especifique nesse desafio é um jogo justo, ou seja, se eu não digo, é com você. Se algo for vago, diga-me e editarei a resposta de acordo. (Espero que isso corra mais bem do que meu último desafio.)
Exemplos
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
é ou como funciona. Você poderia adicionar alguns casos de teste?:P
ABDD 12
uma entrada válida? Qual deve ser a saída? Além disso, eu entendo direito queAABBB 12
é par?Respostas:
Pitão,
3331 bytesExemplo de entrada:
fonte
Python 3.x, 106
128138bytesIsso duplica a sequência de entrada (mais vezes do que o necessário, o que é bom o suficiente) e pega apenas os primeiros
n
caracteres. Eles são contados e umuneven
oueven
é escolhido e, se o primeiro, as contagens também são impressasprint(*z)
, o que é descompactado automaticamentez
para mim.Economizou 32 bytes graças ao xnor e Sp3000!
Além disso, o Python 3.5 possui um novo recurso que permite esta solução de 102 bytes:
len({*z})>1
descompacta a listaz
, faz um conjunto e verifica se há mais de um elemento. É{*z}
especificamente isso que é novo.fonte
[t.count(x) for x in set(t)]
pode ser feito comomap
:map(t.count,set(t))
. A pergunta permite as pilhas em qualquer ordem, então acho que você pode evitar fazer issosorted
, mesmo que isso signifique que você precise fazer algo um pouco mais do que oz==z[::-1]
desejadoz[1:]==z[:-1]
.print*
imprimir os elementos de uma lista separada por espaço. Isso geralmente é mais curto que' '.join
.CJam, 35 bytes
Experimente on-line no intérprete CJam .
Como funciona
fonte