Введение:
Я видел, что сейчас был только один вызов, связанный с бадминтоном . Так как я сам играю в бадминтон (последние 13 лет), я решил добавить несколько проблем, связанных с бадминтоном. Вот первый:
Вызов:
Входные данные: два целых числа.
Выходные данные: один из трех отдельных и уникальных выходных данных по вашему выбору. Один указывает на то, что вход является действительным счетом бадминтона И набор закончился победителем; один указывает на то, что вход является действительным счетом бадминтона И набор все еще в игре; один указывает на то, что ввод не является действительным счетом бадминтона.
В бадминтоне оба (пары) игроков начинают с 0 очков, и вы останавливаетесь, когда один из двух (пар) игроков набрал 21 очко, с разницей как минимум в 2 очка, максимум до 30-29.
Таким образом, это все возможные входные пары (в любом порядке), указывающие на то, что это действительный счет в бадминтоне И набор закончен:
[[0,21],[1,21],[2,21],[3,21],[4,21],[5,21],[6,21],[7,21],[8,21],[9,21],[10,21],[11,21],[12,21],[13,21],[14,21],[15,21],[16,21],[17,21],[18,21],[19,21],[20,22],[21,23],[22,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,30]]
И это все возможные входные пары (в любом порядке), указывающие, что это действительный счет в бадминтоне, НО все еще в игре:
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],[1,12],[1,13],[1,14],[1,15],[1,16],[1,17],[1,18],[1,19],[1,20],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[2,10],[2,11],[2,12],[2,13],[2,14],[2,15],[2,16],[2,17],[2,18],[2,19],[2,20],[3,3],[3,4],[3,5],[3,6],[3,7],[3,8],[3,9],[3,10],[3,11],[3,12],[3,13],[3,14],[3,15],[3,16],[3,17],[3,18],[3,19],[3,20],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[4,10],[4,11],[4,12],[4,13],[4,14],[4,15],[4,16],[4,17],[4,18],[4,19],[4,20],[5,5],[5,6],[5,7],[5,8],[5,9],[5,10],[5,11],[5,12],[5,13],[5,14],[5,15],[5,16],[5,17],[5,18],[5,19],[5,20],[6,6],[6,7],[6,8],[6,9],[6,10],[6,11],[6,12],[6,13],[6,14],[6,15],[6,16],[6,17],[6,18],[6,19],[6,20],[7,7],[7,8],[7,9],[7,10],[7,11],[7,12],[7,13],[7,14],[7,15],[7,16],[7,17],[7,18],[7,19],[7,20],[8,8],[8,9],[8,10],[8,11],[8,12],[8,13],[8,14],[8,15],[8,16],[8,17],[8,18],[8,19],[8,20],[9,9],[9,10],[9,11],[9,12],[9,13],[9,14],[9,15],[9,16],[9,17],[9,18],[9,19],[9,20],[10,10],[10,11],[10,12],[10,13],[10,14],[10,15],[10,16],[10,17],[10,18],[10,19],[10,20],[11,11],[11,12],[11,13],[11,14],[11,15],[11,16],[11,17],[11,18],[11,19],[11,20],[12,12],[12,13],[12,14],[12,15],[12,16],[12,17],[12,18],[12,19],[12,20],[13,13],[13,14],[13,15],[13,16],[13,17],[13,18],[13,19],[13,20],[14,14],[14,15],[14,16],[14,17],[14,18],[14,19],[14,20],[15,15],[15,16],[15,17],[15,18],[15,19],[15,20],[16,16],[16,17],[16,18],[16,19],[16,20],[17,17],[17,18],[17,19],[17,20],[18,18],[18,19],[18,20],[19,19],[19,20],[20,20],[20,21],[21,21],[21,22],[22,22],[22,23],[23,23],[23,24],[24,24],[24,25],[25,25],[25,26],[26,26],[26,27],[27,27],[27,28],[28,28],[28,29],[29,29]]
Любая другая пара целых чисел будет неверным счетом бадминтона.
Правила соревнований:
- Ввод / вывод является гибким, поэтому:
- Вы можете принять входные данные в виде списка из двух чисел; два разделенных числа через STDIN или параметры функции; две строки; и т.п.
- Выходными данными будут три различных уникальных значения по вашему выбору. Может быть целыми числами (например
[0,1,2]
,[1,2,3]
,[-1,0,1]
и т.д.); может быть логическим (т.е.[true,false,undefined/null/empty]
); могут быть символами / строками (т.е.["valid & ended","valid","invalid"]
); и т.п. - Пожалуйста, укажите ввод / вывод, который вы использовали в своем ответе!
- Вам разрешено принимать входные целые числа, предварительно упорядоченные, от низшего к высшему или наоборот.
- Входные целые числа могут быть отрицательными, в этом случае они, конечно, недействительны.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Эти контрольные примеры действительны, и набор завершен:
0 21
12 21
21 23
28 30
29 30
Эти тесты допустимы, но набор все еще в игре:
0 0
0 20
12 12
21 21
21 22
Эти тестовые примеры недействительны:
-21 19
-19 21
-1 1
12 22
29 31
30 30
42 43
1021 1021
b-61<~a<a>b/22*b-3
), вы можете сохранить 3 байта.lambda a,b:-(a<0)|cmp(2+max(19,a)%30-a/29,b)
JavaScript (ES6),
55 5348 байт(a)(b)
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) ,
5352 байтаНазывается как
f(max)(min)
. Возвращает 3 для недействительных, 1 для завершенных, 2 для текущих.Сохранено 1 байт благодаря Кевину Круййсену
Попробуйте онлайн!
источник
Желе , 25 байт
Попробуйте онлайн!
Левый аргумент: минимум. Правильный аргумент: максимум.
Invalid:
0
. Текущая:1
. Завершено2
.Объяснение:
источник
VDM-SL , 80 байт
Эта функция берет оценки, упорядоченные в порядке возрастания, и возвращает пустой набор, если оценка недействительна, или набор, содержащий сведения о том, завершен ли набор (поэтому {true}, если набор завершен и действителен, и {false}, если набор неполный и действительный)
Полная программа для запуска может выглядеть так:
Объяснение:
источник
Java (JDK) ,
5948 байтовПопробуйте онлайн!
Возвращает
Object
, который являетсяInteger
0
для недопустимых игр иBoolean
strue
иfalse
для действительных текущих игр и для действительных завершенных игр соответственно. Принимает заказанный (и карри) счет, с более высоким счетом первым.-2 bytes
инвертируя проверку конца матча.-11 bytes
путем каррирования, использования побитовых операторов и некоторых хитростей автобоксирования возвращаемого типа - благодаря @KevinCruijssenUngolfed
источник
APL (Dyalog Unicode) , 35 байтов SBCS
Инфиксная молчаливая функция, где завершено - 2, текущее - 1, недействительное - 0, оставлены меньшие и большие баллы.
Попробуйте онлайн!
Реализует математические формулы Эрика Аутгольфера, объединенные в
и переведен непосредственно в APL (который является строго правоассоциативным, поэтому мы избегаем некоторых скобок):
Это можно преобразовать в неявную функцию, просто подставив для и для , символизируя левый и правый аргументы, а не две переменные:⊣ x ⊢ y
Теперь эквивалентно для любой инфиксной функции , поэтому мы можем упростить⊣⎕⊢ ⎕ ⎕
что является нашим решением;
(,≡30 31|,)×(⊢<2+X)×1+⊢>X←29⌊20⌈1+⊣
:⊣
левый аргумент; один плюс это; максимум 20 и то; минимум 29 и то; присвоить это ; правильный аргумент больше (0/1) ?; добавить один; ... умножить следующее этим; два плюс ; - правильный аргумент меньше этого (0/1); … умножьте следующее на это; объединить аргументы; остатки при делении на эти числа;1+
20⌈
29⌊
X←
X
⊢>
1+
(
)×
2+X
X
⊢<
(
)×
,
30 31|
,≡
конкатенированные аргументы идентичны (0/1) ?;источник
Сборка x86, 42 байта
Принимает вход
ECX
иEDX
регистрирует. Обратите внимание, чтоECX
должно быть больше, чемEDX
.Выводит в
EAX
, где0
означает, что игра все еще включена,1
представляя, что игра окончена, и-1
(akaFFFFFFFF
), представляя неверный счет.Или, более читаемый в Intel Syntax:
Интересный факт: эта функция почти соответствует правилам C Calling Convention, по которым сохраняются регистры, за исключением того, что мне пришлось прибегнуть
EBX
к сбору, чтобы сэкономить несколько байтов при использовании стека.Необязательный (не входит в число байтов)
Добавив следующие 6 байтов непосредственно перед началом кода выше, вы можете передать
ECX
иEDX
неупорядоченный:Что является следующим в читаемом синтаксисе Intel:
источник
Retina 0.8.2 , 92 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Принимает ввод в порядке возрастания. Пояснение: Первый этап просто конвертируется из десятичного в одинарный, чтобы можно было правильно сравнить результаты. Второй этап содержит шесть альтернативных шаблонов, сгруппированных в три группы, так что можно вывести три различных значения:
10
для выигрыша,01
для текущего и00
для недопустимого. Шаблоны:источник
APL (Dyalog Unicode) ,
3332 байта SBCSПопробуйте онлайн!
в: пара в порядке убывания
out: 2 = выполняется, 1 = завершено, 0 = недействительно
тесты, украденные из ответа Адама
источник
Bash 4+,
97899188 байтПредположим, что входы по возрастанию. Используемые концепции из VDM-SL отвечают. Попробуйте онлайн
z==0
- игра в процессеz==1
- игра завершенаz==2
- недействительно-8 очисткой скобки от
(( & | ))
условий+2 исправление ошибки, благодаря Кевину Круйссену
-3 улучшения логики Кевином Круйссеном
источник
1
вместо2
for0 30
. Ваша 97-байтовая версия работала правильно, поэтому, если вы не можете это исправить, вы всегда можете выполнить откат. Проголосовал за эту 97 версию. :)29 30
:( это должно быть "завершено"i>29
должен бытьj>29
во второй троице, чтобы это исправить.