Vorstellung und Anerkennung
Angenommen, Sie sind ein Barkeeper. Sie haben meistens viele fröhliche Menschen in Ihrer Bar, aber viele trinken immer nur das gleiche Getränk und zu wenig für Ihren Geschmack, und das möchten Sie ändern. Sie führen also ein System ein, bei dem der Preis eines Getränks variabel ist, je nachdem, wie viele bereits verkauft wurden, jedoch niemals mehr oder weniger als bestimmte Schwellenwerte. Aus seltsamen Gründen vergessen Sie immer, alle verkauften Getränke und Preise im Auge zu behalten, und müssen sich daher einen kurzen (= einprägsamen!) Code überlegen, der die Berechnung für Sie in Anbetracht der konsumierten Getränkemenge durchführt.
Diese Herausforderung ist bereits in der Zwischenprüfung im Jahr 2012 im Rahmen des Kurses für funktionale Programmierung an meiner Uni aufgetreten, und ich habe die Berechtigung meines Professors, sie hier zu veröffentlichen. Wir haben eine Musterlösung in der Prüfungssprache erhalten.
Eingang
Ihre Eingabe wird eine Liste von Zeichenfolgen sein, die keine Leerzeichen enthalten - dies sind die Namen der verkauften Getränke. Verwenden Sie für die Eingabe Ihre bevorzugte, allgemein akzeptierte Eingabemethode.
Ausgabe
Ihre Ausgabe wird eine einzelne Zahl sein - dies ist das Einkommen, das Sie an diesem Abend generiert haben. Geben Sie die Ausgabe mit Ihrer bevorzugten, allgemein akzeptierten Ausgabemethode an.
Was ist zu tun?
Dies gilt für jedes Getränk einzeln:
- Der Einstiegspreis beträgt 10.
- Jedes Mal, wenn das Getränk gekauft wird, wird der Preis für den nächsten Käufer um 1 erhöht.
- Der Höchstpreis beträgt 50. Wenn das Getränk für 50 gekauft wurde, beträgt der neue Preis wieder 10.
Ihre Aufgabe ist es, das Gesamteinkommen zu ermitteln, das aus der eingegebenen Getränkeliste nach den oben genannten Regeln generiert wird.
Falls Sie sich fragen: "50 Dollar sind wirklich verdammt teuer für ein Getränk!", Das sind 50-Dezi-Dollar, also 50 * 0,1 * Einheiten, aber ich habe mich für 10-50 entschieden, um Sprachen nicht auszuschließen, ohne Gleitkomma-Arithmetik.
Wer gewinnt?
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes! Es gelten Standardregeln.
Mögliche Eckfälle
Wenn die Eingabeliste leer ist, muss die Ausgabe 0 sein.
Es kann nicht davon ausgegangen werden, dass die Eingabeliste nach Getränken sortiert ist.
Beispiele
[] -> 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