Jestem bardzo leniwy, dlatego staram się zawsze programować kuchenkę mikrofalową przy jak najmniejszej liczbie naciśnięć przycisków . Moja kuchenka mikrofalowa ma następujące przyciski:
- Przycisk „minut plus”, który można nacisnąć tylko jako pierwszy i oznacza „start”. Można go naciskać wiele razy przez wiele minut, ale nie doda minuty do ręcznie wprowadzonego czasu. Wynik
+
- Zestaw przycisków 0–9. Wprowadzanie czasu to MMSS (tzn. „130” oznacza 1 minutę i 30 sekund). Sekundy mogą mieścić się w zakresie od 0..99. Zatem „130” i „90” są odpowiednikami. Oczywiście każda minuta wynosi 60 sekund, nawet jeśli sekundowa część wpisu przekracza 59. Wyjście
0
..9
- Przycisk „start”, który należy nacisnąć, aby uruchomić kuchenkę mikrofalową, jeśli czas zostanie wprowadzony ręcznie. Wynik
S
Moje paczki żywności określają czas w MM: SS, więc program musi zaakceptować te dane wejściowe.
Przykłady
- 1:00 jest
+
(pamiętaj, że „minuta plus” oznacza start) - 1:01 jest
61S
(sekundy mogą przekraczać 59, ale „minut plus” nie działa w połączeniu z cyframi - myślę, że to wada projektowa mojej kuchenki mikrofalowej) - 9:00 jest
900S
(krótszy niż+++++++++
)
code-challenge
optimization
Ben Jackson
źródło
źródło
400S
lub++++
?++++
wygrywa. :)888S
krótszy niż928S
, ale900S
krótszy niż860S
? Będę potrzebować dokładnej geometrii twoich przycisków i każdej z ich pozycji.Odpowiedzi:
APL
APL ma złą reputację, ponieważ jest nieczytelny, co zupełnie nie jest prawdą, jeśli nie jest golfem.
Zasady:
źródło
JavaScript
źródło
Perl
spełnia wymagania,
ale nie tak wpisuje się przyciski (np. „860S” vs. „900S”)obsługuje dokładnie 60 sekund w specjalnym przypadkuWynik
źródło
rubin
Uwagi:
ruby program-my-microwave-oven.rb
a test jednostkowy zostanie oceniony.ruby program-my-microwave-oven.rb 10:00
i pisze960S
Kilka uwag na temat zasad (i mojej interpretacji):
10:00
to960S
(9 minut i 60 sekund -> 10 minut).10:39
to999S
(9 minut i 99 sekund -> 10 minut i 39 sekund).4:00
woli++++
(mniej ruchów palcami)źródło