Entrada
Nenhum
Saída
52 cartões. Sem duplicatas. Os cartões são representados como caracteres unicode, por exemplo, 🂹.
Os pontos de código Unicode seguem o seguinte formato:
- Os três primeiros dígitos são
1F0
. - O próximo dígito é
A
,B
,C
, ouD
para espadas, copas, ouros e paus, respectivamente. - O próximo dígito é
1
atravésC
eE
para os vários números / cartões de face.1
é ace,2
-A
são os cartões do número, eB
,D
eE
são o jack, rainha e rei respectivamente. (C
é o cavaleiro, que não está na maioria dos decks.)
Exemplo de saída:
🂶🃁🃛🃎🂧🂵🃗🂦🂽🂹🂣🃊🃚🂲🂡🂥🂷🃄🃃🃞🂺🂭🃑🃙🂪🃖🂳🃘🃒🂻🃆🂮🃍🂱🂴🃋🂸🃈🃅🃂🂨🃓🃉🂾🃇🂩🂢🂫🃔🃕 🂤🃝
Regras:
- Isso é código-golfe . A resposta mais curta vence.
- Falhas proibidas são proibidas.
- Seu baralho deve ser realmente aleatório. Se executado 20 vezes, 20 saídas aleatórias (e provavelmente únicas) devem ser geradas.
Nota
Se você vir apenas caixas, instale as fontes DejaVu .
Respostas:
Geléia ,
25 2321 bytesUm link niládico retornando uma lista de caracteres ou um programa completo que imprime o baralho embaralhado.
Experimente online!
Quão?
fonte
JavaScript (ES6),
107106108 bytesMostrar snippet de código
-1 byte graças a @nderscore
JavaScript (ES6),
120119121 bytesVersão anterior.
fonte
[...'ABCD']
antes. Isso é legal :)"ABCD".map(...)
. Tenho certeza de que existem razões razoáveis para que esse seja o caso.Python 3 ,
10694 bytes-5 bytes graças ao musicman523 (1. use
sample(...,52)
como um equivalente em linha ashuffle
[graças a totallyhuman]; 2. use em~v&2
vez dev%4<2
; mais um byte adicional como conseqüência, pois um espaço pode ser removido)Experimente online!
fonte
sample
. Experimente online!v%4<2
para~v&2
a salvar mais um byte.random
função pudesse ajudar lá. Outro byte no topo, comoor ~...
pode seror~...
.05AB1E ,
2221 bytesEconomizou 1 byte graças à carusocomputação .
Experimente online!
Explicação
fonte
…1F0A4£14L13KhJâ«Hç.r
por 21 bytes (editado porque esqueci de remover cavaleiros). No entanto, você ajuda a amarrar geléia.Bash + coreutils, 56 bytes
Usamos
printf
escrever cada cartão em sua própria linha, embaralhar as linhas e concatenar todas as linhas removendo os caracteres da nova linha.Observe que, embora o
printf
comando coreutils exija exatamente 8 dígitos hexadecimais depois\U
, o Bash internoprintf
permite omitir zeros à esquerda.fonte
echo 16iF09F8{2A,2B,38,39}{{1..9},A,B,D,E}0AP|dc|shuf|tr -d \\n
, mas a sua é melhor. Eu não sabia%b
.Python 3 , 112 bytes
Experimente online!
fonte
del
declaração se divide sequencialmente da esquerda para a direita. O primeiro elemento dea[::16]
é U + 1F0A0 PLAYING CARD BACK, que deve ser excluído. Também precisamos excluir os cards de Cavaleiro e Coringa que estão presos entre os 52 normais. Veja en.wikipedia.org/wiki/… .Python 3 , 107 bytes
Economizou 6 bytes graças a @totallyhuman e 3 graças a @ CCB60!
Experimente online!
fonte
,sep=''
corrige os espaços, é claro - mas torna-112 bytesrandom.sample
! Vou deixar o OP decidir sobre os espaços. Posso adicionar,sep=''
para me livrar deles e ainda salvar 6 bytes.PHP > = 7, 102 bytes
Nenhum Intérprete Online disponível para o método IntlChar :: chr
PHP , 112 bytes
Experimente online!
PHP , 116 bytes
Experimente online!
PHP, 121 bytes
Experimente online!
fonte
APL (Dyalog) ,
4038 bytesO método de Jonathan Allan
(
…)
Na seguinte matriz⍳62
os primeiros 62 números inteiros127136+
adicione 127136 a isso(
...)/
filtre isso com o valor booleano⍳62
primeiros 62 números inteiros16|
módulo 16180∨
GCD de 180 e que11>
se 11 é maior do que aqueles[
...]
Selecione os seguintes elementos?⍨52
embaralhe os primeiros 52 números inteiros (escolha 52 números inteiros aleatórios de um saco dos primeiros 52 números inteiros)⎕UCS
converter de símbolos correspondentes no L nicode C haracter S etSolução da versão 16.0 (atualmente em beta) (33 caracteres)
(
…)
Na seguinte matriz⍳62
primeiros 62 números inteiros16|
módulo 16180∨
GCD de 180 e que11>
se 11 é maior do que aqueles⍸
índices onde True127136+
adicione 127136 a isso[
…]
Selecione os seguintes elementos?⍨52
embaralhe os primeiros 52 números inteiros (escolha 52 números inteiros aleatórios de um saco dos primeiros 52 números inteiros)⎕UCS
converter de símbolos correspondentes a L nicode C haracter S etSolução antiga
(
…)
Na seguinte matriz⍳14
os primeiros 14 inteiros12~⍨
exceto 12(
…)∘.,
Cartesianly concatenado a⍳4
os primeiros 4 inteiros9+
adicionado a 9,
andar (achatar) que16⊥¨
avaliar cada um na base 16126976+
adicione 126976 a isso[
…]
Selecione os seguintes elementos?⍨52
embaralhe os primeiros 52 números inteiros (escolha 52 números inteiros aleatórios de um saco dos primeiros 52 números inteiros)⎕UCS
converter de símbolos correspondentes a L nicode C haracter S etfonte
Carvão , 50 bytes
Experimente online!Link é a versão detalhada do código. Cria a sequência de todos os 64 caracteres no bloco, mas filtra os cartões inválidos à medida que são selecionados aleatoriamente. (Falando nisso, a seleção aleatória sem substituição de uma string é de apenas 11 bytes, em comparação com 17 para uma matriz.)
Edit: Subtração de uma matriz e outras melhorias no carvão reduziram o tamanho para 41 bytes: Experimente online!
fonte
Alice , 34 bytes
Experimente online!
Explicação
fonte
> <> ,
495049 bytesExperimente online!
(+1 byte para melhorar a aleatoriedade)
Estou interpretando "aleatório" para significar "todo resultado possível tem uma probabilidade diferente de zero". Esta não é uma distribuição uniforme.
Existem dois estágios nesse código. Primeiro, o peixe coloca todas as cartas na pilha, usando as duas primeiras linhas. Começando com o ás de espadas, o peixe o duplica e incrementa, depois verifica se o código hexadecimal da carta anterior termina em 0, C ou F multiplicando x ( x -12) ( x -15), onde x é o código do mod. 16 e verificando se é zero. Se estiver, exclui o cartão incorreto da pilha. Ele se repete até que a pilha tenha 52 cartas e depois entra no estágio 2:
Esse pedaço de código embaralha e imprime a pilha. A
x
define a orientação do peixe aleatoriamente:v
e volta ao peixex
sem fazer nada. A direção esquerda é semelhante.{
, girando toda a pilha para a esquerda e depois volta para ox
.x
.Está claro que todas as ordens possíveis dos cartões podem ser produzidas: a qualquer momento do estágio 2, todos os cartões que ainda não foram impressos podem ser impressos a seguir, se o peixe nadar para a direita várias vezes. Essa técnica de embaralhar geralmente não move as cartas muito distantes se elas já estavam próximas uma da outra, mas, novamente, nem a embaralhamento manual .
fonte
R, 61 bytes
Amostra aleatoriamente o vetor de representações inteiras dos valores unicode dos cartões (que podem ser obtidos a partir da função
utf8ToInt()
) e remova os cartões indesejados de cavaleiro / coringa.fonte
C # (
146141 bytes)Demonstração online
Isso usa um estilo extremamente ruim ao embaralhar
Guid.NewGuid()
, mas é um código de golfe. Em seguida, cria os pares substitutos manualmente.fonte
Perl 5, 75 bytes
Observe que isso usa os pontos de código para rainhas, conforme indicado na pergunta (ou seja, último dígito
C
). Para os pontos de código reais (último dígitoD
), substitua51,56
por47,52
.fonte
Java 8, 216 bytes
Explicação:
Experimente aqui.
NOTA: Não testado porque, embora eu tenha instalado a fonte vinculada, ainda vejo caixas. Provavelmente tem que reiniciar meu PC ou algo assim ..
fonte
Dyalog APL, 35 bytes
baseado em resposta de Adám
usa
⎕io←0
fonte
Japt ,
51413922 bytesCom alguma inspiração da solução de Jonathan's Jelly .
Experimente (ou visualize a saída com maior
font-size
)Explicação
fonte