Como todo mundo sabe , adicionar inator-3000
ao final de qualquer substantivo torna o caminho mais legal. Mas o que mais pode tornar uma palavra mais legal?
Dada uma string ASCII como entrada, produza a frescura da palavra.
Cálculo da frieza
Existem 4 elementos para calcular a frescura de uma palavra.
- A palavra em si. A pontuação base é o número de letras maiúsculas multiplicado por 1000
- O número final. Um número no final da palavra (como o burninator- 3000 ) é adicionado à pontuação base, mas se o número tiver mais de 4 dígitos, eles estarão gananciosos e o número deverá ser ignorado.
- O conector. Um espaço antes do número final adiciona 1000, enquanto um hífen adiciona 2000, qualquer outro símbolo ou nenhum símbolo não tem efeito.
- O sufixo. Se a palavra terminar
ator
, duplique a pontuação final. Se terminarinator
, triplique a pontuação. Estes não diferenciam maiúsculas de minúsculas.
Por exemplo, Burninator-3000
pode ser calculado da seguinte forma:
1 Capital letter - Base Score: 1000
(1000(base) + 3000(number) + 2000(hyphen)) * 3(suffix) = 18000
Casos de teste
Burninator-3000 -> 18000
Burnator3000 -> 8000
BurNinator 100 -> 9300
BuRnInAtOr-7253 -> 42759
burn -> 0
burn- -> 0
bUrn-1 -> 3001
inator-7 -> 6021
ator 56 -> 2112
burninators 1000 -> 2000
burn_1000 -> 1000
BURNINATOR-9999 -> 65997
burninator 99999 -> 3000
burninator_99999 -> 0
Code Golfinator-3000 -> 21000
inator ator hello world-1000 -> 3000
javaiscool_99999 -> 0
hypen-ated -> 0
1000 -> 1000
-1000 -> 3000
10000 -> 0
-10000 -> 2000
BURN1N470R-3000 -> 11000
Pontuação
Isso é código-golfe , e o menor número de bytes em cada idioma vence!
inator ator hello world-1000
(ou semelhante) #9028
e-7282
(somente dígitos)burninator 99999
de 3000 não 1000? O espaço adiciona 1000 e triplicou por terminar no inator.Respostas:
JavaScript (ES6),
138133128 bytesQuão?
O número de letras maiúsculas é dado por:
Todos os outros critérios são deduzidos do resultado da seguinte expressão regular, dividida em 4 variáveis:
Casos de teste
Mostrar snippet de código
fonte
Baunilha C, 447 bytes
(Embrulhado para facilitar a leitura)
... ou até ... sexta-feira!
(Não usei nenhuma ferramenta para aliar o código. Na verdade, tenho muita sorte de ter escolhido as larguras de coluna corretas, sem pré-cálculos. E até compila!)
Baunilha C, 789 bytes
Código original:
Após a 1ª minimização:
Casos de teste
fonte
C #,
322317 bytesExperimente online!
Versão completa / formatada:
Dividir a regex em seu próprio método agora é de 4 bytes mais (a menos que eu tenha perdido alguma coisa) devido à permissão de apenas um lambda. Isso vem em 321 bytes:
fonte
b=c=>d=>c.Groups[d].Value
economizaria um pouco?string m(string s,int n)=>Text.RegularExpressions.Regex.Match(s,"(.*?)([- ])?(\\d+)$").Groups[n].Value.ToLower();string t=m(s,1),c=m(s,2),n=m(s,3);
Mas acredito que, em seguida, torna 3 bytes a mais.Perl, 108 bytes
Código de 107 bytes + 1 para
-p
.Experimente online!
fonte
PHP> = 7.1, 165 bytes
Casos de teste
fonte