(Esta es mi primera pregunta de código de golf)
Cuando era niño, mi papá y yo inventamos un juego en el que la placa que vemos en los autos puede dar ciertos puntos basados en algunas reglas bastante simples:
La cantidad X de la misma letra o número da puntos X-1, ejemplos:
22 = 1 point
aa = 1 point
5555 = 3 points
Los números deben estar uno al lado del otro, por lo que 3353
solo da 1 punto, ya que el 5 rompe la secuencia de 3.
Una secuencia de números X en orden ascendente o descendente, con un mínimo de 3, da X puntos, ejemplos:
123 = 3 points
9753 = 4 points
147 = 3 points
El sistema de puntos solo funciona para números de 1 dígito, por lo 1919
que no da puntos, y 14710
solo da 3, (147).
Las secuencias se pueden combinar para hacer más puntos, ejemplos:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Sin embargo, no está permitido cortar una secuencia más grande en 2 secuencias más pequeñas para obtener puntos adicionales: 1234 = 123, 234 (6 points)
no está permitido.
Su tarea es, dada una secuencia, determinar la cantidad de puntos que otorga la placa.
En Dinamarca, las placas están estructuradas de la siguiente manera: CC II III, donde C es carácter y yo es entero, y por lo tanto, mis entradas de ejemplo reflejarán esta estructura. Si lo desea, puede hacer que la secuencia se adapte a su propia estructura o, si se siente realmente aventurero, deje que el programa analice la estructura de la placa y haga que funcione en cualquier tipo de placa en todo el mundo. Explique explícitamente la estructura que decide usar en su respuesta.
Puede tomar la entrada de la forma que desee, ya sea una cadena o una matriz parece tener más sentido para mí.
Entrada de prueba | salida:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
Debido a la naturaleza de elegir su propia estructura, o incluso cubrir todas las estructuras, no veo necesariamente cómo se puede determinar explícitamente un ganador. Supongo que el ganador serán los bytes más cortos en la estructura que uno haya decidido. (Y no tome una entrada como CICIC, solo para que sea más fácil para usted)
EDITAR:
Debido a los comentarios que piden, tengo algunas informaciones adicionales para compartir: una secuencia de números ascendentes o descendentes se refiere a una secuencia aritmética, por lo que X +/- a * 0, X +/- a * 1, ... X +/- a * n etc. Así que 3-5-7, por ejemplo, es 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. Sin embargo, la secuencia no necesita comenzar desde 0 ni terminar en 0.
MÁS EDITAR:
Puede dar la entrada de la forma que desee, no necesita ingresar espacios, guiones o cualquier otra cosa que haga que una placa sea más legible. Si puede guardar bytes solo aceptando letras mayúsculas o algo así, puede hacerlo también. El único requisito es que su programa pueda tomar una cadena / matriz / cualquier cosa que contenga tanto caracteres como números, y generar la cantidad correcta de puntos de acuerdo con las reglas establecidas.
XX 87 654
. Se me ocurrió algo que era correcto para todos sus casos de prueba, pero de alguna manera incorrecto para este ... Trabajando para solucionarlo.
CCIIIII
no haya espacios), o de lo contrario este problema carece de un criterio de ganancia objetivo, que requerimos por aquí. Tal como está, "(y no tome una entrada como CICIC, solo para que sea más fácil para usted)" es muy subjetivo. ¿Qué es y no es una estructura admisible?
IA99999
(contiene una secuencia decreciente de puntos de código, pero no números).