Introducción
En la tierra de [Inserte un nombre genial aquí], las personas no compran cosas con dinero, porque todos tienen una alergia severa al papel. ¡Se pagan con palabras! Pero como es eso? Bueno, le dan valores a cada letra:
a=1,b=2,c=3,etc.
(Con algunas otras reglas especiales que se describirán más adelante)
En este desafío, su tarea será calcular el valor de las oraciones.
Desafío
Tomarás una entrada que será una oración. Puede suponer que la entrada no tiene líneas nuevas ni espacios finales. El desafío será calcular el valor de la oración, usando estas reglas:
a=1,b=2,c=3,etc.
- Una letra mayúscula vale 1,5 veces su letra minúscula correspondiente
H=h*1.5
Entonces, la palabra
cab
Valdría la pena c+a+b = 3+1+2 = 6
Pero la palabra Cab
con mayúscula valdría la pena. (c*1.5)+a+b = 4.5+1+2 = 7.5
Por lo tanto, si la entrada de su programa fuera "Cab", su programa generaría 7.5
- Todos los caracteres no alfabéticos valen 1.
Este es el código de golf, por lo que la respuesta más corta en bytes gana. ¡Buena suerte!
7.0
lugar de7
?Respuestas:
Python 3,
716561 bytesPor una coincidencia extraordinaria,
(ord(s)-64)*1.5
es igual aord(s)*1.5-96
, por lo que solo tenemos que escribir-96
una vez. El resto es bastante sencillo.Editar: recorté algunos bytes usando travesuras de exponenciación.
fuente
Python 2,
120102 bytesEditar:
Primera presentación, no tan golfosa, pero uno tiene que comenzar en alguna parte.
fuente
for
en las comprensiones.e
un parámetro que devuelva el resultado.Pyth,
2320 bytesDemostración en vivo y casos de prueba.
Explicación
Algunos usos creativos de valores booleanos como enteros aquí.
Versión de 23 bytes:
Demostración en vivo y casos de prueba.
fuente
.
(todos los caracteres no alfabéticos deberían valer 1.)Julia, 63 bytes
Esto simplemente suma una matriz construida a través de una comprensión que recorre los caracteres en la cadena de entrada y realiza la aritmética en sus puntos de código.
Sin golf:
Gracias a Glen O por arreglar el enfoque.
fuente
Atascado ,
8543 BytesSí, sí, lo sé, Python es más corto ...: PEstoy usando la misma lógica que Tryth ahora, en su mayor parte.Explicación:
fuente
Python 2, 101 bytes
fuente
CJam, 30 bytes
Cómo funciona esto (¡guau, nunca he hecho uno de estos!):
fuente
F #, 168 bytes
Realmente aún no jugamos al golf, pero un comienzo:
Aquí una versión más legible:
fuente
K, 30
.
Cómo funciona:
.Q`a`A
genera dos listas de letras minúsculas y mayúsculas!:1+til 26
asigna cada letra en cada lista del 1 al 26Multiplica la primera lista por 1, la última por 1.5
Pase a un solo diccionario usando
,/
Asigna los caracteres de la cadena de entrada a las puntuaciones relevantes
Rellene cualquier valor nulo con 1
Suma
fuente
JavaScript, 121 bytes
llamar al archivo js con nodo (nodo index.js "Cab")
fuente
MATLAB, 68 bytes
Esto aprovecha el hecho de que los caracteres se convierten automáticamente en enteros y que los valores booleanos se pueden sumar como enteros.
fuente
Perl 5, 77 bytes
Probado en
v5.20.2
.fuente
Javascript (ES6),
85828067 bytesMe encantan los desafíos rápidos y fáciles como este. :)
Esto funciona interpretando cada carácter como un número base 36, multiplicándolo por 1 o 1.5 si es mayor que 9 (
a-z
oA-Z
), y dando 1 en su lugar si no. Como siempre, las sugerencias son bienvenidas!fuente
toString(36)
.toString(36)
aplica aquí. ¿Te refieres a algo asíparseInt(c,36)
? En realidad, eso podría ser más corto ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 bytesfuente
C # 81 bytes
Llamar con (LinqPad):
fuente
PHP, 102 bytes
Ejemplo de uso:
Nada especial en el algoritmo. Cada carácter del argumento del primer programa (
$argv[1]
) se comparaA
yZ
entoncesa
yz
y contó en consecuencia.fuente
PowerShell, 108 bytes
Decente competitivo, estoy un poco sorprendido. No está mal para no tener un operador ternario compacto.
Código:
Explicado:
fuente
C, 85 bytes
El
!!
antesislower
yisupper
son necesarios, porque no se garantiza que los valores booleanos devueltos por estas funciones sean0
y1
, ¡el verdadero valor estaba1024
en mi sistema!fuente
Candy ,
2622 bytes(~ "a" <{A # 64-2 / 3 * | A # 96-} h) Z¡Gracias a @ Tryth por el truco de factorización!
La invocación es con la bandera -I, como en
candy -I "Cab" -e $prg
El código en su forma larga es:
fuente
Prólogo (SWI), 101 bytes
Código:
Explicado:
Ejemplo:
fuente
PHP, 75 bytes
Ejecutar como tubería
-nr
o probarlo en línea .fuente