Giriş ve kredi
Bir barmen olduğunuzu varsayın. Çoğu zaman barınızda birçok mutlu insan var, ama birçoğu sadece aynı içeceği ve zevkinize göre çok az içiyor ve bunu değiştirmek istiyorsunuz. Yani, bir içeceğin fiyatının değiştiği, zaten kaçının satıldığına bağlı olarak, ancak belirli eşiklerden daha fazla veya daha az pahalı olmadığı bir sistem sunuyorsunuz. Bazı garip nedenlerden dolayı her zaman satılan tüm içecekleri ve fiyatları uygun şekilde takip etmeyi unutursunuz ve bu nedenle tüketilen içecek miktarı verildiğinde sizin için matematik yapan kısa (= unutulmaz!) Bir kod parçası düşünmeniz gerekir.
Bu zorluk 2012 yılında ara sınavımda üniversitemdeki fonksiyonel programlama kursunda ortaya çıktı ve profesörümün buraya göndermesini sağladım. Sınavın dilinde örnek bir çözüm sağladık.
Giriş
Girişiniz boşluk içermeyen dizelerin bir listesi olacaktır - bunlar satılan içeceklerin adlarıdır. Girişi, tercih ettiğiniz genel kabul görmüş giriş yöntemini kullanarak alın .
Çıktı
Çıktınız tek bir sayı olacaktır - bu akşam elde ettiğiniz gelir budur. Tercih ettiğiniz genel kabul görmüş çıktı yöntemini kullanarak çıktıyı verin .
Ne yapalım?
Bu her içecek için ayrı ayrı geçerlidir:
- Başlangıç fiyatı 10.
- İçki her satın alındığında, fiyatı bir sonraki alıcı için 1 oranında artırılır.
- En yüksek fiyat 50'dir. Eğer içki 50 için satın alınmışsa, yeni fiyat tekrar 10 olacaktır.
Göreviniz, yukarıdaki kurallara göre verilen içeceklerin giriş listesi tarafından üretilen toplam geliri bulmaktır.
Merak ediyorsanız: "50 dolar içki için gerçekten çok pahalı!" kayan noktalı aritmetik.
Kim kazanır?
Bu kod golf , bu yüzden bayt içindeki en kısa kod kazanır! Standart kurallar geçerlidir.
Potansiyel Köşe Kılıfları
Giriş listesi boşsa, çıkış 0 olacaktır
. Giriş listesinin içeceğe göre sıralandığı varsayılmaz.
Örnekler
[] -> 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