紹介とクレジット
あなたがバーテンダーだと仮定します。ほとんどの場合、バーには多くの幸せな人がいますが、多くの人は同じ飲み物を飲むだけで、あなたの好みには少なすぎて、それを変えたいと思っています。そこで、すでに販売された数に応じて飲み物の価格が可変であるシステムを導入しますが、特定のしきい値を超えることはありません。何らかの奇妙な理由で、販売されたすべての飲み物と価格の適切な追跡を常に忘れているため、消費された飲み物の量を計算するための短い(=記憶に残る)コードを考える必要があります。
この課題は、2012年に大学の関数型プログラミングコースで行われた中間試験にすでに現れており、教授にここに投稿しても大丈夫です。試験の言語でのソリューション例が提供されています。
入力
入力は、スペースを含まない文字列のリストになります-これらは販売された飲み物の名前です。一般的に受け入れられている好みの入力方法を使用して入力を行います。
出力
あなたの出力は単一の数字になります-これは今晩あなたが生み出した収入です。一般的に受け入れられている好みの出力方法を使用して出力を行います。
何をすべきか?
これは各飲み物に個別に適用されます:
- 開始価格は10です。
- 飲み物を購入するたびに、次の購入者の価格が1ずつ上がります。
- 最高価格は50です。飲み物が50で購入された場合、新しい価格は再び10になります。
あなたの仕事は、上記のルールが与えられた飲み物の入力リストによって生成された全体的な収入を見つけることです。
あなたが疑問に思っている場合:「50ドルは飲み物には本当に高価です!」、これは50デシのバックなので、50 * 0.1 *単位ですが、言語を除外しないために10-50に行くことを選択しました浮動小数点演算。
誰が勝ちますか?
これはcode-golfなので、バイト単位の最短コードが勝ちです!標準ルールが適用されます。
潜在的なコーナーケース
入力リストが空の場合、出力は0になります。
。入力リストは、飲み物でソートされるとは想定できません。
例
[] -> 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