Вот массив, представляющий стандартную колоду карт, включая двух джокеров.
[
"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"
]
Он составлен таким образом:
- Есть четыре костюма; сердца, пики, алмазы и булавы (H, S, D, C).
- У каждой масти есть одна карта для чисел от 2 до 10, плюс 4 карты с картинками: туз, валет, дама и король (A, J, Q, K).
- Для каждой комбинации масти и значения в массиве должен быть один элемент, который представляет собой строку и состоит из значения, за которым следует масть (пробел между ними разрешен).
- Кроме того, есть две карты Джокера ('J').
- Пишите на любом понравившемся вам языке.
- Гольф это! Попробуйте создать этот вывод в наименьшем количестве байтов.
- Неважно, в каком порядке вывод.
code-golf
kolmogorov-complexity
AJFaraday
источник
источник
2
или4
или что - нибудь еще , так что это не простое больше.Ответы:
JavaScript (ES6),
6260 байтПопробуйте онлайн!
источник
Bash
4334 байтаПопробуйте онлайн!
источник
брейкфук ,
200197 байтПопробуйте онлайн!
Использует одну отрицательную ячейку (+1 байт для исправления), упаковку ячеек (много байтов для исправления) и 0 для EOF (+2 байта для устранения зависимости).
Выходы
Объяснение:
источник
05AB1E ,
2827252423 байтаПопробуйте онлайн.
-1 байт благодаря @Emigna, удаляющему
S
после"HSDC"
, потому чтоâ
делает это неявно.Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжимать строки, не являющиеся частью словаря? ), Чтобы понять, почему
.•-Ÿ•
есть"ajqk"
и.•ôì•
есть"cdhs"
.источник
брейкфук ,
550504 байтаПопробуйте онлайн!
Старый ответ, также онлайн!
источник
Java 10,
1531511257775 байт-28 байт благодаря @ OlivierGrégoire .
-50 байт благодаря @mazzy .
Попробуйте онлайн.
Объяснение:
источник
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 байт)"AJQK2345678910".replace("1?.","$0H,$0S,$0D,$0C,")+"J,J"
разделить это.$0
это возможно на Яве. ТИЛ, спасибо. :)APL (Dyalog Unicode) , 29 байт
1 байт сохранен благодаря Проби, используя
1+⍳9
вместо1↓⍳10
Попробуйте онлайн!
Это полная программа. В ссылке TIO я включил бокс, чтобы можно было различать отдельные элементы массива.
Вот коробочный вывод.
'JJ',
2 джокера соединены с,
восторженная форма∘.,⍨
матрица, созданная путем объединения каждой комбинации'HCDS'
эта строка против'AKJQ',
эта строка с⍕¨
Стригированные формы каждого из1+⍳9
числа 2..10 (1 плюс диапазон 1..9)источник
-
чтобы сделать отступ.Befunge-98 (FBBI) , 75 байт
Попробуйте онлайн!
Структура программы
Сначала стек заполняется
0
символами s иj
не перепрыгивает через инициализацию. Инициализация толкает4 * 13 = 52
, что является счетчиком программы. В следующих итерациях трейлинг3
заставляет указатель перепрыгнуть через эту часть.Код, который печатает 10:
Прекращение:
источник
R 65 байт
Попробуйте онлайн!
-2 байта благодаря предложениям @Giuseppe и @JayCe
источник
paste
. @ Джузеппе тоже.x<-'J'
внутри,outer
а затем повторно использоватьx
в качестве переменной в крайнемc()
операторе, чтобы сбрить байт: попробуйте онлайн!Powershell,
63615956 байт-3 байта: спасибо ConnorLSW
источник
2..10+'AJQK'[0..4]|%{"$_`H";"$_`S";"$_`D";"$_`C"};,'J'*2
Perl 5 , 41 байт
Попробуйте онлайн!
источник
Python 3 ,
6764 байтаПопробуйте онлайн!
Python 2 ,
78767468 байтПопробуйте онлайн!
Alt:
Python 2 , 68 байт
Сохраненный
источник
print
, мы не можем сделать это[*[a+b for a in['10',*'A23456789JQK']for b in'CHSD'],*'JJ']
в 59 байтах. Решению на Haskell не нужно выводить на stdout, зачем Python?K (нгн / к) , 30 байтов
Попробуйте онлайн!
!9
это список0 1 ... 8
2+!9
это список2 3 ... 10
$
нанизывать,
конкатенация,'/:
объединять каждый с каждым правом, то есть декартово произведение; обычно это,/:\:
или,,\:/:
но справа у нас есть только скаляры ("SHDC"
), поэтому мы можем использовать'
вместо\:
"JJ",/
объединить (concat уменьшить) список справа, используя в"JJ"
качестве начального значения для сокращенияисточник
MS-SQL, 137 байт
Массив значений в SQL возвращается как отдельные строки запроса. Использует
STRING_SPLIT
функцию, представленную в SQL 2016 .Он включает джокеров, добавляя две масти «пустых строк», чтобы воспользоваться существующим «J» для Джека, а затем отфильтровывать ненужные нам строки. Короче, чем использование
UNION ALL
утверждений для добавления джокеров.источник
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'
. Это также было бы удобно для игры в гольф, если по умолчанию используется запятая, если вы пропустили второй параметр, но он также не поддерживает это. Еще один предмет дляGolfSQL
языка, о котором я, вероятно, никогда не уйду писать :)Рубин , 61 байт
Попробуйте онлайн!
источник
->{
...}
? Он работает сам по себе и не нуждается в параметрах, поэтому он не должен быть лямбдаC # .NET, 114 байт
Порт моего Java-ответа (кредит @mazzy ) .
Попробуйте онлайн.
Интересная альтернатива 119 байтов от @Corak .
Попробуйте онлайн.
Если
System.Collections.Generic.IEnumerable<string>
вместо вместоstring[]
приемлемый вывод, трейлинг.ToArray()
может быть отброшен, так что он становится 109 байтов .Объяснение:
источник
PHP,
1089997 байтПопробуйте онлайн!
Попробуйте онлайн! (Изменить 1)
Код
Пытался использовать чисто php-функции, но bytecount был ниже с циклом :(
Выход (используя
print_r
)редактировать
Благодаря @JoKing, предлагая изменения
explode(" ","H$t S$t D$t C$t")
для[H.$t,S.$t,D.$t,C.$t]
источник
[H.$t,S.$t,D.$t,C.$t]
будет короче, чем взорваться?array_push($arr, $item1,$item2,$item3...$itemN)
, хорошийSMBF , 169 байт
␀
представляет буквенный NUL-байт\x00
.Это наивное решение.
Поскольку эта программа содержит байт NUL, нет простого способа использовать TIO. Запустите это в интерпретаторе Python, используя
источник
$0.value+='\0'
.Japt,
323026 байтПопробуй это
источник
Пакет, 118 байт
источник
J , 41 байт
Попробуйте онлайн!
источник
'J';^:2,;&.>{_13<\'10';;/'23456789AJKQHCDS'
немного проще, но для 43. Я чувствую, что побриться здесь есть еще ... но я не понимаю, как.R ,
6766 байтПопробуйте онлайн!
Только на один байт больше, чем решение digEmAll для игры в гольф . Вдохновленный решением Джузеппе для этой связанной задачи - тот самый Джузеппе, который отыграл один байт в ответ!
Я публикую отдельно, поскольку это немного другой подход, использующий преимущество того факта, что 4 не является делителем 13 и что вывод не обязательно должен быть в каком-то определенном порядке.
источник
C (gcc) ,
126137133 байтаПопробуйте онлайн!
+11 байт, чтобы быть более полным благодаря Якобу.
-4 байта благодаря Захари
В основном злоупотребление препроцессором для сжатия костюмов. Вероятно, может быть вне игры в гольф, но довольно эффективно, учитывая все обстоятельства.
источник
c
это не «[...] странная« функция »[...]», а декларация массива, хранящаяся в макросе. Насколько мне известно, такая форма вывода не разрешена по умолчанию.c
в источнике создаст новую копию массива в результирующем исполняемом файле (без оптимизации). Таким образом, кодchar *a[] = c; char *b[] = c;
создает две глубокие копии c. Это поведение - то, что вы ожидаете от функции.c=0;
допустимым представлением, рассматривая егоc
как функцию?#define z 0
действительным. Смысл заключается в том , что:c=0; c++; x=c;
приводит кx == 1
такc
не действует так же, как функция. В то же#define z 0 c=z; c++; x=z;
время приводит к тому,x == 0
чтоz
действует как функция.z=0;/**/c=z;c++;x=z;
приводитx==0
, таким образом,z
действует как функция.Javascript (ES6)
777472 байтаЭто полная программа.
источник
BTJ,J,${[..."A23456789JQK","10"].map(c=>[..."SDHC"].map(s=>c+s))}BT.splitBT,BT
(где BT - обратный удар).C (gcc, clang), 138 байтов
Подход заключается в кодировании последовательностей в символьных массивах.
Пример вывода
Попробуйте онлайн!
источник
printf
чтобы избавиться от всехputchar
с.Oracle SQL, 164 байта
Не язык игры в гольф, но ...
Попробуйте онлайн - SQL Fiddle
источник
Луа ,
156127138129 байтПопробуйте онлайн!
Основано на коде Джо Кинга. Как он предложил в комментариях, мой первоначальный ответ был недействительным (я все еще изучаю, как работает code golf 😬), и связал лучший и правильный ответ. Затем я сделал его меньше.
Исходное решение (156 байт):
Я просто хочу сказать, что я новичок в этом материале Code Golf, поэтому, если я делаю что-то не так, не стесняйтесь говорить мне. Я знаю, что этот ответ не один из самых маленьких, я просто хотел бросить вызов себе.
Если у вас есть предложения по сокращению моего кода, вы можете сказать тоже. :)
источник
r
? Либо вам нужно распечатать его в STDOUT, либо заменить его на функцию и вернутьсяr
Perl 6 ,
4342 байтаПопытайся
Попробуйте это от Джо Кинга
Expanded:
источник
QBasic 4.5,
114142127 байтовПримечания к выпуску:
r$
. Весь остальной код практически одинаков.Образец вывода
Если мы добавим этот фрагмент в наш код, мы увидим, что помещено в
r$
:Но как? Ну, позвольте мне сказать вам:
источник
STDOUT
явном виде запрещенаa$
иb$
вары и используя линии что - то вродеr$(i)=MID$("JQKA2345678910",1+m,1-(m=12))+MID$("CDHS",(i-1)\13+1,1)
PRINT "<output>"
Pyth,
2625 байтСохраненный байт благодаря hakr14.
Попробуй здесь
объяснение
источник
+\J+\J
и+*2]\J
эквивалентны и оба 6 байтов, но последний считается лучшей формой, поскольку он позволяет добавить до 10 копий, прежде чем потребуются дополнительные байты.+\J+\J
можно заменить на,+ B\J
чтобы сохранить байт.