Introduzione e credito
Supponi di essere un barista. Ci sono molte persone felici nel tuo bar nella maggior parte dei casi, ma molti bevono sempre la stessa bevanda e troppo pochi per i tuoi gusti e vuoi cambiarlo. Quindi si introduce un sistema in cui il prezzo di una bevanda è variabile, a seconda di quante ne sono già state vendute, ma mai più o meno costose di determinate soglie. Per qualche strana ragione ti dimentichi sempre di tenere traccia di tutte le bevande e dei prezzi venduti e quindi devi pensare a un breve codice (= memorabile!) Che fa la matematica per te data la quantità di bevande consumate.
Questa sfida è già apparsa nell'esame di metà mandato nel 2012 al corso di programmazione funzionale presso la mia università e ho il mio professore che è d'accordo a pubblicarlo qui. Ci è stata fornita una soluzione di esempio nella lingua dell'esame.
Ingresso
Il tuo input sarà un elenco di stringhe che non contengono spazi: questi sono i nomi delle bevande vendute. Prendi l'input usando il tuo metodo di input preferito, generalmente accettato.
Produzione
Il tuo output sarà un singolo numero - questo è il reddito che hai generato stasera. Dai l'output usando il tuo metodo di output preferito, generalmente accettato.
Cosa fare?
Questo vale per ogni bevanda individualmente:
- Il prezzo di partenza è di 10.
- Ogni volta che la bevanda viene acquistata, il suo prezzo viene aumentato di 1 per l'acquirente successivo.
- Il prezzo massimo è 50. Se la bevanda è stata acquistata per 50, il nuovo prezzo sarà di nuovo 10.
Il tuo compito è quello di trovare il reddito complessivo, generato dalla lista di input di bevande date le regole di cui sopra.
Nel caso ti stia chiedendo: "50 dollari sono davvero dannatamente costosi per un drink!", Si tratta di 50 dollari decimi, quindi unità 50 * 0,1 *, ma ho optato per 10-50 per non escludere le lingue senza aritmetica in virgola mobile.
Chi vince?
Questo è code-golf , quindi vince il codice più corto in byte! Si applicano le regole standard.
Casi d'angolo potenziali
Se l'elenco di input è vuoto, l'output deve essere 0.
L'elenco di input non può essere ordinato per bevanda.
Esempi
[] -> 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