Piszesz program automatycznej kasy fiskalnej. Użytkownik potrzebuje zmiany przy najmniejszej liczbie użytych monet. Napisz program, który pobiera kwotę (powiedzmy 1,53 USD) i daje zmianę nominałów w USA - w tym przypadku: 1 x banknot jednodolarowy, 1 x pięćdziesiąt centów i 3 x jeden cent. Zwycięzcą będzie najkrótszy program. Punkty bonusowe za obsługę innych walut (tj. Denominacji w Wielkiej Brytanii) i walut nietypowych (1, 2, 3 centy?)
Masz następujące nominały w USA: 1 cent, 5 centów, 10 centów, 25 centów, 50 centów, 1 dolar (banknot lub moneta), 2 dolary, 5 dolarów, 10 dolarów.
Masz następujące nominały w Wielkiej Brytanii: 1 pens, 2 pensy, 5 pensów, 10 pensów, 20 pensów, 50 pensów, 1 GBP, 2 GBP, 5 GBP (banknoty lub monety), 10 GBP.
Odpowiedzi:
Windows PowerShell, 108
111117Pierwsza próba, jak dotąd niefundowana:
Uwagi dotyczące wdrożenia:
Jeśli 3 i 4 nie muszą być spełnione (czyli ja kontrolować format wejściowy ;-)), to następujące jest wystarczająca programowe (71):
źródło
Mathematica: 110 znaków
Stosowanie
Lub
(6 znaków więcej) daje
W przypadku innych nominałów wystarczy zmienić tabelę racjonalną {10, ...., 5 / 100,1 / 100}
źródło
D: 225 znaków
Bardziej czytelnie:
Obsługuje tylko waluty amerykańskie. Przyjmuje wartość jako wartość zmiennoprzecinkową w wierszu poleceń (musi mieć początkowe 0 dla wartości poniżej 1 dolara). Nie przyjmuje $ jako części wartości. Wyświetla liczbę każdego rodzaju banknotu / monety w osobnej linii. Np. Wkład 1,53 powoduje:
0 20
0 10
0 5
1 1
2 25/100
0 10/100
0 5/100
3 1/100
źródło
Mathematica, 51 bajtów
Wejście
wynik
Mathematica, 82 bajty - BONUS WITH--
Wejście
wynik
źródło
JavaScript,
8483 bajtyUżywa chciwego algorytmu.
źródło
APL (Dyalog) , 19 bajtów
Monituje o żądaną kwotę, a następnie o nominały wyrażone w najmniejszej jednostce (grosze / centy).
Wypróbuj online!
⎕CY'dfns'
C O p r roboczydfns
⎕ stamps⎕
poprosić o wejściach i używać jako argumentów do tejstamps
funkcjiźródło