Introdução e crédito
Suponha que você é um barman. Você tem muitas pessoas felizes em seu bar na maioria das vezes, mas muitas só bebem a mesma bebida e são poucas para o seu gosto e você quer mudar isso. Então, você introduz um sistema em que o preço de uma bebida é variável, dependendo de quantos já foram vendidos, mas nunca mais ou menos caro que certos limites. Por alguma estranha razão, você sempre se esquece de acompanhar adequadamente todas as bebidas e preços vendidos e, portanto, precisa pensar em um pequeno código (= memorável!) Que faz as contas para você, considerando a quantidade de bebidas consumidas.
Esse desafio já apareceu no exame intermediário de 2012, no curso de programação funcional da minha universidade, e eu tenho a aprovação do meu professor para publicá-lo aqui. Nos foi fornecida uma solução de exemplo no idioma do exame.
Entrada
Sua entrada será uma lista de cadeias que não contêm espaços - esses são os nomes das bebidas vendidas. Faça a entrada usando o seu método de entrada preferido, geralmente aceito.
Resultado
Sua saída será um número único - essa é a renda que você gerou esta noite. Forneça a saída usando seu método de saída preferido e geralmente aceito.
O que fazer?
Isso se aplica a cada bebida individualmente:
- O preço inicial é 10.
- Cada vez que a bebida é comprada, seu preço é aumentado em 1 para o próximo comprador.
- O preço máximo é 50. Se a bebida tiver sido comprada por 50, o novo preço será 10 novamente.
Sua tarefa é encontrar a renda geral, gerada pela lista de entrada de bebidas, de acordo com as regras acima.
Caso você esteja se perguntando: "50 dólares é realmente muito caro para uma bebida!", Isso é 50 dólares deci, então 50 * 0,1 * unidade, mas eu optei por 10-50 para não excluir idiomas sem aritmética de ponto flutuante.
Quem ganha?
Isso é código-golfe , então o código mais curto em bytes vence! Aplicam-se regras padrão.
Casos de canto em potencial
Se a lista de entrada estiver vazia, a saída será 0.
A lista de entrada não pode ser considerada como classificada por bebida.
Exemplos
[] -> 0
["A"] -> 10
["A","B"] -> 20
["A","A","B"] -> 31
["A","B","A"] -> 31
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1240
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D"] -> 1304
["D","A","A","C","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","C"] -> 1304
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1304