Цель
В свете того, что World Series уже не за горами, мне нужна программа, которая может считывать оценки в боксах и рассказывать мне, что это за иннинг. Это немного сложнее, потому что бейсбол использует странный метод для записи счета. Они не записывают счет команды в летучей мыши за подачу, пока они не набрали пробег (и все еще идут) или не закончили свою летучую мышь. Таким образом, 0 на табло всегда означает готовый бит. Например:
Example A:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| 0| | | |
Example B:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| 1| | | |
Example C:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
Them| 0| 0| 0| 0| 0| 2| | | |
Us| 0| 0| 2| 0| 0| | | | |
#Them is the Away Team, Us is the Home Team (who are the guys you root for)
- Пример A: Мы знаем, что мы на вершине 7-го, потому что у нас есть записанный 0 в нижней части 6-го, а вершина 7-го пуста.
- Пример Б: Это может быть либо нижняя часть шестого, либо верхняя часть седьмого.
- Пример C: это может быть верх или низ шестого.
Ваша задача состоит в том, чтобы вернуть какой иннинг (ы) это может быть.
вход
Два списка неотрицательных целых чисел. Предполагается, что списки будут зубчатыми, а список гостей - того же размера или на один элемент больше, чем у хозяев. Вы можете выставлять оценки в любом порядке, но указывать в своем ответе, если вы не используете значение по умолчанию. То есть, Away Team, затем Home team (по умолчанию), или Home team, затем Away team (в обратном порядке). Они также могут быть дополнены фиктивными данными, если хотите, укажите в своем ответе, если вы это сделаете.
Выход
Строка или что-то эквивалентное, которая идентифицирует номер иннинга и является ли он верхом или низом. Например 7B 8T
, B7 T8
, ['7B','8T']
все в порядке. Если есть два ответа, вы должны вывести оба. Формат довольно гибкий, хотя.
правила
- Ввод всегда будет действительным
- Игры могут войти в неопределенные дополнительные возможности. Ваша программа должна поддерживать до 255 подач.
- Стандартные лазейки запрещены
- Это код-гольф, поэтому выигрывает самый короткий код
Тестовые случаи
#Input:
[[],
[]]
#Output: 1T
#Input:
[[0],
[]]
#Output: 1B
#Input:
[[0,0,0,1],
[0,0,0,0]]
#Output: 5T
#Input:
[[0,0,0,1],
[0,0,0,1]]
#Output: 4B, 5T
#Input:
[[0,0,0,1,0,0,1,0,0,1],
[0,0,0,0,1,0,0,1,0,1]]
#Output: 10B, 11T
#Input:
[[0,0,0,1],
[0,0,0]]
#Output: 4T, 4B
#Input:
[[0,0,0,0],
[0,0,0]]
#Output: 4B
Ответы:
C (gcc) , 50 байтов
Принимает ввод как указатель на чередующийся список (т.е.
{them#1, us#1, them#2,...}
).Возвращает одну опцию через модификацию, а другую через возвращаемое значение.
Отрицательные значения указывают на нижнюю часть иннинга, положительные значения указывают на верхнюю часть иннинга. Нули "пустые". Абсолютным значением выхода является номер тайма. Таким образом,
-4,5
указывает на возможности, являющиеся вершиной пятой и нижней четвертой, и1,0
указывает на единственную возможность, являющуюся вершиной первой.Возвращаемое значение макроса может использоваться, чтобы определить, есть ли один или два возможных иннинга; возвращаемое значение,
0
если нет другого иннинга. В противном случае это номер иннинга.Ноль байтов исходного кода. Используйте следующее в качестве флага препроцессора:
Попробуйте онлайн!
Degolf
источник
Perl 6 ,
52 4845 байт-3 байта благодаря некоторой реструктуризации из nwellnhof!
Попробуйте онлайн!
Блок анонимного кода, который принимает входные данные в виде двух списков сверху вниз. Выход - это список кортежей, где первый элемент - это номер иннинга, а второй - True или False, что соответствует Bottom или Top.
Объяснение:
источник
R ,
10396 байтПопробуйте онлайн!
@digEmAll сохранено 7 байтов!
Принимает два
спискавекторов в качестве входных данных и выводит одно или два целых числа, представляющих возможные значения. Положительные целые числа являются верхней частью иннинга, а отрицательные целые числа - нижней частью иннинга.В R положительные целые числа являются правдивыми, поэтому я могу использовать разницу в длине в качестве первого аргумента
if()
.источник
[[
в качествеif
замены, поскольку вы используете[
в своем коде.<
и^
. Я думаю, что это[
был тот пример, который я помню.'if'
(и удалить{}
и переместитьсяf=
наружу): 96 байтJavaScript (Node.js) , 75 байт
Попробуйте онлайн!
источник
Желе , 11 байт
Попробуйте онлайн!
Первый элемент: индекс столбца на основе 0.
Второй элемент:
0
сверху,1
снизу.Вывод представляет собой список из одной или двух пар, как указано выше (предварительно подтвержденный, чтобы показать его лучше). Выходные данные в обратном порядке.
источник
Python 2 ,
135129126125123119 байтПопробуйте онлайн!
-1 благодаря @ovs
-4 еще раз спасибо @ovs
источник
if d else"11BT"[c<1::2]
за -3if d
Я могу видеть (не должен был пропустить это!), Ноelse"11BT"[c<1::2]
не выходит для меня короче, если я что-то упускаю.if d
все равно нашел другой способ, вдохновленный твоим .if d
вы можете сделатьif b
, тогда вам не нужно хранитьlen(b)
в переменной.d
для[d<c]
. Не могу обойти это. Есть идеи?Python 2 , 65 байт
Попробуйте онлайн!
Печатает две строки, сначала нижнюю возможность иннинга, а затем верхнюю, в виде одноэлементного списка. Если какой-либо из них невозможен, этот список пуст.
источник
Чисто ,
8475 байтПопробуйте онлайн!
Определяет функцию
@ :: [Int] [Int] -> (Int, Int)
и некоторые помощники.Дает вывод в форме,
(Top, Bottom)
где ноль означает нулевую возможность.источник