Связанный: Назовите покерную комбинацию
Стрит-флеш - это покерная комбинация, содержащая пять карт последовательного ранга одной масти. Как часть стрит-флеша, туз может ранжироваться либо выше короля, либо ниже двух. Туз может иметь высокий рейтинг (например, A ♥ K ♥ Q ♥ J ♥ 10 ♥ - стрит-флеш с тузом) или низкий (например, 5 ♦ 4 ♦ 3 ♦ 2 ♦ A ♦ - стрит-флеш с пятью высокими), но не может ранжировать как высокие, так и низкие в одной и той же руке (например, Q ♣ K ♣ A ♣ 2 ♣ 3 ♣ - флеш со старшим тузом, а не стрит-флеш).
Вызов
Данные N
карты (в любом разумном формате) выдают истинное значение, если в покерной руке содержится стрит-флеш.
вход
N
номера карт. (В любом разумном формате)
Есть четыре костюма; сердца, пики, алмазы и клубы (H, S, D, C)
.
В каждой масти есть одна карта для чисел от 2 до 10, плюс 4 карты с картинками: туз, валет, дама и король (A, J, Q, K)
Примечание: вы можете взять 10 как T
Выход
Truthy/Falsy
ценность
Прецедент
["AS", "2S", "3S", "4S", "5S"] => true
["3D", "9C", "4S", "KH", "AD", "AC"] => false
["5D", "6D", "7D", "8H", "9D", "10D", "JD"] => false
["JC", "7C", "5D", "8C", "AC", "10C", "9C", "5S"] =>true
[] => false
["AS", "2S", "3S"] => false
["JC", "QC", "KC", "AC", "2C"] => false
[ "2H", "3H", "4H", "5H", "6H", "7H"] => true
Применяются стандартные правила игры в гольф .
Критерии победы: самый короткий код в каждом ланге
источник
10
какT
?Ответы:
Python 2 , 95 байт
Попробуйте онлайн!
Есть 40 возможных стритов, и это просто проверяет их все. Час Браун спас 2 байта; Джо Кинг спас еще 4.
источник
A
на обоих концах , так что я считаю , изменения ,36
чтобы40
должны это исправить.R ,
128 1269491 байтПопробуйте онлайн!
Оригинальная логика значительно сокращена на @ J.Doe.
Создает матрицу 26 на 26 с большей частью бессмыслицы, но все карты (с тузами, повторенными внизу) содержатся в строках 10–23 столбцов 3, 4, 8 и 24. Матрица создается путем объединения всех комбинаций верхнего регистра. алфавит с буквами от J до X заменен на A, 2-9, T, J, Q, K, A, S через
chartr
. Мы получаем C, D, H бесплатно!%in%
Сглаживает матрицу по столбцам в вектор. Затем посмотрите, не превышает ли кодировка длины серии 4 для любого набораTRUE
совпадений.источник
rle
ANDouter
! Это сохраняет два байтаouter
вызова, который производит много недопустимых карт, и использование векторного приведенияin
для избежанияapply
. Они оба должны быть на месте, чтобы это работало!JavaScript (ES6), 116 байт
Попробуйте онлайн!
Как?
источник
Брахилог , 31 байт
Попробуйте онлайн!
источник
Сетчатка 0.8.2 , 66 байт
Попробуйте онлайн! Объяснение:
Преобразуйте карточки с картинками в их значения.
A
может быть 1 или 14.Преобразуйте значение в одинарное и добавьте суффикс, чтобы карты сортировались правильно.
Подходим 5 карт, которые увеличиваются на 1 каждый раз, и убедитесь, что последнее увеличение было ровно 1.
источник
JavaScript (ES6), 106 байт
Принимает массив строковых представлений карточек, заменяя
10
наT
. Попробуйте онлайн!объяснение
Перебирает каждую карту и устанавливает флаг в массиве логических значений, используя индекс, вычисленный из уникальной комбинации ее ранга и масти. Затем этот массив преобразуется в строку, чтобы разрешить сопоставление с шаблоном из 5 последовательных истинных значений.
Например, рука со стрит-флешем может выдать следующее в качестве подстроки полного строкового представления логического массива:
,,,,1,1,1,1,1,,,,
Поскольку первое значение ранга (то есть A) смещено от начала строки, всегда будут пустые значения, предшествующие всем
1
в массиве, гарантируя, что строковое представление начнется с,
источник
Java 10,
189167165164160157156 байтПринимает входные данные в виде одной строки, разделенной пробелом (т.е.
"AS 2S 3S 4S 5S"
).-22 байта благодаря @ OlivierGrégoire .
-1 байт благодаря @AlexRacer .
Попробуйте онлайн.
Гольф-версия кода, которую я использовал для Project Euler # 54 , которую я в основном делал с регулярными выражениями (для развлечения и чтобы узнать больше о регулярных выражениях). Без регулярных выражений это, вероятно, было бы лучше для производительности и легче (вероятно, также применимо для игры в гольф в этом ответе; рассмотрим позже).
Объяснение:
Дополнительное объяснение регулярного выражения:
"AKQJT98765432A".substring(i,i+5)
берет пять смежных карт на основеi
.replaceAll(".","(?=.*$0\\\\1)")
заменяет каждую из этих карт"(?=.*c\\1)"
(гдеc
находится карточный персонаж).replaceFirst(".1","([HSDC])")
затем заменим первый\\1
на([HSDC])
.Т.е. общее регулярное выражение для проверки стрит-флеша для карт в диапазоне значений
[9,5]
станет:^(?=.*9([HSDC]))(?=.*8\\1)(?=.*7\\1)(?=.*6\\1)(?=.*5\\1).*$
(ПРИМЕЧАНИЕ:
String#matches
неявно добавляет конечный / ведущий^...$
для проверки всей строки.) Это регулярное выражение будет:источник
".*"+
префикс.f
break
кi=-2
и возвращение кreturn-1>i;
используя свой подход (и еще 2 изменения(.)
в.
и$1
к$0
). :)Чистый ,
145135 байтовПопробуйте онлайн!
Упрощенная:
источник
Japt , 37 байт
Принимает ввод в виде 2D-массива.
Попытайся
объяснение
источник
Желе , 18 байт
Попробуйте онлайн!
[..., ...]
Формат вывода: пустой список как ложный, непустой список как правдивый.
источник
PHP , 264 байта
Он вторит
1
если это стрит - флеш и0
или ,null
если нет.Если вы называете файл,
1X
вы можете сохранить его, так11 bytes
как вам не нужно его менять$argv[0]
. На данный момент не уверен, почему имя файла может его сломать.По какой - то причине строка
:;<=>
упорядочивается перед строками0123456789
поasort
в TIO , даже если:;<=>
имеет значение ASCII 58-62 и0123456789
имеет значение ASCII 48-57. Так что если вы берете код по ссылке TIO или ниже и используете PHPTester со следующим набором тестов, это работает.Код TIO
Попробуйте онлайн!
источник
Котлин , 226 байт
Используйте T для 10, поэтому все карты имеют длину 2 символа.
Попробуйте онлайн!
источник
Паскаль (FPC) ,
223216210209 байтПопробуйте онлайн!
Использует
T
для 10. Вход содержит 1 карту в строке.Теперь я играю в гольф так сильно, что уже не знаю, как это работает ...
Объяснение:
источник