Die amerikanische Fußballmeisterschaft Super Bowl 50 findet heute um 23:30 Uhr UTC statt (und Sie können sie live online verfolgen ). Diese Herausforderung wurde gemacht, um sie zu feiern.
In einem American-Football-Spiel kämpfen zwei Teams um die meisten Punkte, und es gibt sechs Möglichkeiten, diese Punkte zu erzielen . Wir geben jedem eine Abkürzung:
- Field Goal -
FG
: 3 Punkte - Touchdown -
TD
: 6 Punkte - Extra Punkt -
XP
: 1 Punkt - Kann nur direkt nach einem Touchdown erzielt werden. - Zwei-Punkte-Umwandlung -
XD
(wie ein zusätzlicher Punkt, aber glücklicher): 2 Punkte - Kann nur direkt nach einem Aufsetzen erzielt werden. - Sicherheit -
S
: 2 Punkte - Fair Catch Kick -
FCK
: 3 Punkte (ein sehr seltenes Spiel)
Schreiben Sie ein Programm oder eine Funktion, die eine einzelne Zeichenfolge mit nur diesen sechs Abkürzungen in Groß- und Kleinbuchstaben enthält.
Diese Zeichenfolge repräsentiert alle Bewertungsereignisse in einem Spiel (oder einem Teil eines Spiels) des Fußballs, wobei die Großbuchstaben einer Mannschaft und die Kleinbuchstaben der anderen Mannschaft zugeordnet sind.
Ihre Aufgabe ist es, die Endergebnisse des Spiels zu melden und anzugeben, wer mit der Ausgabe des Formulars gewonnen hat
[score 1] [to] [score 2]
wo:
[score 1]
ist immer die größere der beiden Punktzahlen (falls nicht gleich), unabhängig davon, ob Groß- oder Kleinschreibung gewonnen wurde.[score 2]
ist der kleinere der beiden Werte (falls nicht gleich).[to]
Es ist,TO
wenn das Großbuchstaben-Team gewonnen hat,to
wenn das Kleinbuchstaben-Team gewonnen hat undTo
wenn es ein Unentschieden ist.
Beispiel: Alle Bewertungsereignisse in Super Bowl XLIX können durch die Zeichenfolge zusammengefasst werden
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
Großbuchstaben sind die New England Patriots und Kleinbuchstaben sind die Seattle Seahawks . Die Patrioten erzielten 28 und die Hawks 24 Punkte, die Ausgabe wäre also:
28 TO 24
Anmerkungen
- Ihr Programm / Ihre Funktion muss beliebige Eingaben unterstützen, einschließlich der leeren Zeichenfolge.
XP
undXD
wird erst unmittelbar danach auftretenTD
.xp
undxd
wird erst unmittelbar danach auftretentd
.- Sie können nicht davon ausgehen, dass die Eingabezeichenfolge in einem bestimmten Fall beginnt oder endet.
- Optional ist sowohl in der Eingabe als auch in der Ausgabe eine einzelne nachgestellte Zeile zulässig
Wertung
Der kürzeste Code in Bytes gewinnt. Antworten, die vor dem Anpfiff ( jetzt zu spät! ) Des Super Bowl 50 veröffentlicht werden, können das Gewinnerteam (entweder Panthers oder Broncos) vorhersagen ) Wenn sie korrekt sind, erhalten Sie einen 10% -Byte-Bonus!
(Ich werde den Revisionsverlauf überprüfen, um sicherzustellen, dass sich die Vorhersagen nicht geändert haben und wirklich vor dem Anpfiff gemacht wurden.)
Testfälle
[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
quelle
Antworten:
Pyth,
49464342 Bytes (37,8 Bytes mit Bonus)Vielen Dank an @Maltysen, der mir geholfen hat, 4 Bytes zu sparen!
Probieren Sie es im Pyth-Compiler aus .
Ich mag es, alle Basen abzudecken, also wette ich auf die Broncos.
Wie es funktioniert
‡
r
ist eine Familie von Funktionen, die mit Strings arbeiten.Wenn die erste Kerbe in
J
(zu vertauscht Fall entsprichtz
, das heißt, die ursprünglichen Kleinbuchstaben) niedriger ist als die zweite Kerbe, wird die Vorzeichenfunktion zurück-1
,(-1 + 1) ^ 2 == 2
undr" to "2
istswapcase
, so dass er zurückkehrt" TO "
.Wenn die erste Punktzahl höher als die zweite Punktzahl ist, wird das Zeichen Funktion zurückkehren
1
,(1 + 1) ^ 2 == 0
undr" to "0
istlowercase
, so gibt es" to "
.Wenn die Punktzahlen gleich sind, wird die Vorzeichenfunktion zurückgegeben
0
,(0 + 1) ^ 2 == 3
undr" to "3
isttitle
dies auch" To "
.quelle
to
s durch unterschiedliche Werte zur
MATL , 51 * 0,9 = 45,9
54575863BytesDanke an Dennis für das Entfernen von 3 Bytes!
Eine leere Eingabezeichenfolge wird im Online-Compiler als einzelnes Zeilenumbruchzeichen dargestellt.
BEARBEITEN (8. Juni 2016): Der unten stehende Link enthält eine Änderung gemäß Release 18.1.0 der Sprache (zuerst
3
rechts vor verschiebenXc
).Probieren Sie es online!
Ich wette auf die Broncos.
Erläuterung
Die Ergebnisse werden anhand eines einzelnen Buchstabens in Groß- oder Kleinbuchstaben ermittelt (Großbuchstaben werden im Folgenden angezeigt):
P
für XP (1 Punkt)D
für XD (2 Punkte)F
für FG (3 Punkte) und für FCK (3 Punkte)T
für TD (6 Punkte)S
für S (2 Punkte)Jeder dieser fünf Buchstaben entspricht in einzigartiger Weise einem Bewertungsereignis
F
wird fürFG
und wiederverwendetFCK
, die die gleiche Punktzahl haben. Vielen Dank an @Dennis dafür !D
erkennt sowohl TD als auch XD. SoT
werden zum Ausgleich 4 statt 6 Punkte vergeben.Die Reihenfolge
PDFTS
spart ein paar Bytes bei der Definition des Zahlenarrays, das die Punkte angibt:[1,2,3,4,2]
.Jedes Ereignis wird durch das Vorhandensein eines der obigen Buchstaben in Groß- oder Kleinbuchstaben erkannt. Der Vergleich erfolgt in drei Dimensionen: Länge der eingegebenen Zeichenfolge ( N ) × Anzahl der Teams (2) × Anzahl der erkannten Punkteereignisse (5). Broadcasting wird in großem Umfang verwendet. Dabei handelt es sich um die automatische Erweiterung eines Arrays entlang einer Singleton-Dimension, um der Größe eines größeren Arrays zu entsprechen.
quelle
F
inFG
undFCK
sollte drei Bytes speichern.CJam,
575554535049 BytesProbieren Sie es online!
Ich habe keine Ahnung, was ein Bronco ist, also wette ich auf die Panther.
Wie es funktioniert
quelle
:-g
habe dieses Emoticon noch nie gesehenJavaScript (ES6), 128 -
130ByteBearbeiten Sie 2 Bytes, die mit @ Neils Tipp gespeichert wurden
PRÜFUNG
quelle
parseInt
ist wirklich klug! Die Verwendung von @ Neils Tippl>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
für die Ausgabe würde ebenfalls 2 Byte einsparen.JavaScript (ES6),
165156151149 Byte9 Bytes gespart dank @ dev-null , 5 dank @Not that Charles und 2 dank @Neil !
Erläuterung
quelle
/s|fck|../gi
undmap(..),a>b
stattmap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl,
144140 + 2 = 142 BytesBenötigt die
-n
Flagge und-E
:Bearbeiten: Support vergessen
to
,To
undTO
.quelle
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
Ist aber kürzer als%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. Und" "
(in Ihrer Definition von$,
) ist kürzer als$"
. Aber ich habe keines davon getestet.$"
und ich kannqw
auf demto To TO
Array entfernen , danke!Lua,
231200 BytesEs hat sehr viel Spaß gemacht, auch wenn ich die Regeln des American Football nicht wirklich kenne (wir haben Rugby hier :)). Ich musste viele Dinge testen, um es so kurz wie möglich zu halten. Ich glaube nicht, dass es viele Dinge gibt, die verbessert werden müssen. Vielleicht gibt es keine.
Edit: Ich bin total zurückgeblieben. Die erste Lösung, an der ich gearbeitet habe, drehte sich um die Verwendung der Array-Erweiterung. Dann habe ich sie geändert und das Array mit den Punktzahlen für das Klein- und das Großschreibungsteam war nicht mehr nützlich. Das Entfernen und Verwenden einer einfachen Variablen ergibt schöne -31 Bytes.
Ungolfed und Erklärungen
quelle
Python, 167 Bytes
Die großartige Eule ist lange vorbei, aber da es noch keine Python-Lösung gibt:
Funktioniert in Python 2 oder 3.
quelle