Como todos saben , agregar inator-3000
al final de cualquier sustantivo lo hace mucho más fresco. Pero, ¿qué más puede hacer que una palabra sea más genial?
Dada una cadena ASCII como entrada, genera la frescura de la palabra.
Calculando la frescura
Hay 4 elementos para calcular la frescura de una palabra.
- La palabra misma. El puntaje base es el número de letras mayúsculas multiplicado por 1000
- El número final Se agrega un número al final de la palabra (como burninator- 3000 ) a la puntuación base, pero si el número tiene más de 4 dígitos, son demasiado codiciosos y el número debe ignorarse.
- El conector Un espacio antes del número final agrega 1000, mientras que un guión agrega 2000, cualquier otro símbolo, o ningún símbolo, no tiene ningún efecto.
- El sufijo Si la palabra termina en
ator
, doble el puntaje final. Si termina eninator
, triplica el puntaje. Estos no distinguen entre mayúsculas y minúsculas.
Entonces, por ejemplo, Burninator-3000
se puede calcular de la siguiente manera:
1 Capital letter - Base Score: 1000
(1000(base) + 3000(number) + 2000(hyphen)) * 3(suffix) = 18000
Casos de prueba
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
Tanteo
Este es el código de golf , ¡por lo que gana menos bytes en cada idioma !
inator ator hello world-1000
(o similar)9028
y-7282
(solo dígitos)burninator 99999
3000 no 1000? El espacio suma 1000 y se triplicó por terminar en inator.Respuestas:
JavaScript (ES6),
138133128 bytes¿Cómo?
El número de letras mayúsculas viene dado por:
Todos los demás criterios se deducen del resultado de la siguiente expresión regular, que se divide en 4 variables:
Casos de prueba
Mostrar fragmento de código
fuente
Vanilla C, 447 bytes
(Envuelto para facilitar la lectura)
... o incluso ... ¡humor del viernes!
(No utilicé ninguna herramienta para alinear el código. En realidad, tengo mucha suerte de haber elegido los anchos de columna correctos sin ningún cálculo previo. ¡Y hasta se compila!)
Vanilla C, 789 bytes
Código original:
Después de la primera minimización:
Casos de prueba
fuente
C #,
322317 bytesPruébalo en línea!
Versión completa / formateada:
Dividir la expresión regular en su propio método ahora es 4 bytes más largo (a menos que me haya perdido algo) debido a que solo se me permite una lambda. Esto viene en 321 bytes:
fuente
b=c=>d=>c.Groups[d].Value
ahorraría un poco?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);
pero creo que eso hace que sea 3 bytes más.Perl, 108 bytes
Código de 107 bytes + 1 para
-p
.Pruébalo en línea!
fuente
PHP> = 7.1, 165 bytes
Casos de prueba
fuente