Hier ist ein Array, das ein Standardkartenstapel darstellt, einschließlich zweier Joker.
[
"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"
]
Es ist auf diese Weise zusammengesetzt:
- Es gibt vier Anzüge; Herzen, Pik, Karo und Keulen (H, S, D, C).
- Jede Farbe hat eine Karte für die Nummern 2 bis 10 sowie 4 'Bild'-Karten, Ass, Bube, Dame und König (A, J, Q, K).
- Für jede Kombination aus Farbe und Wert sollte ein Element im Array vorhanden sein, das eine Zeichenfolge ist und sich aus dem Wert zusammensetzt, auf den die Farbe folgt (Leerzeichen dazwischen sind zulässig).
- Hinzu kommen zwei Jokerkarten ('J').
- Schreiben Sie in jeder gewünschten Sprache.
- Golf auf! Versuchen Sie, diese Ausgabe in der kleinsten Anzahl von Bytes zu erzeugen.
- Es spielt keine Rolle, in welcher Reihenfolge die Ausgabe erfolgt.
code-golf
kolmogorov-complexity
AJFaraday
quelle
quelle
2
oder4
oder etwas anderem beenden, sodass sie keine Primzahl mehr ist.Antworten:
JavaScript (ES6),
62 -60 ByteProbieren Sie es online!
quelle
Bash
4334 BytesProbieren Sie es online!
quelle
Brainfuck ,
200197 BytesProbieren Sie es online!
Verwendet eine negative Zelle (+1 Bytes zum Korrigieren), umschließende Zellen (viele Bytes zum Korrigieren) und 0 auf EOF (+2 Bytes zum Entfernen der Abhängigkeit).
Ausgänge
Erläuterung:
quelle
05AB1E ,
2827252423 ByteProbieren Sie es online aus.
-1 Byte dank @Emigna Entfernen des
S
After"HSDC"
, daâ
dies implizit geschieht.Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitt So komprimieren Sie Zeichenfolgen, die nicht Teil des Wörterbuchs sind ), um zu verstehen, warum dies so
.•-Ÿ•
ist"ajqk"
und.•ôì•
ist"cdhs"
.quelle
Brainfuck ,
550504 BytesProbieren Sie es online!
Alte Antwort, auch online!
quelle
Java 10,
1531511257775 Bytes-28 Bytes dank @ OlivierGrégoire .
-50 Bytes dank @mazzy .
Probieren Sie es online aus.
Erläuterung:
quelle
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"
und teilen Sie es.$0
das in Java möglich ist. Bis, danke. :)APL (Dyalog Unicode) , 29 Byte
1 Byte gespart dank Probie mit
1+⍳9
anstelle von1↓⍳10
Probieren Sie es online!
Dies ist ein volles Programm. In der TIO-Verknüpfung habe ich das Boxen aktiviert, damit die einzelnen Elemente des Arrays unterschieden werden können.
Hier ist die Boxed-Ausgabe.
'JJ',
2 Joker verkettet an,
die verwirrte Form von∘.,⍨
die Matrix, die durch Verketten jeder Kombination von erstellt wird'HCDS'
diese Saite dagegen'AKJQ',
diese Saite mit⍕¨
die stringierten Formen von jedem von1+⍳9
die Zahlen 2..10 (1 plus der Bereich 1..9)quelle
-
Zum Einrücken benötigen Sie ein Vielfaches von vier führenden Leerzeichen .Befunge-98 (FBBI) , 75 Bytes
Probieren Sie es online!
Programmstruktur
Der Stack ist zunächst mit
0
s gefüllt undj
springt nicht über die Initialisierung. Die Initialisierung drückt4 * 13 = 52
, was der Programmzähler ist. In den folgenden Iterationen3
bewirkt das Nachziehen, dass der Zeiger über diesen Teil springt.Code, der 10 druckt:
Beendigung:
quelle
R , 65 Bytes
Probieren Sie es online!
-2 Bytes dank @ Giuseppe und @ JayCe Vorschläge
quelle
paste
. @ Giuseppe auch.x<-'J'
innerhalb derouter
und dann wiederverwendenx
als Variable in der äußerstenc()
Anweisung abrasieren ein Byte: Versuchen Sie es online!Powershell,
63615956 Bytes-3 Bytes: Danke ConnorLSW
quelle
2..10+'AJQK'[0..4]|%{"$_`H";"$_`S";"$_`D";"$_`C"};,'J'*2
Perl 5 , 41 Bytes
Probieren Sie es online!
quelle
Python 3 ,
6764 BytesProbieren Sie es online!
Python 2 ,
78767468 BytesProbieren Sie es online!
Alt:
Python 2 , 68 Bytes
Gerettet
quelle
print
, können wir es nicht[*[a+b for a in['10',*'A23456789JQK']for b in'CHSD'],*'JJ']
in 59 Bytes tun . Die Haskell-Lösung muss nicht auf stdout ausgegeben werden. Warum sollte Python?K (ngn / k) , 30 Bytes
Probieren Sie es online!
!9
ist die Liste0 1 ... 8
2+!9
ist die Liste2 3 ... 10
$
zu bespannen,
verketten,'/:
verketten jeweils mit jedem Recht, dh kartesischen Produkt; Normalerweise ist es,/:\:
oder,\:/:
aber auf der rechten Seite haben wir nur Skalare ("SHDC"
), so dass wir'
anstelle von verwenden können\:
"JJ",/
Verbinden Sie die Liste auf der rechten Seite mit"JJ"
dem Anfangswert für die Reduzierungquelle
MS-SQL, 137 Bytes
Ein Array von Werten in SQL wird als separate Abfragezeilen zurückgegeben. Verwendet die in SQL 2016 eingeführte
STRING_SPLIT
Funktion .Es schließt die Joker ein, indem es zwei "leere Zeichenfolgen" hinzufügt, um das vorhandene "J" für Jack zu nutzen, und dann die Zeilen herausfiltert, die wir nicht wollen. Kürzer als die Verwendung von
UNION ALL
Anweisungen zum Hinzufügen der Joker.quelle
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'
. Es wäre auch praktisch, wenn Sie beim Golfen ein Komma verwenden würden, wenn Sie den zweiten Parameter weglassen, aber dies wird auch nicht unterstützt. Ein weiterer Punkt für dieGolfSQL
Sprache, die ich wahrscheinlich nie zum Schreiben kommen werde :)Ruby , 61 Bytes
Probieren Sie es online!
quelle
->{
...}
weglassen? Es läuft von alleine und benötigt keine Parameter, es sollte also kein Lambda seinC # .NET, 114 Bytes
Port meiner Java-Antwort ( Dank an @mazzy ) .
Probieren Sie es online aus.
Interessante Alternative von 119 Bytes von @Corak .
Probieren Sie es online aus.
Wenn ein
System.Collections.Generic.IEnumerable<string>
stattstring[]
ein akzeptabler Output ist, kann das Trailing.ToArray()
verworfen werden, so dass es 109 Bytes wird .Erläuterung:
quelle
PHP,
1089997 BytesProbieren Sie es online!
Probieren Sie es online! (Edit 1)
Code
Versucht, rein PHP-Funktionen zu verwenden, aber bytecount war niedriger mit einer Schleife :(
Ausgabe (mit
print_r
)Bearbeiten
Dank @JoKing Eingabe Änderung
explode(" ","H$t S$t D$t C$t")
für[H.$t,S.$t,D.$t,C.$t]
quelle
[H.$t,S.$t,D.$t,C.$t]
kürzer als explodieren?array_push($arr, $item1,$item2,$item3...$itemN)
, schönSMBF , 169 Bytes
␀
repräsentiert ein literales NUL-Byte\x00
.Dies ist die naive Lösung.
Da dieses Programm ein NUL-Byte enthält, gibt es keine einfache Möglichkeit, TIO zu verwenden. Führen Sie dies im Python-Interpreter mit aus
quelle
$0.value+='\0'
.Japt,
323026 BytesProbier es aus
quelle
Batch, 118 Bytes
quelle
J , 41 Bytes
Probieren Sie es online!
quelle
'J';^:2,;&.>{_13<\'10';;/'23456789AJKQHCDS'
etwas einfacher, aber für 43. Ich habe das Gefühl, dass es hier mehr zu rasieren gibt ... aber ich kann nicht sehen, wie.R ,
6766 BytesProbieren Sie es online!
Nur ein Byte mehr als die Golf-Lösung von digEmAll . Inspiriert von Giuseppes Lösung für diese Herausforderung - derselbe Giuseppe, der ein Byte nach dem anderen golfen hat!
Ich poste separat, da es ein etwas anderer Ansatz ist, der die Tatsache ausnutzt, dass 4 kein Divisor von 13 ist und die Ausgabe nicht in einer bestimmten Reihenfolge erfolgen muss.
quelle
C (GCC) ,
126137133 BytesProbieren Sie es online!
+11 Bytes für mehr Vollständigkeit dank Jakob.
-4 Bytes dank Zachary
Meistens wird der Präprozessor missbraucht, um die Anzüge zu komprimieren. Könnte wahrscheinlich out-golfed sein, ist aber in jeder Hinsicht ziemlich effizient.
quelle
c
keine [...] seltsame Funktion ist, sondern eine in einem Makro gespeicherte Array-Deklaration. Eine solche Form der Ausgabe ist meines Wissens standardmäßig nicht zulässig.c
in der Quelle wird eine neue Kopie des Arrays in der resultierenden ausführbaren Datei erstellt (Optimierungen vorbehalten). Der Codechar *a[] = c; char *b[] = c;
erstellt also zwei tiefe Kopien von c. Dieses Verhalten ist auch das, was Sie von einer Funktion erwarten würden.c=0;
eine gültige Übermittlung betrachten, diec
als Funktion angezeigt wird?#define z 0
gültig halten. Die Überlegung ist, dass:c=0; c++; x=c;
Ergebnissex == 1
soc
nicht viel wie eine Funktion handeln. In der Zwischenzeit#define z 0 c=z; c++; x=z;
wirkt sich dasx == 0
alsoz
wie eine Funktion aus.z=0;/**/c=z;c++;x=z;
ergibtx==0
,z
wirkt also wie eine Funktion.Javascript (ES6)
777472 BytesDies ist ein vollständiges Programm.
quelle
BTJ,J,${[..."A23456789JQK","10"].map(c=>[..."SDHC"].map(s=>c+s))}BT.splitBT,BT
(wobei BT ein Backtick ist).C (gcc, clang), 138 Bytes
Ansatz ist es, die Sequenzen in Zeichen-Arrays zu kodieren.
Beispielausgabe
Probieren Sie es online!
quelle
printf
, um alleputchar
s loszuwerden .Oracle SQL, 164 Byte
Keine Golfsprache, aber ...
Probieren Sie es online aus - SQL Fiddle
quelle
Lua ,
156127138129 BytesProbieren Sie es online!
Basierend auf Jo Kings Code. Wie er in den Kommentaren angedeutet hat, war meine ursprüngliche Antwort nicht gültig (ich lerne immer noch, wie Code Golf funktioniert) und verknüpfte eine bessere und gültige Antwort. Dann habe ich es kleiner gemacht.
Ursprüngliche Lösung (156 Bytes):
Ich möchte nur sagen, dass ich neu in diesem Code Golf-Bereich bin. Wenn ich also etwas falsch mache, können Sie es mir gerne mitteilen. Ich weiß, dass diese Antwort nicht die kleinste ist, ich wollte mich nur selbst herausfordern.
Wenn Sie Vorschläge zur Reduzierung meines Codes haben, können Sie dies auch sagen. :)
quelle
r
? Entweder müssen Sie es auf STDOUT drucken oder in eine Funktion ändern und zurückkehrenr
Perl 6 ,
4342 BytesVersuch es
Probieren Sie es von Jo King
Erweitert:
quelle
QBasic 4.5,
114142127 BytesVersionshinweise:
r$
. Der ganze Rest des Codes ist ziemlich gleich.Beispielausgabe
Wenn wir dieses Snippet zu unserem Code hinzufügen, können wir sehen, was darin enthalten ist
r$
:Aber wie? Nun, lassen Sie mich Ihnen sagen:
quelle
STDOUT
ist ausdrücklich untersagta$
und -Vars fallen lassenb$
und eine Zeile wier$(i)=MID$("JQKA2345678910",1+m,1-(m=12))+MID$("CDHS",(i-1)\13+1,1)
PRINT "<output>"
Pyth,
2625 BytesDank hakr14 wurde ein Byte gespeichert.
Probieren Sie es hier aus
Erläuterung
quelle
+\J+\J
und+*2]\J
sind äquivalent und beide 6 Bytes, letzteres wird jedoch als bessere Form angesehen, da bis zu 10 Kopien hinzugefügt werden können, bevor zusätzliche Bytes benötigt werden.+\J+\J
kann durch ersetzt werden+ B\J
, um ein Byte zu speichern.