Mistrzostwa futbolu amerykańskiego, Super Bowl 50 , odbywają się dziś o 23:30 UTC (i można je obejrzeć na żywo w Internecie ). To wyzwanie podjęto, aby je uczcić.
W meczu futbolu amerykańskiego dwie drużyny rywalizują o najwyższą liczbę punktów. Istnieje sześć sposobów na zdobycie tych punktów. Damy każdemu skrót:
- Bramka do gry -
FG
: 3 punkty - Przyłożenie -
TD
: 6 punktów - Dodatkowy punkt -
XP
: 1 punkt - Można zdobyć tylko bezpośrednio po przyziemieniu. - Konwersja dwupunktowa -
XD
(jak dodatkowy punkt, ale szczęśliwszy): 2 punkty - Można zdobyć tylko bezpośrednio po przyziemieniu. - Bezpieczeństwo -
S
: 2 punkty - Rzut wolny -
FCK
3 punkty (bardzo rzadka gra)
Napisz program lub funkcję, która pobiera pojedynczy ciąg wiersza zawierający tylko te sześć skrótów, zarówno dużymi, jak i małymi.
Ciąg ten reprezentuje wszystkie zdarzenia punktacji w meczu (lub części meczu) piłki nożnej, przy czym wielkie litery należą do jednej drużyny, a małe litery należą do drugiej.
Twoim zadaniem jest raportowanie końcowych wyników gry i wskazanie, kto wygrał z wydrukiem formularza
[score 1] [to] [score 2]
gdzie:
[score 1]
jest zawsze większy z dwóch wyników (jeśli nie jest równy), niezależnie od tego, czy wygrane zostały wielkie czy małe litery.[score 2]
jest mniejszym z dwóch wyników (jeśli nie jest równy).[to]
jest to,TO
czy drużyna z wielkimi literami wygrała,to
czy drużyna z małymi literami wygrała iTo
czy jest remis.
Przykład: Wszystkie zdarzenia punktacji w Super Bowl XLIX można podsumować według ciągu
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
gdzie wielkie litery to New England Patriots, a małe litery to Seattle Seahawks . Patrioci zdobyli 28, a Hawks 24, więc wynik byłby następujący:
28 TO 24
Notatki
- Twój program / funkcja musi obsługiwać dowolne dane wejściowe, w tym pusty ciąg znaków.
XP
iXD
nastąpi dopiero poTD
.xp
ixd
nastąpi dopiero potd
.- Nie można zakładać, że łańcuch wejściowy zaczyna się lub kończy w określonym przypadku.
- Pojedynczy znak nowej linii jest opcjonalnie dozwolony zarówno na wejściu, jak i na wyjściu
Punktacja
Najkrótszy kod w bajtach wygrywa. Odpowiedzi zamieszczone przed rozpoczęciem ( za późno! ) Super Bowl 50 mogą przewidzieć zwycięską drużynę ( Panthers lub Broncos ), a jeśli są poprawne, uzyskaj premię -10% bajtów!
(Sprawdzę historię zmian, aby upewnić się, że prognozy się nie zmieniły i naprawdę zostały dokonane przed rozpoczęciem).
Przypadki testowe
[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
źródło
Odpowiedzi:
Pyth,
49464342 bajtów (37,8 bajtów z premią)Dzięki @Maltysen za pomoc w oszczędzaniu 4 bajtów!
Wypróbuj w kompilatorze Pyth .
Lubię obejmować wszystkie bazy, więc postawię na Broncos.
Jak to działa
‡
r
to rodzina funkcji działających na łańcuchach.Jeśli pierwszy wynik w
J
(odpowiadające zamienione przypadkuz
, czyli oryginalne małe litery) jest niższy niż drugi wynik, funkcja znak powróci-1
,(-1 + 1) ^ 2 == 2
ir" to "2
toswapcase
tak, że wraca" TO "
.Jeśli pierwszy wynik jest wyższy niż drugi wynik, funkcja znaku wróci
1
,(1 + 1) ^ 2 == 0
i takr" to "0
jestlowercase
, więc zwraca" to "
.Jeśli wyniki są równe, funkcja znak wróci
0
,(0 + 1) ^ 2 == 3
ir" to "3
jesttitle
, więc zwraca" To "
.źródło
to
s poprzez różne wartości dor
MATL , 51 * 0,9 = 45,9
54575863bajtówDzięki Dennis za usunięcie 3 bajtów!
Pusty ciąg wejściowy jest reprezentowany w kompilatorze online jako pojedynczy znak nowej linii.
EDYCJA (8 czerwca 2016 r.): Poniższy link zawiera modyfikację zgodnie z wersją 18.1.0 języka (najpierw przenieś go
3
tuż przedXc
)Wypróbuj online!
Stawiam na Broncos.
Wyjaśnienie
Wyniki są wykrywane za pomocą pojedynczej litery, wielkiej lub małej (duże litery pokazano poniżej):
P
za XP (1 punkt)D
dla XD (2 punkty)F
dla FG (3 punkty) i dla FCK (3 punkty)T
dla TD (6 punktów)S
dla S (2 punkty)Każda z tych pięciu liter odpowiada jednoznacznie zdarzeniu punktowemu, z wyjątkiem tego
F
jest ponownie używane dlaFG
iFCK
, które mają ten sam wynik. Dzięki @Dennis za to !D
wykryje zarówno TD, jak i XD.T
Zostaną więc przypisane 4 punkty zamiast 6, aby to zrekompensować.Porządkowanie
PDFTS
pozwala zaoszczędzić kilka bajtów podczas definiowania tablicy liczb określającej punkty:[1,2,3,4,2]
.Każde zdarzenie jest wykrywane przez obecność jednej z powyższych liter wielkimi lub małymi literami. Porównanie odbywa się w trzech wymiarach: długość ciągu wejściowego ( N ) × liczba drużyn (2) × liczba wykrytych zdarzeń wynikowych (5). Szeroko wykorzystuje się rozgłaszanie , które jest automatycznym rozszerzaniem tablicy wzdłuż wymiaru singletonu, aby dopasować ją do wielkości większej tablicy.
źródło
F
inFG
aFCK
powinien zapisać trzy bajty.CJam,
575554535049 bajtówWypróbuj online!
Nie mam pojęcia, czym jest Bronco, więc postawię na Pantery.
Jak to działa
źródło
:-g
nigdy nie widziałem tego emotikonuJavaScript (ES6), 128
130bajtówEdytuj 2 bajty zapisane, stosując wskazówkę @ Neila
TEST
źródło
parseInt
jest naprawdę sprytna! Użycie końcówki @ Neill>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
dla danych wyjściowych pozwoliłoby również zaoszczędzić 2 bajty.JavaScript (ES6),
165156151149 bajtów9 bajtów zapisanych dzięki @ dev-null , 5 dzięki @Nie że Charles i 2 dzięki @Neil !
Wyjaśnienie
źródło
/s|fck|../gi
imap(..),a>b
zamiastmap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl,
144140 + 2 = 142 bajtyWymaga
-n
flagi i-E
:Edit: Zapomniałem wsparcie
to
,To
aTO
.źródło
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
jest krótszy jako%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. I" "
(w twojej definicji$,
) jest krótsze jako$"
. Ale nie testowałem żadnego z nich.$"
i mogę usunąćqw
zto To TO
tablicy, dzięki!Lua,
231200 bajtówTo była świetna zabawa, nawet jeśli tak naprawdę nie znam zasad futbolu amerykańskiego (mamy tutaj Rugby :)). Musiałem przetestować wiele rzeczy, aby były tak krótkie, jak to możliwe, nie sądzę, że jest wiele rzeczy do poprawy, może nie jest.
Edycja: Jestem całkowicie opóźniony. Pierwsze rozwiązanie, nad którym pracowałem, dotyczyło rozszerzenia tablicy, a następnie zmieniłem je, a tablica zawierająca wyniki zarówno dla małych, jak i wielkich zespołów nie była już użyteczna. Usunięcie go i użycie zwykłej zmiennej tworzy piękne -31 bajtów.
Bez golfa i wyjaśnienia
źródło
Python, 167 bajtów
Wspaniała sowa już dawno minęła, ale ponieważ nie ma jeszcze rozwiązania w języku Python:
Działa w Python 2 lub 3.
źródło