O campeonato de futebol americano, Super Bowl 50 , está acontecendo hoje às 23:30 UTC (e você pode assistir ao vivo online ). Este desafio foi feito para celebrá-lo.
Em um jogo de futebol americano, duas equipes competem para obter o maior número de pontos e há seis maneiras de marcar esses pontos. Daremos a cada uma abreviação:
- Objetivo de campo -
FG
: 3 pontos - Touchdown -
TD
: 6 pontos - Ponto extra -
XP
: 1 ponto - Só pode ser pontuado diretamente após um touchdown. - Conversão de dois pontos -
XD
(como um ponto extra, mas mais feliz): 2 pontos - Só pode ser pontuado diretamente após um touchdown. - Segurança -
S
: 2 pontos - Fair catch kick -
FCK
: 3 pontos (uma jogada muito rara)
Escreva um programa ou função que utilize uma única linha contendo apenas essas seis abreviações, em maiúsculas e minúsculas.
Essa sequência representa todos os eventos de pontuação em um jogo (ou parte de um jogo) de futebol, com os termos em maiúsculas pertencentes a um time e os minúsculos em outro.
Seu trabalho é relatar as pontuações finais do jogo e indicar quem ganhou com a saída do formulário
[score 1] [to] [score 2]
Onde:
[score 1]
é sempre a maior das duas pontuações (se não for igual), independentemente de haver ganho em maiúsculas ou minúsculas.[score 2]
é a menor das duas pontuações (se não for igual).[to]
éTO
se o time em maiúsculas venceu,to
se o time em minúsculas venceu eTo
se é um empate.
Exemplo: Todos os eventos de pontuação no Super Bowl XLIX podem ser resumidos pela sequência
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
onde maiúsculas são os New England Patriots e minúsculas são os Seattle Seahawks . O Patriots marcou 28 e o Hawks 24, então a saída seria:
28 TO 24
Notas
- Seu programa / função deve suportar qualquer entrada arbitrária, incluindo a sequência vazia.
XP
eXD
só ocorrerá logo depoisTD
.xp
exd
só ocorrerá logo depoistd
.- Você não pode assumir que a sequência de entrada começa ou termina em um determinado caso.
- Uma única nova linha à direita é opcionalmente permitida na entrada e na saída
Pontuação
O código mais curto em bytes vence. As respostas postadas antes do início do jogo ( muito tarde agora! ) Do Super Bowl 50 podem prever a equipe vencedora ( Panteras ou Broncos ) e, se estiverem corretas, recebam um bônus de -10% de bytes!
(Verificarei o histórico de revisões para garantir que as previsões não foram alteradas e realmente foram feitas antes do início.)
Casos de teste
[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
fonte
Respostas:
Pitão,
49464342 bytes (37,8 bytes com bônus)Obrigado a @ Maltysen por me ajudar a economizar 4 bytes!
Experimente no Compilador Pyth .
Eu gosto de cobrir todas as bases, por isso aposto no Broncos.
Como funciona
‡
r
é uma família de funções que operam em seqüências de caracteres.Se o primeiro marcador em
J
(correspondente ao caso trocadoz
, ou seja, as letras minúsculas originais) é menor do que a segunda contagem, a função sinal voltará-1
,(-1 + 1) ^ 2 == 2
er" to "2
éswapcase
, por isso, retorna" TO "
.Se a primeira pontuação é maior do que a segunda pontuação, a função sinal vai voltar
1
,(1 + 1) ^ 2 == 0
er" to "0
élowercase
, por isso, ele retorna" to "
.Se as pontuações são iguais, a função sinal vai voltar
0
,(0 + 1) ^ 2 == 3
er" to "3
étitle
, por isso, ele retorna" To "
.fonte
to
s através de valores diferentes parar
MATL , 51 * 0,9 = 45,9
54575863bytesAgradecimentos a Dennis por remover 3 bytes!
Uma cadeia de entrada vazia é representada no compilador online como um único caractere de nova linha.
EDIT (8 de junho de 2016): O link abaixo inclui uma modificação conforme o release 18.1.0 do idioma (mova ele primeiro
3
logo antesXc
)Experimente online!
Eu aposto no Broncos.
Explicação
As pontuações são detectadas usando uma única letra, maiúscula ou minúscula (maiúsculas são mostradas a seguir):
P
para XP (1 ponto)D
para XD (2 pontos)F
para FG (3 pontos) e para FCK (3 pontos)T
para TD (6 pontos)S
para S (2 pontos)Cada uma dessas cinco letras corresponde exclusivamente a um evento de pontuação, exceto que
F
é reutilizado paraFG
eFCK
com a mesma pontuação. Obrigado a @Dennis por isso !D
detectará TD e XD. EntãoT
, serão atribuídos 4 pontos em vez de 6 para compensar.A ordenação
PDFTS
, poupa alguns bytes quando definindo a matriz número que especifica os pontos:[1,2,3,4,2]
.Cada evento é detectado pela presença de uma das letras acima em maiúsculas ou minúsculas. A comparação é feita em três dimensões: comprimento da string de entrada ( N ) × número de equipes (2) × número de eventos de pontuação detectados (5). É feito uso extensivo da transmissão , que é a expansão automática de uma matriz ao longo de uma dimensão singleton para corresponder ao tamanho de uma matriz maior.
fonte
F
emFG
eFCK
deve salvar três bytes.CJam,
575554535049 bytesExperimente online!
Não tenho ideia do que é um Bronco, então aposto no Panthers.
Como funciona
fonte
:-g
nunca vi isso emoticon antesJavaScript (ES6), 128
130bytesEdite 2 bytes salvos aplicando a dica de @ Neil
TESTE
fonte
parseInt
é realmente inteligente! Usar a dica de @ Neill>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
para a saída economizará 2 bytes também.JavaScript (ES6),
165156151149 bytes9 bytes salvos graças a @ dev-null , 5 graças a @Não Charles e 2 graças a @Neil !
Explicação
fonte
/s|fck|../gi
emap(..),a>b
, em vez demap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl,
144140 + 2 = 142 bytesRequer a
-n
bandeira e-E
:Edit: Esqueceu de apoiar
to
,To
eTO
.fonte
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
é mais breve como%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. E" "
(na sua definição de$,
) é mais breve como$"
. Mas eu não testei nenhum deles.$"
e removerqw
nato To TO
matriz, obrigado!Lua,
231200 BytesFoi muito divertido, mesmo que eu realmente não conheça as regras do futebol americano (temos o Rugby aqui :)). Eu tive que testar muitas coisas para torná-lo o mais curto possível, acho que não há muitas coisas para melhorar, talvez não.
Edit: Eu sou um retardado total. A primeira solução em que trabalhei girou em torno do uso da expansão da matriz, depois a alterei e a matriz que continha as pontuações para a equipe em minúsculas e em maiúsculas não era mais útil. Removê-lo e usar variável simples gera belos -31 bytes.
Ungolfed e explicações
fonte
Python, 167 bytes
A excelente coruja já passou, mas como ainda não existe uma solução Python:
Funciona em Python 2 ou 3.
fonte