Sua tarefa é determinar se uma determinada sequência tem o tamanho adequado e pode ser representada com blocos Scrabble e, se houver, gerar a soma da pontuação de cada letra.
Se você não sabe jogar Scrabble:, você tem 100 peças com várias letras de A a Z impressas, além de dois curingas que podem representar qualquer letra. Cada letra tem um certo número de pontos e cada bloco (mas não necessariamente a palavra) pode ser usado apenas uma vez. Quando uma palavra é reproduzida, o valor do ponto de cada peça usada é somado, o que se torna a pontuação. Como há um número limitado de letras disponíveis, uma palavra só pode ter uma determinada letra quantas vezes essa letra tiver ladrilhos + quaisquer curingas não utilizados. O quadro Scrabble tem 15 × 15 células, portanto a palavra deve ter entre 2 e 15 caracteres.
Para obter uma lista da quantidade e pontuação de cada letra na versão em inglês, veja abaixo ou http://boardgames.about.com/od/scrabble/a/tile_distribute.htm ( arquivo morto ).
Pontos de quantidade de letra Pontos de quantidade de letra ------------------- ------------------- A 9 1 O 8 1 B 2 3 P 2 3 C 2 3 Q 1 10 D 4 2 R 6 1 E 12 1 S 4 1 F 2 4 T 6 1 G 3 2 U 4 1 H 2 4 V 2 4 I 9 1 W 2 4 J 1 8 X 1 8 K 1 5 Y 2 4 L 4 1 Z 1 10 M 2 3 [selvagem] 2 0 N 6 1
Regras adicionais
- O programa deve receber uma única sequência de entradas do STDIN ou similar.
- A entrada sempre conterá apenas letras maiúsculas.
- Se a string contiver mais cópias de uma letra do que caracteres curinga ou blocos não utilizados para essa letra OU o comprimento da string não estiver entre 2 e 15, inclusive, o programa deverá ser exibido
Invalid
. - Caso contrário, a pontuação deve ser somada com o uso dos dados do gráfico acima e da saída.
- Não use curingas, a menos que seja necessário.
- Não se preocupe com bônus como pontuação de palavras duplas ou se a string é uma palavra real.
- O programa deve produzir o resultado através de STDOUT ou similar.
- As brechas proibidas por padrão não são permitidas.
- Não é permitido o uso de uma fonte externa, como um site, bem como de bibliotecas, APIs, funções ou similares que calculem pontuações do Scrabble ou quantidades adequadas.
- Isso é código-golfe , e o menor número de bytes vence.
Passo a passo
Input: CODEGOLF
C -> 3, O -> 1, D -> 2, E -> 1, G -> 2, O -> 1, L -> 1, F -> 4
3 + 1 + 2 + 1 + 2 + 1 + 1 + 4 = 15
Output: 15
Casos de teste
Saída de entrada ------------------------ SCRABBLE 14 JAZZ 19 STACKEXCHANGE 32 XYWFHQYVZVJKHFW 81 PIZZAZZ Inválido KIXOKEJAJAX inválido MISUNDERSTANDING Inválido
-1
?
Invalid
.