Oto tablica reprezentująca standardową talię kart, w tym dwóch Jokerów.
[
"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"
]
Składa się w następujący sposób:
- Istnieją cztery kolory; kier, pik, karo i trefl (H, S, D, C).
- Każdy kolor ma jedną kartę dla liczb od 2 do 10, plus 4 karty „obrazkowe”, as, walet, królowa i król (A, J, Q, K).
- Dla każdej kombinacji koloru i wartości powinien być jeden element w tablicy, który jest łańcuchem i składa się z wartości, po której następuje kolor (dozwolone są białe spacje między nimi).
- Ponadto istnieją dwie karty Jokera („J”).
- Pisz w dowolnym języku.
- Zagraj w golfa! Spróbuj wygenerować ten wynik w jak najmniejszej liczbie bajtów.
- Nie ma znaczenia, w jakiej kolejności jest wyjście.
code-golf
kolmogorov-complexity
AJFaraday
źródło
źródło
2
lub4
czy cokolwiek innego, więc nie jest już premierem.Odpowiedzi:
JavaScript (ES6),
6260 bajtówWypróbuj online!
źródło
Bash
4334 bajtyWypróbuj online!
źródło
pieprzenie mózgu ,
200197 bajtówWypróbuj online!
Wykorzystuje jedną ujemną komórkę (+1 bajty do naprawy), zawija komórki (dużo bajtów do naprawy) i 0 na EOF (+2 bajty, aby usunąć zależność).
Wyjścia
Wyjaśnienie:
źródło
05AB1E ,
2827252423 bajtówWypróbuj online.
-1 bajt dzięki usunięciu @Emigna
S
po"HSDC"
, ponieważâ
robi to niejawnie.Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak kompresować ciągi znaków nie będące częścią słownika? ), Aby zrozumieć, dlaczego
.•-Ÿ•
jest"ajqk"
i.•ôì•
jest"cdhs"
.źródło
pieprzenie mózgu ,
550504 bajtówWypróbuj online!
Stara odpowiedź, także online!
źródło
Java 10,
1531511257775 bajtów-28 bajtów dzięki @ OlivierGrégoire .
-50 bajtów dzięki @mazzy .
Wypróbuj online.
Wyjaśnienie:
źródło
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 bajtów)"AJQK2345678910".replace("1?.","$0H,$0S,$0D,$0C,")+"J,J"
to podzielić.$0
jest możliwe w Javie. TIL, dzięki. :)APL (Dyalog Unicode) , 29 bajtów
1 bajt zapisany dzięki Probie przy użyciu
1+⍳9
zamiast1↓⍳10
Wypróbuj online!
To jest pełny program. W linku TIO włączyłem boks, aby można było rozróżnić poszczególne elementy tablicy.
Oto wyjście w pudełku.
'JJ',
2 jokerów połączone,
popsuta forma∘.,⍨
macierz utworzona przez połączenie każdej kombinacji'HCDS'
ten ciąg przeciwko'AKJQ',
ten ciąg z⍕¨
formy rygorystyczne każdego z nich1+⍳9
liczby 2..10 (1 plus zakres 1..9)źródło
-
wcięciem.Befunge-98 (FBBI) , 75 bajtów
Wypróbuj online!
Struktura programu
Na początku stos jest wypełniony literami
0
„s” ij
nie przeskakuje podczas inicjalizacji. Inicjalizacja popycha4 * 13 = 52
, czyli licznik programu. W kolejnych iteracjach trailing3
powoduje przeskakiwanie wskaźnika przez tę część.Kod drukujący 10:
Zakończenie:
źródło
R , 65 bajtów
Wypróbuj online!
-2 bajty dzięki sugestiom @Giuseppe i @JayCe
źródło
paste
. @Giuseppe też.x<-'J'
wewnątrz zmiennej,outer
a następnie ponownie użyć jejx
jako zmiennej w skrajnymc()
zestawieniu, aby zgubić bajt: Wypróbuj online!PowerShell,
63615956 bajtów-3 bajty: dzięki ConnorLSW
źródło
2..10+'AJQK'[0..4]|%{"$_`H";"$_`S";"$_`D";"$_`C"};,'J'*2
Perl 5 , 41 bajtów
Wypróbuj online!
źródło
Python 3 ,
6764 bajtówWypróbuj online!
Python 2 ,
78767468 bajtówWypróbuj online!
Alt:
Python 2 , 68 bajtów
zapisane
źródło
print
, nie możemy tego zrobić[*[a+b for a in['10',*'A23456789JQK']for b in'CHSD'],*'JJ']
w 59 bajtach. Rozwiązanie Haskell nie musi być wysyłane na standardowe wyjście, dlaczego Python?K (ngn / k) , 30 bajtów
Wypróbuj online!
!9
jest lista0 1 ... 8
2+!9
jest lista2 3 ... 10
$
sznurka,
powiązać,'/:
łączenie każdego z każdym prawem, tj. produktu kartezjańskiego; zwykle jest,/:\:
lub,,\:/:
ale po prawej stronie mamy tylko skalary ("SHDC"
), więc możemy użyć'
zamiast\:
"JJ",/
dołącz (konkat zmniejsz) do listy po prawej, używając"JJ"
jako wartości początkowej redukcjiźródło
MS-SQL, 137 bajtów
Tablica wartości w SQL jest zwracana jako osobne wiersze zapytania. Korzysta z
STRING_SPLIT
funkcji wprowadzonej w SQL 2016 .Obejmuje jokery, dodając dwa „puste ciągi” koloru, aby wykorzystać istniejące „J” dla Jacka, a następnie odfiltrowując wiersze, których nie chcemy. Krótszy niż użycie
UNION ALL
instrukcji do dodania jokerów.źródło
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'
. Przydałoby się również do gry w golfa, gdyby domyślnie był przecinek, jeśli pominąłeś drugi parametr, ale też nie obsługuje tego. Kolejny element dlaGolfSQL
języka, którego prawdopodobnie nigdy nie będę pisał :)Rubin , 61 bajtów
Wypróbuj online!
źródło
->{
...}
? Działa samodzielnie i nie potrzebuje parametrów, więc nie powinna być lambdaC # .NET, 114 bajtów
Port mojej odpowiedzi Java (kredyt dla @mazzy ) .
Wypróbuj online.
Ciekawa alternatywa 119 bajtów autorstwa @Corak .
Wypróbuj online.
Jeśli
System.Collections.Generic.IEnumerable<string>
zamiaststring[]
jest akceptowalnym wyjściem, końcowe.ToArray()
może zostać porzucone, aby uzyskać 109 bajtów .Wyjaśnienie:
źródło
PHP,
1089997 bajtówWypróbuj online!
Wypróbuj online! (Edytuj 1)
Kod
Próbowałem użyć funkcji czysto php, ale liczba bajtów była mniejsza z pętlą :(
Wyjście (za pomocą
print_r
)Edytować
Dzięki @JoKing sugerując zmianę
explode(" ","H$t S$t D$t C$t")
na[H.$t,S.$t,D.$t,C.$t]
źródło
[H.$t,S.$t,D.$t,C.$t]
byłby krótszy niż eksplodować?array_push($arr, $item1,$item2,$item3...$itemN)
tak używać , fajnySMBF , 169 bajtów
␀
reprezentuje dosłowny bajt NUL\x00
.To naiwne rozwiązanie.
Ponieważ ten program zawiera bajt NUL, nie ma łatwego sposobu korzystania z TIO. Uruchom to za pomocą interpretera języka Python
źródło
$0.value+='\0'
.Japt,
323026 bajtówSprawdź to
źródło
Partia, 118 bajtów
źródło
J , 41 bajtów
Wypróbuj online!
źródło
'J';^:2,;&.>{_13<\'10';;/'23456789AJKQHCDS'
nieco prostsze, ale jak na 43. Czuję, że jest tu więcej do golenia ... ale nie widzę, jak to zrobić.R ,
6766 bajtówWypróbuj online!
Tylko jeden bajt więcej niż rozwiązanie digEmAll dla golfistów . Zainspirowany rozwiązaniem Giuseppe do tego pokrewnego wyzwania - ten sam Giuseppe, który odpowiedział jednym bajkiem!
Piszę osobno, ponieważ jest to nieco inne podejście, wykorzystujące fakt, że 4 nie jest dzielnikiem 13 i że wynik nie musi być w określonej kolejności.
źródło
C (gcc) ,
126137133 bajtówWypróbuj online!
+11 bajtów, aby być bardziej kompletnym dzięki Jakobowi.
-4 bajty dzięki Zachary'emu
Najczęściej nadużywanie preprocesora do kompresji kombinezonów. Prawdopodobnie może być poza golfem, ale jest całkiem skuteczny, biorąc pod uwagę wszystko.
źródło
c
nie jest to „[...] dziwna” funkcja „[...]”, ale deklaracja tablicowa przechowywana w makrze. Taka forma wyników jest według mojej wiedzy domyślnie niedozwolona.c
w źródle utworzy nową kopię tablicy w wynikowym pliku wykonywalnym (optymalizacje blokujące). Zatem kodchar *a[] = c; char *b[] = c;
tworzy dwie głębokie kopie c. Tego zachowania można się również spodziewać po funkcji.c=0;
za poprawne przesłanie, postrzeganec
jako funkcja?#define z 0
ważne. Powodem jest to, że:c=0; c++; x=c;
powodujex == 1
,c
że nie działa tak jak funkcja. Tymczasem#define z 0 c=z; c++; x=z;
powoduje,x == 0
żez
działa więc jak funkcja.z=0;/**/c=z;c++;x=z;
powodujex==0
, więcz
działa jak funkcja.JavaScript (ES6)
777472 bajtyTo jest kompletny program.
źródło
BTJ,J,${[..."A23456789JQK","10"].map(c=>[..."SDHC"].map(s=>c+s))}BT.splitBT,BT
(gdzie BT to backstick).C (gcc, clang), 138 bajtów
Podejście polega na kodowaniu sekwencji w tablicach znaków.
Przykładowe dane wyjściowe
Wypróbuj online!
źródło
printf
aby pozbyć się wszystkichputchar
s.Oracle SQL, 164 bajty
Nie język golfa, ale ...
Wypróbuj online - SQL Fiddle
źródło
Lua ,
156127138129 bajtówWypróbuj online!
Na podstawie kodu Jo Kinga. Jak zasugerował w komentarzach, moja pierwotna odpowiedź była nieprawidłowa (wciąż uczę się, jak działa golf golfowy 😬) i połączyłem lepszą i prawidłową odpowiedź. Potem zmniejszyłem to.
Oryginalne rozwiązanie (156 bajtów):
Chcę tylko powiedzieć, że jestem nowy w tym golfie, więc jeśli robię coś złego, nie krępuj się i powiedz mi. Wiem, że ta odpowiedź nie jest jedną z najmniejszych, po prostu chciałam rzucić sobie wyzwanie.
Jeśli masz sugestie dotyczące zmniejszenia mojego kodu, możesz również powiedzieć. :)
źródło
r
? Albo musisz go wydrukować do STDOUT, albo zmienić na funkcję i wrócićr
Perl 6 ,
4342 bajtówSpróbuj
Spróbuj od Jo Kinga
Rozszerzony:
źródło
QBasic 4.5,
114142127 bajtówInformacje o wydaniu:
r$
. Cała reszta kodu jest prawie taka sama.Próbka wyjściowa
Jeśli dodamy ten fragment kodu do naszego kodu, możemy zobaczyć, co jest włożone
r$
:Ale jak? Cóż, powiem ci:
źródło
STDOUT
jest wyraźnie zabronionea$
ib$
vars i używając linii czegoś w stylur$(i)=MID$("JQKA2345678910",1+m,1-(m=12))+MID$("CDHS",(i-1)\13+1,1)
PRINT "<output>"
Pyth,
2625 bajtówZapisano bajt dzięki hakr14.
Wypróbuj tutaj
Wyjaśnienie
źródło
+\J+\J
i+*2]\J
są równoważne i oba 6 bajtów, ale ta druga jest uważana za lepszą formę, ponieważ pozwala na dodanie do 10 kopii, zanim potrzebne będą dodatkowe bajty.+\J+\J
można zastąpić przez,+ B\J
aby zapisać bajt.