Чемпионат по американскому футболу Super Bowl 50 состоится сегодня в 23:30 UTC (и вы можете смотреть его в прямом эфире онлайн ). Этот вызов был сделан, чтобы отпраздновать это.
В игре американского футбола две команды соревнуются, чтобы получить наибольшее количество очков, и есть шесть способов заработать эти очки. Мы дадим каждому аббревиатуру:
- Цель поля -
FG
: 3 очка - Приземление -
TD
: 6 очков - Дополнительный балл -
XP
: 1 балл - Можно набрать только сразу после приземления. - Двухточечная конверсия -
XD
(как дополнительная точка, но более счастливая): 2 балла - Можно набрать только сразу после приземления. - Безопасность -
S
: 2 балла - Честная добыча -
FCK
3 очка (очень редкая игра)
Напишите программу или функцию, которая принимает строку в одну строку, содержащую только эти шесть сокращений, как в верхнем, так и в нижнем регистре.
Эта строка представляет все события подсчета очков в игре (или части игры) в футбол, причем прописные слова принадлежат одной команде, а строчные - другой.
Ваша задача - сообщить итоговые результаты игры и указать, кто выиграл, с помощью формы
[score 1] [to] [score 2]
где:
[score 1]
всегда больше, чем один из двух баллов (если не равен), независимо от того, выиграл ли он в верхнем или нижнем регистре.[score 2]
является меньшим из двух баллов (если не равен).[to]
этоTO
если прописные команда выиграла,to
если строчной команда выигрывала, иTo
если это галстук.
Пример: все события подсчета очков в Super Bowl XLIX можно суммировать с помощью строки
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
где заглавными буквами обозначены патриоты Новой Англии, строчными - Сиэтл Сихокс . Патриоты набрали 28, а Ястребы 24, так что результат будет:
28 TO 24
Примечания
- Ваша программа / функция должна поддерживать любой произвольный ввод, включая пустую строку.
XP
иXD
произойдет только сразу послеTD
.xp
иxd
произойдет только сразу послеtd
.- Вы не можете предполагать, что входная строка начинается или заканчивается в определенном случае.
- Одиночный завершающий перевод строки необязательно разрешен как на входе, так и на выходе.
счет
Самый короткий код в байтах побеждает. Ответы, опубликованные до начала ( слишком поздно! ) Суперкубка 50, могут предсказать команду-победителя ( Пантеры или Бронкос ), и, если они верны, получите бонус -10%!
(Я проверю историю изменений, чтобы убедиться, что прогнозы не изменились и действительно были сделаны до начала.)
Тестовые случаи
[empty string] -> 0 To 0
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP -> 28 TO 24
FG -> 3 TO 0
fg -> 3 to 0
TD -> 6 TO 0
td -> 6 to 0
TDXP -> 7 TO 0
tdxp -> 7 to 0
TDXD -> 8 TO 0
tdxd -> 8 to 0
S -> 2 TO 0
s -> 2 to 0
FCK -> 3 TO 0
fck -> 3 to 0
TDTDXDSssFCKfgfckFGtd -> 22 TO 16
fcksFCKS -> 5 To 5
tdtdtdtdxp -> 25 to 0
SSSSSSSTD -> 20 TO 0
fgSfckFGfgtdxptdxdTDs -> 26 to 11
FGTDXPtdxdtdsStdxpfgTDfckTDXDFCK -> 29 To 29
источник
Ответы:
Pyth,
49464342 байта (37,8 байта с бонусом)Спасибо @Maltysen за помощь в экономии 4 байтов!
Попробуйте это в Pyth Compiler .
Мне нравится покрывать все базы, поэтому я сделаю ставку на Бронкос.
Как это устроено
‡
r
это семейство функций, которые работают со строками.Если первая оценка в
J
(соответствующем выгружен случаеz
, то есть, оригинальные строчные буквы) ниже , чем второй счет, знаковая функция будет возвращать-1
,(-1 + 1) ^ 2 == 2
иr" to "2
этоswapcase
, поэтому он возвращается" TO "
.Если первый балл выше , чем второй счет, знаковая функция будет возвращать
1
,(1 + 1) ^ 2 == 0
иr" to "0
этоlowercase
, поэтому он возвращается" to "
.Если баллы равны, знаковая функция будет возвращать
0
,(0 + 1) ^ 2 == 3
иr" to "3
этоtitle
, поэтому он возвращается" To "
.источник
to
s с разными значениямиr
MATL , 51 * 0,9 = 45,9
54575863байтаСпасибо Деннису за удаление 3 байтов!
Пустая строка ввода представляется в онлайн-компиляторе как один символ новой строки.
РЕДАКТИРОВАТЬ (8 июня 2016 г.): приведенная ниже ссылка включает в себя модификацию в соответствии с версией 18.1.0 языка (переместите его первым
3
прямо передXc
)Попробуйте онлайн!
Бьюсь об заклад на Бронкос.
объяснение
Баллы определяются по одной букве в верхнем или нижнем регистре (заглавные буквы показаны ниже):
P
за XP (1 балл)D
для XD (2 балла)F
для FG (3 балла) и для FCK (3 балла)T
для ТД (6 баллов)S
для S (2 балла)Каждая из этих пяти букв соответствует уникальному событию, за исключением того, что
F
повторно используется дляFG
иFCK
, которые имеют ту же оценку. Спасибо @Dennis за это !D
обнаружит как TD, так и XD. ТакT
будет назначено 4 балла вместо 6 для компенсации.Упорядочение
PDFTS
, экономит несколько байт при определении массива чисел , который определяет точку:[1,2,3,4,2]
.Каждое событие обнаруживается по наличию одной из вышеуказанных букв в верхнем или нижнем регистре. Сравнение проводится в трех измерениях: длина входной строки ( N ) × количество команд (2) × количество обнаруженных событий оценки (5). Широко используется широковещательная передача , которая представляет собой автоматическое расширение массива по одноэлементному измерению для соответствия размеру большего массива.
источник
F
вFG
иFCK
должно сохранить три байта.CJam,
575554535049 байтовПопробуйте онлайн!
Я понятия не имею, что такое Бронко, поэтому я сделаю ставку на Пантер.
Как это устроено
источник
:-g
никогда раньше не видел этот смайликJavaScript (ES6), 128
130байтОтредактируйте 2 байта, сохраненных с помощью подсказки @ Neil
ТЕСТОВОЕ ЗАДАНИЕ
источник
parseInt
действительно умным! Использование подсказки @ Neill>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
для вывода также сэкономит 2 байта.JavaScript (ES6),
165156151149 байт9 байтов сохранено благодаря @ dev-null , 5 благодаря @ Не это Чарльз и 2 благодаря @Neil !
объяснение
источник
/s|fck|../gi
иmap(..),a>b
вместоmap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl
144140 + 2 = 142 байтаТребуется
-n
флаг и-E
:Изменить: Забыл, чтобы поддержать
to
,To
иTO
.источник
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
короче%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. И" "
(в вашем определении$,
) короче$"
. Но я не проверял ни один из них.$"
и я могу удалитьqw
наto To TO
массив, спасибо!Луа,
231200 байтБыло очень весело, даже если я действительно не знаю правил американского футбола (у нас есть регби здесь :)). Мне пришлось протестировать много вещей, чтобы сделать его как можно более коротким, я не думаю, что есть что-то, что можно улучшить, а может и нет.
Изменить: я полная задержка. Первое решение, над которым я работал, основывалось на использовании расширения массива, затем я изменил его, и массив, содержащий оценки как для строчных, так и для прописных команд, больше не был полезен. Удаление его и использование простой переменной дает красивые -31 байт.
Неуправляемый и объяснения
источник
Python, 167 байт
Превосходная сова давно прошла, но пока нет решения Python:
Работает в Python 2 или 3.
источник