(Esta é minha primeira pergunta sobre código de golfe)
Quando eu era criança, meu pai e eu inventamos um jogo em que a placa que vemos nos carros pode dar certos pontos com base em algumas regras bastante simples:
A quantidade X da mesma letra ou número fornece pontos X-1, exemplos:
22 = 1 point
aa = 1 point
5555 = 3 points
Os números devem estar próximos um do outro, portanto, 3353fornece apenas 1 ponto, pois o 5 quebra a sequência dos 3's.
Uma sequência de números X em ordem crescente ou decrescente, no mínimo 3, fornece X pontos, exemplos:
123 = 3 points
9753 = 4 points
147 = 3 points
O sistema de pontos funciona apenas para números de 1 dígito, portanto 1919 , não fornece pontos e 14710apenas 3, (147).
As sequências podem ser combinadas para dar mais pontos, exemplos:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
No entanto, você não pode dividir uma sequência maior em duas sequências menores para obter pontos extras: 1234 = 123, 234 (6 points) não é permitido.
Sua tarefa é, dada uma sequência, determinar o número de pontos que a placa dá.
Na Dinamarca, as placas de carro estão estruturadas da seguinte forma: CC II III, onde C é caractere e I é inteiro, e, portanto, meus exemplos de entradas refletirão essa estrutura. Se desejar, você pode fazer com que a sequência se ajuste à sua própria estrutura ou, se você se sentir realmente aventureiro, deixe o programa analisar a estrutura da placa e, assim, fazer com que ela funcione em qualquer tipo de placa no mundo. Declare explicitamente a estrutura que você decide usar em sua resposta.
Você pode receber a entrada da maneira que quiser, seja uma string ou uma matriz que pareça fazer mais sentido para mim.
Entrada de teste | saída:
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
Devido à natureza de escolher sua própria estrutura, ou mesmo cobrir todas as estruturas, não vejo necessariamente como um vencedor pode ser explicitamente determinado. Suponho que o vencedor terá os bytes mais curtos da estrutura que você decidiu. (E não aceite uma entrada como o CICIC, apenas para facilitar as coisas)
EDITAR:
Devido aos comentários solicitados, tenho algumas informações extras para compartilhar: Uma sequência de números ascendentes ou descendentes se refere a uma sequência aritmética, então X +/- a * 0, X +/- a * 1, ... X +/- a * n etc. Então 3-5-7, por exemplo, é 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. A sequência, no entanto, não precisa começar de 0 nem terminar em 0
MAIS EDIÇÃO:
Você pode fornecer a entrada da maneira que desejar, não precisa inserir espaços, traços ou qualquer outra coisa que torne a placa mais legível. Se você pode salvar bytes aceitando apenas letras maiúsculas ou algo parecido, faça isso também. O único requisito é que seu programa possa pegar uma string / array / qualquer coisa que contenha caracteres e números e gerar a quantidade correta de pontos de acordo com as regras estabelecidas.
XX 87 654. Eu vim com algo que estava correto para todos os seus casos de teste, mas de alguma forma incorreto para este .. Trabalhando para corrigi-lo.
CCIIIII, não há espaços), ou então esse problema não possui um critério de vitória objetivo, exigido por aqui. No estado em que se encontra, ((e não faça comentários como o CICIC, apenas para facilitar as coisas)) é muito subjetivo. O que é e não é uma estrutura admissível?
IA99999(contém uma sequência decrescente de pontos de código, mas não números).