Powiązane: Zaprogramuj moją kuchenkę mikrofalową i wygeneruj leniwe wartości .
Mój kolega jest tak leniwy, że nawet nie stara się poruszać palcem podczas programowania kuchenki mikrofalowej. (To jest rzeczywiście prawda!)
Pomóż mu znaleźć wejście mikrofalowe, które daje czas najbliższy temu, czego chce, ale gdzie wszystkie cyfry są takie same. Jeśli dwa wejścia powodują taką samą różnicę czasu w stosunku do żądanego czasu, wybierz jedno z mniejszą liczbą cyfr. Jeśli obie mają taką samą liczbę cyfr, wybierz mniejszą - aby nie musiał czekać tak długo.
Dane wejściowe to liczba całkowita, którą wprowadziłby perfekcjonista, np. 430
4 minuty i 30 sekund, 100
a 60
każda z nich to 1 minuta. Będzie większy niż 0 i nie przekroczy 9999.
Wyjście musi być liczbą całkowitą, np. 444
Wynosi 4 minuty i 44 sekundy oraz 55
55 sekund.
Zarówno wejście, jak i wyjście mogą odbywać się w ciągu zaledwie kilku sekund (bez minut), jeśli całkowity czas jest poniżej 1 minuty i 40 sekund.
To jest gra w golfa , więc twój kod musi być jak najkrótszy.
Przypadki testowe:
30 → 33
60 → 55
70 → 111
90 → 88
100 → 55
101 → 66
120 → 77
130 → 88
200 → 99
201 → 222
500 → 444
700 → 666
1000 → 888
1055 → 999
1056 → 1111
1090 → 1111
Odpowiedzi:
Galaretka, 26 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
JavaScript (ES6), 112 bajtów
Korzysta z funkcji pomocnika,
c
która oblicza pięciokrotność rzeczywistej liczby upływających sekund.źródło
Dyalog APL , 37 bajtów
⍳4
1 2 3 4 Tabela powtórzeń⎕D
„0123456789”∘./⍨
(jak tabliczka mnożenia, ale w której każda komórka zawiera B powtórzeń A zamiast A × B),
ułóż tabelę w listę ciągów,⍎¨
zamień każdy ciąg w liczbę (teraz mamy listę wszystkich możliwych wyników.){
…}
funkcja, w której argument jest reprezentowany przez⍵
⎕⍵
argument poprzedzony argumentem z monitem o wprowadzenie(
…)¨
stosuje się do każdego z dwóch (argument i lista) ...0 100∘⊤
konwertuj na base-10060⊥
konwertuj z base-60-/
oblicz różnicę między dwoma|
absolutami wartość⊃
lista wyciągów (ponieważ-/
zawarto w niej wynik)⍋
sort sort (nie sortuje, zwraca tylko kolejność umieszczania argumentów w celu osiągnięcia porządku rosnącego. Jeśli dwa elementy są równe, pozostają w bieżącej kolejności. Ponieważ nasza lista zawiera elementy o coraz większej długości, to dba o więzi.)⊃
pierwszy, tzn. ten z najmniejszą bezwzględną różnicą od danych wejściowych,⍵⊃⍨
bierze ten element z listy argumentów (listy możliwych wyników)Dzięki koledze, o którym mowa, za zgolenie jednego bajtu.
Uwaga: w momencie publikowania PO nie miałem żadnego rozwiązania.
źródło