Le championnat de football américain, Super Bowl 50 , se déroule aujourd'hui à 23h30 UTC (et vous pouvez le regarder en direct en ligne ). Ce défi a été fait pour le célébrer.
Dans un match de football américain, deux équipes s'affrontent pour obtenir le plus de points et il y a six façons de marquer ces points. Nous donnerons à chacun une abréviation:
- Objectif de terrain -
FG
: 3 points - Touchdown -
TD
: 6 points - Point supplémentaire -
XP
: 1 point - Ne peut être marqué directement qu'après un touché. - Conversion en deux points -
XD
(comme un point supplémentaire mais plus heureux): 2 points - Ne peut être marqué directement qu'après un touché. - Sécurité -
S
: 2 points - Coup de pied arrêt de volée -
FCK
: 3 points (un jeu très rare)
Écrivez un programme ou une fonction qui accepte une chaîne d'une seule ligne contenant uniquement ces six abréviations, en majuscules et en minuscules.
Cette chaîne représente tous les événements de notation dans un match (ou une partie d'un match) de football, les termes en majuscules appartenant à une équipe et les minuscules à l'autre.
Votre travail consiste à rapporter les scores finaux du jeu et à indiquer qui a gagné avec la sortie du formulaire
[score 1] [to] [score 2]
où:
[score 1]
est toujours le plus élevé des deux scores (s'il n'est pas égal), que les majuscules ou les minuscules l'emportent.[score 2]
est le plus petit des deux scores (s'il n'est pas égal).[to]
c'estTO
si l'équipe en majuscules a gagné,to
si l'équipe en minuscules a gagné etTo
si c'est une égalité.
Exemple: tous les événements de notation dans le Super Bowl XLIX peuvent être résumés par la chaîne
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
où les majuscules sont les New England Patriots et les minuscules les Seattle Seahawks . Les Patriots ont marqué 28 et les Hawks 24, donc la sortie serait:
28 TO 24
Remarques
- Votre programme / fonction doit prendre en charge toute entrée arbitraire, y compris la chaîne vide.
XP
etXD
ne se produira que juste aprèsTD
.xp
etxd
ne se produira que juste aprèstd
.- Vous ne pouvez pas supposer que la chaîne d'entrée commence ou se termine dans un certain cas.
- Une seule nouvelle ligne de fin est éventuellement autorisée à la fois en entrée et en sortie
Notation
Le code le plus court en octets gagne. Les réponses publiées avant le coup d'envoi ( trop tard maintenant! ) Du Super Bowl 50 peuvent prédire l'équipe gagnante ( Panthers ou Broncos ), et si elles sont correctes, obtenez un bonus de -10%!
(Je vérifierai l'historique des révisions pour m'assurer que les prédictions n'ont pas changé et ont vraiment été faites avant le coup d'envoi.)
Cas de test
[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
la source
Réponses:
Pyth,
49464342 octets (37,8 octets avec bonus)Merci à @Maltysen de m'avoir aidé à économiser 4 octets!
Essayez-le dans le compilateur Pyth .
J'aime couvrir toutes les bases, donc je parie sur les Broncos.
Comment ça fonctionne
‡
r
est une famille de fonctions qui opèrent sur des chaînes.Si le premier score de
J
(correspondant au cas échangéz
, c'est-à-dire les lettres minuscules d'origine) est inférieur au deuxième score, la fonction de signe reviendra-1
,(-1 + 1) ^ 2 == 2
et l'r" to "2
estswapcase
, donc elle revient" TO "
.Si le premier score est supérieur au deuxième score, la fonction signe reviendra
1
,(1 + 1) ^ 2 == 0
et l'r" to "0
estlowercase
, donc elle revient" to "
.Si les scores sont égaux, la fonction signe reviendra
0
,(0 + 1) ^ 2 == 3
et l'r" to "3
esttitle
, donc elle revient" To "
.la source
to
s par différentes valeurs pourr
MATL , 51 * 0,9 = 45,9
54575863octetsMerci à Dennis d'avoir supprimé 3 octets!
Une chaîne d'entrée vide est représentée dans le compilateur en ligne comme un seul caractère de nouvelle ligne.
EDIT (8 juin 2016): Le lien ci-dessous inclut une modification selon la version 18.1.0 de la langue (déplacez-le d'abord à
3
droite avantXc
)Essayez-le en ligne!
Je parie sur les Broncos.
Explication
Les scores sont détectés à l'aide d'une seule lettre, en majuscule ou en minuscule (en majuscule est indiqué ci-dessous):
P
pour XP (1 point)D
pour XD (2 points)F
pour FG (3 points) et pour FCK (3 points)T
pour TD (6 points)S
pour S (2 points)Chacune de ces cinq lettres correspond uniquement à un événement de partition, sauf que
F
est réutilisé pourFG
etFCK
qui ont le même score. Merci à @Dennis pour cela !D
détectera à la fois TD et XD. AinsiT
seront attribués 4 points au lieu de 6 pour compenser.La commande
PDFTS
, permet d' économiser quelques octets lors de la définition du tableau de nombres qui spécifie les points:[1,2,3,4,2]
.Chaque événement est détecté par la présence d'une des lettres ci-dessus en majuscule ou en minuscule. La comparaison se fait en trois dimensions: longueur de chaîne d'entrée ( N ) × nombre d'équipes (2) × nombre d'événements de score détectés (5). La diffusion est largement utilisée , c'est-à-dire l'expansion automatique d'un tableau le long d'une dimension singleton pour correspondre à la taille d'un tableau plus grand.
la source
F
inFG
etFCK
devrait économiser trois octets.CJam,
575554535049 octetsEssayez-le en ligne!
Je n'ai aucune idée de ce qu'est un Bronco, alors je parie sur les Panthers.
Comment ça fonctionne
la source
:-g
jamais vu cette émoticône auparavantJavaScript (ES6), 128
130octetsModifier 2 octets enregistrés en appliquant le conseil de @ Neil
TESTER
la source
parseInt
est vraiment intelligent! L'utilisation de la pointe de @ Neill>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
pour la sortie permettrait également d'économiser 2 octets.JavaScript (ES6),
165156151149 octets9 octets économisés grâce à @ dev-null , 5 grâce à @Not that Charles et 2 grâce à @Neil !
Explication
la source
/s|fck|../gi
etmap(..),a>b
au lieu demap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl,
144140 + 2 = 142 octetsNécessite le
-n
drapeau et-E
:Modifier: oublié de prendre en charge
to
,To
etTO
.la source
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
est plus bref que%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. Et" "
(dans votre définition de$,
) est plus bref que$"
. Mais je n'ai testé ni l'un ni l'autre.$"
et je peux supprimerqw
sur leto To TO
tableau, merci!Lua,
231200 octetsC'était très amusant, même si je ne connais pas vraiment les règles du football américain (nous avons le rugby ici :)). J'ai dû tester beaucoup de choses pour que ce soit aussi court que possible, je ne pense pas qu'il y ait beaucoup de choses à améliorer, peut-être pas.
Edit: je suis un retard total. La première solution sur laquelle j'ai travaillé tournait autour de l'utilisation de l'extension de tableau, puis je l'ai modifiée et le tableau contenant les scores pour l'équipe en minuscules et en majuscules n'était plus utile. Le supprimer et utiliser une variable simple fait un beau -31 octets.
Non golfé et explications
la source
Python, 167 octets
La superbe chouette est révolue depuis longtemps, mais puisqu'il n'y a pas encore de solution Python:
Fonctionne en Python 2 ou 3.
la source