Aqui está uma matriz que representa um baralho de cartas padrão, incluindo dois Jokers.
[
"AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS",
"AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD",
"AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH",
"AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC",
"J", "J"
]
É composto desta maneira:
- Existem quatro naipes; copas, espadas, diamantes e paus (H, S, D, C).
- Cada naipe tem uma carta para os números 2 a 10, mais 4 cartas 'Ás', Ás, Valete, Rainha e Rei (A, J, Q, K).
- Para cada combinação de naipe e valor, deve haver um item na matriz, que é uma sequência, e é composto pelo valor seguido pelo naipe (espaço em branco entre eles é permitido).
- Além disso, existem duas cartas do Coringa ('J').
- Escreva em qualquer idioma que desejar.
- Golf it up! Tente produzir essa saída no menor número de bytes.
- Não importa em que ordem está a saída.
code-golf
kolmogorov-complexity
AJFaraday
fonte
fonte
2
ou4
ou qualquer outra coisa, para que não seja mais primo.Respostas:
JavaScript (ES6),
6260 bytesExperimente online!
fonte
Bash
4334 bytesExperimente online!
fonte
brainfuck ,
200197 bytesExperimente online!
Usa uma célula negativa (+1 bytes para corrigir), agrupando células (lotes de bytes para corrigir) e 0 no EOF (+2 bytes para remover a dependência).
Saídas
Explicação:
fonte
05AB1E ,
2827252423 bytesExperimente online.
-1 byte graças a @Emigna removendo o
S
depois"HSDC"
, porqueâ
faz isso implicitamente.Explicação:
Consulte esta dica 05AB1E (seção Como compactar cadeias de caracteres que não fazem parte do dicionário? ) Para entender por que
.•-Ÿ•
é"ajqk"
e.•ôì•
é"cdhs"
.fonte
brainfuck ,
550504 bytesExperimente online!
Resposta antiga, também online!
fonte
Java 10,
1531511257775 bytes-28 bytes graças a @ OlivierGrégoire .
-50 bytes graças a @mazzy .
Experimente online.
Explicação:
fonte
v->{var r="J J";for(var s:"HSDC".split(""))for(var c:"A,2,3,4,5,6,7,8,9,10,J,Q,K".split(","))r+=" "+c+s;return r.split(" ");}
(125 bytes)"AJQK2345678910".replace("1?.","$0H,$0S,$0D,$0C,")+"J,J"
dividir.$0
era possível em Java. Até, obrigado. :)APL (Dyalog Unicode) , 29 bytes
1 byte economizado graças ao Probie usando em
1+⍳9
vez de1↓⍳10
Experimente online!
Este é um programa completo. No link TIO, ativei o boxe para que os elementos individuais da matriz pudessem ser distinguidos.
Aqui está a saída em caixa.
'JJ',
2 curingas concatenados para,
a forma embaralhada de∘.,⍨
a matriz criada concatenando todas as combinações de'HCDS'
esta corda contra'AKJQ',
essa string com⍕¨
as formas rigorosas de cada um1+⍳9
os números 2..10 (1 mais o intervalo 1..9)fonte
-
recuo.Befunge-98 (FBBI) , 75 bytes
Experimente online!
Estrutura do programa
No início, a pilha é preenchida com
0
's' ej
não pula sobre a inicialização. A inicialização empurra4 * 13 = 52
, que é o contador do programa. Nas iterações a seguir, o final3
faz com que o ponteiro pule essa parte.Código que imprime 10:
Terminação:
fonte
R , 65 bytes
Experimente online!
-2 bytes graças às sugestões @ Giuseppe e @JayCe
fonte
paste
. @Giuseppe também.x<-'J'
dentro doouter
e, em seguida, reutilizá-lox
como uma variável nac()
instrução mais externa para eliminar um byte: Experimente online!Powershell,
63615956 bytes-3 bytes: obrigado ConnorLSW
fonte
2..10+'AJQK'[0..4]|%{"$_`H";"$_`S";"$_`D";"$_`C"};,'J'*2
Perl 5 , 41 bytes
Experimente online!
fonte
Python 3 ,
6764 bytesExperimente online!
Python 2 ,
78767468 bytesExperimente online!
Alt:
Python 2 , 68 bytes
salvou
fonte
print
, não podemos fazer[*[a+b for a in['10',*'A23456789JQK']for b in'CHSD'],*'JJ']
em 59 bytes. A solução Haskell não precisa gerar saída para stdout, por que o Python?K (ngn / k) , 30 bytes
Experimente online!
!9
é a lista0 1 ... 8
2+!9
é a lista2 3 ... 10
$
para sequenciar,
concatenar,'/:
concatenar cada um com cada direito, isto é, produto cartesiano; normalmente é,/:\:
ou,\:/:
mas, à direita, temos apenas escalares ("SHDC"
), para que possamos usar em'
vez de\:
"JJ",/
juntar (concat reduzir) a lista à direita usando"JJ"
como valor inicial para a reduçãofonte
MS-SQL, 137 bytes
Uma matriz de valores no SQL é retornada como linhas de consulta separadas. Usa a
STRING_SPLIT
função introduzida no SQL 2016 .Isso inclui os curingas, adicionando dois fatos de "sequência em branco" para tirar proveito do "J" existente para Jack e filtrando as linhas que não queremos. Mais curto do que usar
UNION ALL
instruções para adicionar os curingas.fonte
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'
. Também seria útil para jogar golfe se o padrão fosse uma vírgula se você deixasse de fora o segundo parâmetro, mas ele também não é compatível. Outro item para aGolfSQL
língua que eu provavelmente nunca vou dar a volta a escrever :)Ruby , 61 bytes
Experimente online!
fonte
->{
...}
? Ele roda em sua própria e não precisa de parâmetros, por isso não precisa ser um lambdaC # .NET, 114 bytes
Porta da minha resposta Java (crédito para @mazzy ) .
Experimente online.
Alternativa interessante de 119 bytes por @Corak .
Experimente online.
Se um em
System.Collections.Generic.IEnumerable<string>
vez destring[]
for uma saída aceitável, o final.ToArray()
pode ser eliminado, tornando-se 109 bytes .Explicação:
fonte
PHP,
1089997 bytesExperimente online!
Experimente online! (Editar 1)
Código
Tentei usar funções puramente php, mas bytecount foi menor com um loop :(
Saída (usando
print_r
)Editar
Obrigado a @JoKing, sugerindo alterações
explode(" ","H$t S$t D$t C$t")
para[H.$t,S.$t,D.$t,C.$t]
fonte
[H.$t,S.$t,D.$t,C.$t]
seria mais curto do que explodir?array_push($arr, $item1,$item2,$item3...$itemN)
assim, legal #SMBF , 169 bytes
␀
representa um byte NUL literal\x00
.Esta é a solução ingênua.
Como este programa contém um byte NUL, não há maneira fácil de usar o TIO. Execute isso no interpretador Python usando
fonte
$0.value+='\0'
.Japt,
323026 bytesTeste-o
fonte
Lote, 118 bytes
fonte
J , 41 bytes
Experimente online!
fonte
'J';^:2,;&.>{_13<\'10';;/'23456789AJKQHCDS'
um pouco mais simples, mas com 43 anos. Sinto que há mais para fazer a barba aqui ... mas não consigo ver como.R ,
6766 bytesExperimente online!
Apenas mais um byte que a solução de golfe da digEmAll . Inspirado pela solução de Giuseppe para este desafio relacionado - o mesmo Giuseppe que jogou um byte de resposta!
Estou publicando separadamente, pois é uma abordagem um pouco diferente, aproveitando o fato de que 4 não é um divisor de 13 e que a saída não precisa estar em nenhuma ordem específica.
fonte
C (gcc) ,
126137133 bytesExperimente online!
11 bytes para ser mais completo, graças a Jakob.
-4 bytes graças a Zachary
Abuso principalmente de pré-processador para comprimir os fatos. Provavelmente poderia ser fora do golfe, mas é bastante eficiente considerando todas as coisas.
fonte
c
não é uma "[...] 'função' estranha '", [...] mas uma declaração de matriz armazenada em uma macro. Essa forma de saída é, até onde sei, não é permitida por padrão.c
na fonte criará uma nova cópia da matriz no executável resultante (otimizações de restrição). Assim, o códigochar *a[] = c; char *b[] = c;
cria duas cópias profundas de c. Esse comportamento é o que você esperaria de uma função também.c=0;
um envio válido, visualizandoc
como uma função?#define z 0
válido. O raciocínio é que:c=0; c++; x=c;
os resultados emx == 1
tãoc
não age muito parecido com uma função. Enquanto isso#define z 0 c=z; c++; x=z;
não resultar emx == 0
modoz
age como uma função.z=0;/**/c=z;c++;x=z;
resulta emx==0
, portanto,z
atua como uma função.Javascript (ES6)
777472 bytesEste é um programa completo.
fonte
BTJ,J,${[..."A23456789JQK","10"].map(c=>[..."SDHC"].map(s=>c+s))}BT.splitBT,BT
(onde BT é um backtick).C (gcc, clang), 138 bytes
A abordagem é codificar as seqüências nas matrizes de caracteres.
Saída de amostra
Experimente online!
fonte
printf
para se livrar de todos osputchar
s.Oracle SQL, 164 bytes
Não é uma linguagem de golfe, mas ...
Experimente online - SQL Fiddle
fonte
Lua ,
156127138129 bytesExperimente online!
Baseado no código de Jo King. Como ele sugeriu nos comentários, minha resposta original não era válida (ainda estou aprendendo como o code golf funciona 😬) e vinculei uma resposta melhor e válida. Então eu fiz menor.
Solução original (156 bytes):
Eu só quero dizer que sou novo nesse material do Code Golf, por isso, se estou fazendo algo errado, fique à vontade para me dizer. Eu sei que essa resposta não é uma das menores, eu só queria me desafiar.
Se você tiver sugestões para reduzir meu código, também pode dizer. :)
fonte
r
? Ou você precisa imprimi-lo para STDOUT, ou alterá-lo para uma função e retornarr
Perl 6 ,
4342 bytesTente
Experimente de Jo King
Expandido:
fonte
QBasic 4.5,
114142127 bytesNotas da versão:
r$
. Todo o resto do código é praticamente o mesmo.Saída de amostra
Se adicionarmos esse trecho ao nosso código, podemos ver o que é colocado em
r$
:Mas como? Bem, deixe-me dizer-lhe:
fonte
STDOUT
é explicitamente proibidoa$
eb$
Vars e usando uma linha algo comor$(i)=MID$("JQKA2345678910",1+m,1-(m=12))+MID$("CDHS",(i-1)\13+1,1)
PRINT "<output>"
Pitão,
2625 bytesGuardou um byte graças a hakr14.
Experimente aqui
Explicação
fonte
+\J+\J
e+*2]\J
são equivalentes e ambos os 6 bytes, mas o último é considerado de melhor forma, pois permite que até 10 cópias sejam adicionadas antes que sejam necessários bytes adicionais.+\J+\J
pode ser substituído por+ B\J
para salvar um byte.