Voici un tableau représentant un jeu de cartes standard, dont deux 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"
]
Il est composé de cette manière:
- Il y a quatre combinaisons; cœurs, bêches, diamants et massues (H, S, D, C).
- Chaque costume a une carte pour les numéros 2 à 10, plus 4 cartes `` photo '', Ace, Jack, Queen et King (A, J, Q, K).
- Pour chaque combinaison de costume et de valeur, il devrait y avoir un élément dans le tableau, qui est une chaîne, et est composé de la valeur suivie de la combinaison (les espaces entre ces derniers sont autorisés).
- En plus de cela, il y a deux cartes Joker ('J').
- Écrivez dans la langue de votre choix.
- Jouez au golf! Essayez de produire cette sortie dans le plus petit nombre d'octets.
- Peu importe l'ordre dans lequel se trouve la sortie.
code-golf
kolmogorov-complexity
AJFaraday
la source
la source
2
ou4
ou quoi que ce soit d'autre afin qu'il ne soit plus un nombre premier.Réponses:
JavaScript (ES6),
6260 octetsEssayez-le en ligne!
la source
Bash
4334 octetsEssayez-le en ligne!
la source
brainfuck ,
200197 bytesEssayez-le en ligne!
Utilise une cellule négative (+1 octet à corriger), des cellules d'habillage (beaucoup d'o octets à corriger) et 0 sur EOF (+2 octets pour supprimer la dépendance).
Les sorties
Explication:
la source
05AB1E ,
2827252423 octetsEssayez-le en ligne.
-1 octet grâce à @Emigna supprimant l'
S
after"HSDC"
, carâ
cela le fait implicitement.Explication:
Voir cette astuce 05AB1E (section Comment compresser des chaînes ne faisant pas partie du dictionnaire? ) Pour comprendre pourquoi
.•-Ÿ•
est"ajqk"
et.•ôì•
est"cdhs"
.la source
brainfuck ,
550504 octetsEssayez-le en ligne!
Ancienne réponse, également en ligne!
la source
Java 10,
1531511257775 octets-28 octets grâce à @ OlivierGrégoire .
-50 octets grâce à @mazzy .
Essayez-le en ligne.
Explication:
la source
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 octets)"AJQK2345678910".replace("1?.","$0H,$0S,$0D,$0C,")+"J,J"
diviser.$0
c'était possible en Java. TIL, merci. :)APL (Dyalog Unicode) , 29 octets
1 octet enregistré grâce à Probie en utilisant
1+⍳9
au lieu de1↓⍳10
Essayez-le en ligne!
Ceci est un programme complet. Dans le lien TIO, j'ai activé la boxe afin de pouvoir distinguer les différents éléments du tableau.
Voici la sortie encadrée.
'JJ',
2 jokers concaténés à,
la forme ravelée de∘.,⍨
la matrice créée en concaténant chaque combinaison de'HCDS'
cette chaîne contre'AKJQ',
cette chaîne avec⍕¨
les formes strictes de chacun1+⍳9
les nombres 2..10 (1 plus la plage 1..9)la source
-
pour le mettre en retrait.Befunge-98 (FBBI) , 75 octets
Essayez-le en ligne!
Structure du programme
Au début, la pile est remplie de
0
's' etj
ne saute pas par-dessus l'initialisation. L'initialisation pousse4 * 13 = 52
, qui est le compteur de programme. Dans les itérations suivantes, la fin3
fait sauter le pointeur sur cette partie.Code qui imprime 10:
Résiliation:
la source
R , 65 octets
Essayez-le en ligne!
-2 octets grâce aux suggestions @Giuseppe et @JayCe
la source
paste
. @Giuseppe aussi.x<-'J'
à l'intérieur duouter
puis réutiliser enx
tant que variable dans l'c()
instruction la plus à l'extérieur pour raser un octet: Essayez-le en ligne!Powershell,
63615956 octets-3 octets: merci ConnorLSW
la source
2..10+'AJQK'[0..4]|%{"$_`H";"$_`S";"$_`D";"$_`C"};,'J'*2
Perl 5 , 41 octets
Essayez-le en ligne!
la source
Python 3 ,
6764 octetsEssayez-le en ligne!
Python 2 ,
78767468 octetsEssayez-le en ligne!
Alt:
Python 2 , 68 octets
enregistré
la source
print
, ne pouvons-nous pas le faire[*[a+b for a in['10',*'A23456789JQK']for b in'CHSD'],*'JJ']
en 59 octets. La solution Haskell n'a pas besoin de sortir vers stdout, pourquoi Python le ferait-il?K (ngn / k) , 30 octets
Essayez-le en ligne!
!9
est la liste0 1 ... 8
2+!9
est la liste2 3 ... 10
$
à la chaîne,
enchaîner,'/:
concaténer chacun avec chaque droit, c'est-à-dire produit cartésien; normalement c'est,/:\:
ou,\:/:
mais à droite nous avons seulement des scalaires ("SHDC"
), donc nous pouvons utiliser à la'
place de\:
"JJ",/
rejoindre (concat réduire) la liste de droite en utilisant"JJ"
comme valeur initiale pour la réductionla source
MS-SQL, 137 octets
Un tableau de valeurs dans SQL est renvoyé sous forme de lignes de requête distinctes. Utilise la
STRING_SPLIT
fonction introduite dans SQL 2016 .Il inclut les jokers en ajoutant deux combinaisons de "chaîne vierge" pour tirer parti du "J" existant pour Jack, puis en filtrant les lignes que nous ne voulons pas. Plus court que l'utilisation d'
UNION ALL
instructions pour ajouter les jokers.la source
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'
. Il serait également pratique pour le golf s'il était par défaut une virgule si vous omettez le deuxième paramètre, mais il ne le prend pas en charge non plus. Un autre élément pour laGolfSQL
langue que je ne pourrai probablement jamais écrire :)Rubis , 61 octets
Essayez-le en ligne!
la source
->{
...}
? Il fonctionne seul et n'a pas besoin de paramètres, il ne devrait donc pas être un lambdaC # .NET, 114 octets
Port de ma réponse Java (crédit à @mazzy ) .
Essayez-le en ligne.
Alternative intéressante de 119 octets par @Corak .
Essayez-le en ligne.
Si un
System.Collections.Generic.IEnumerable<string>
au lieu destring[]
est une sortie acceptable, la fin.ToArray()
peut être supprimée pour devenir 109 octets .Explication:
la source
PHP,
1089997 octetsEssayez-le en ligne!
Essayez-le en ligne! (Modifier 1)
Code
J'ai essayé d'utiliser des fonctions purement php, mais le nombre d'octets était inférieur avec une boucle :(
Sortie (en utilisant
print_r
)modifier
Merci à @JoKing en suggérant un changement
explode(" ","H$t S$t D$t C$t")
pour[H.$t,S.$t,D.$t,C.$t]
la source
[H.$t,S.$t,D.$t,C.$t]
plus court que d'exploser?array_push($arr, $item1,$item2,$item3...$itemN)
comme ça, gentilSMBF , 169 octets
␀
représente un octet NUL littéral\x00
.Telle est la solution naïve.
Parce que ce programme contient un octet NUL, il n'y a pas de moyen facile d'utiliser TIO. Exécutez ceci dans le interpréteur Python en utilisant
la source
$0.value+='\0'
.Japt,
323026 octetsEssaye-le
la source
Lot, 118 octets
la source
J , 41 octets
Essayez-le en ligne!
la source
'J';^:2,;&.>{_13<\'10';;/'23456789AJKQHCDS'
un peu plus simple mais pour 43. J'ai l'impression qu'il y a plus à raser ici ... mais je ne vois pas comment.R ,
6766 octetsEssayez-le en ligne!
Un seul octet de plus que la solution golfier de digEmAll . Inspiré par la solution de Giuseppe à ce défi connexe - le même Giuseppe qui a joué un octet par réponse!
Je publie séparément car c'est une approche légèrement différente qui tire parti du fait que 4 n'est pas un diviseur de 13 et que la sortie n'a pas besoin d'être dans un ordre particulier.
la source
C (gcc) ,
126137133 octetsEssayez-le en ligne!
+11 octets pour être plus complet grâce à Jakob.
-4 octets grâce à Zachary
Abusant principalement du préprocesseur pour comprimer les combinaisons. Pourrait probablement être hors-golf, mais est assez efficace tout compte fait.
la source
c
n'est pas une "[...]" fonction "bizarre [...]" mais plutôt une déclaration de tableau stockée dans une macro. À ma connaissance, une telle forme de sortie n'est pas autorisée par défaut.c
dans la source créera une nouvelle copie du tableau dans l'exécutable résultant (sauf optimisations). Ainsi, le codechar *a[] = c; char *b[] = c;
crée deux copies complètes de c. Ce comportement correspond également à ce que vous attendez d'une fonction.c=0;
une soumission valide, la regardantc
comme une fonction?#define z 0
valable. Le raisonnement est le suivant: lesc=0; c++; x=c;
résultats dansx == 1
soc
n'agissent pas comme une fonction. Pendant ce temps,#define z 0 c=z; c++; x=z;
il en résultex == 0
doncz
agit comme une fonction.z=0;/**/c=z;c++;x=z;
résulte enx==0
,z
agit donc comme une fonction.Javascript (ES6)
777472 octetsCeci est un programme complet.
la source
BTJ,J,${[..."A23456789JQK","10"].map(c=>[..."SDHC"].map(s=>c+s))}BT.splitBT,BT
(où BT est un backtick).C (gcc, clang), 138 octets
L'approche consiste à coder les séquences dans des tableaux de caractères.
Exemple de sortie
Essayez-le en ligne!
la source
printf
pour vous débarrasser de tous lesputchar
s.Oracle SQL, 164 bytes
Not a golfing language but...
Try it online - SQL Fiddle
la source
Lua,
156127138129 bytesTry it online!
Based on Jo King's code. As he suggested in the comments, my original answer wasn't valid (I'm still learning how code golf works 😬), and linked a better and valid answer. Then I made it smaller.
Original solution (156 bytes):
I just want to say that I'm new to this Code Golf stuff, so if I'm doing something wrong, feel free to tell me. I know this answer isn't one of the smallest, I just wanted to challenge myself.
If you have suggestions for reducing my code you can say too. :)
la source
r
? Either you need to print it to STDOUT, or change this to a function and returnr
Perl 6,
4342 bytesTry it
Try it from Jo King
Expanded:
la source
QBasic 4.5,
114142127 bytesRelease Notes:
r$
. All the rest of the code is pretty much the same.Sample output
If we add this snippet to our code, we can see what is put into
r$
:But how? Well, let me tell you:
la source
STDOUT
is explicitly forbiddena$
andb$
vars and using a line something liker$(i)=MID$("JQKA2345678910",1+m,1-(m=12))+MID$("CDHS",(i-1)\13+1,1)
PRINT "<output>"
Pyth,
2625 bytesSaved a byte thanks to hakr14.
Try it here
Explanation
la source
+\J+\J
and+*2]\J
are equivalent and both 6 bytes, but the latter is considered better form, as it allows for up to 10 copies to be added before any additional bytes are needed.+\J+\J
can be replaced with+ B\J
to save a byte.