Jesteś przykuty do krzesła. Pod tobą jest ogromny wulkan. 12-godzinny zegar obok ciebie tyka złowieszczo i widzisz, że ma druty prowadzące od tyłu do łańcucha, który zrzuci cię na środek ziemi. Taśma do zegara jest notatką:
Każda wskazówka zegara ma elektrodę. Kiedy obie wskazówki zegara są w tej samej pozycji, moc płynie i umierasz. To znaczy, chyba że możesz mi powiedzieć dokładny czas, że to nastąpi, do najbliższej minuty.
Masz komputer, który zna każdy język programowania. Musisz stworzyć najkrótszy (to jestgolf-golf, a standardowe luki są zabronione) program, który możesz, i powiedz złemu naukowcowi, która będzie godzina. Twój program powinien pobierać dane wejściowe (dowolną metodą), składające się z godziny i minuty. Powinien zwrócić następną godzinę i minutę (dowolną metodą), że tak się stanie.
Według strony OEIS jedenaście czasów nakładania się wynosi:
00:00:00 plus 0/11 s, 01:05:27 plus 3/11 s,
02:10:54 plus 6/11 s, 03:16:21 plus 9/11 s,
04:21:49 plus 1/11 s, 05:27:16 plus 4/11 s,
06:32:43 plus 7/11 s, 07:38:10 plus 10/11 s,
08:43:38 plus 2/11 s, 09:49:05 plus 5/11 s,
10:54:32 plus 8/11 s.
Następnym razem będzie 12:00:00. Sekundy i ich ułamkowe części nie są potrzebne do tego wyzwania. Po prostu zaokrąglij do najbliższej minuty.
Przypadki testowe:
0:00 (Or 12:00) > 1:05
1:00 > 1:05
11:56 > 12:00 (Or 0:00)
6:45 > 7:38
5:00 > 5:27
6:30 > 6:33 (round up)
Program może być funkcją lub pełnym programem. Nie obchodzi mnie, czy wybierzesz, 0:00
czy 12:00
i oba są dopuszczalne. Powodzenia!
Odpowiedzi:
JavaScript (Node.js) ,
5447 bajtów (zaokrąglić do najbliższego)-7 bajtów. Dzięki @ user202729
Wypróbuj online!
JavaScript (Node.js) ,
403344 bajty (zaokrągla w kierunku 0)-3 bajty dzięki @Arnauld
-4 bajty dzięki @Kevin Cruijssen
Wyjaśnienie
Uwaga dodatkowa: Jestem prawie pewien, że może to być golf dla kogoś o większej wiedzy z matematyki. Ledwo wiem, jak sumować i pomnażać
Wypróbuj online!
źródło
05:00
powinny zamiast tego generować dane05:27
wyjściowe05:25
, a zamiast tego06:45
powinny generować dane07:38
wyjściowe07:35
. Oto może przydatna sekwencja oeis: A17818111:56
wydaje się, że dane wyjściowe00:05
zamiast00:00
(lub12:00
).a=(a+=b>=a*5)%12
można to trochę skrócić, ale nie jestem w tym zbyt dobryMath.round(x)
tak0|x+.5
?J , 31 bajtów
Wypróbuj online!
Sposób na zaokrąglenie liczby w J polega na dodaniu
0.5
i zabraniu głosu (<.
). Zajmuje zbyt wiele bajtów ...Wyjaśnienie
12 60&#.
(konwersja mieszanej zasady) konwertuje z tablicy [godzina, minuta] na minutę minioną od 0:00.Zauważ, że od 0:00, co 12/11 godzin (czyli 720/11 minut), obie ręce nakładają się jeden raz.
Dlatego, biorąc pod uwagę wartość minuty, po prostu zaokrągl ją w górę do najbliższej wielokrotności 720/11 (różnej od siebie). Można to osiągnąć przez
*
11/720 (J ma literę wymierną11r720
), zabiera głos<.
, zwiększa>:
, a następnie pomnoża przez 720/11.Zauważ, że „pomnóż przez 11/720” i „pomnóż przez 720/11” to 2 działania odwrotne, a także „przelicz z [godziny, minuty] na liczbę minionych minut” i odwrotnie. Na szczęście J ma wbudowaną
&.
funkcję (under), która odwraca niektóre działania po zastosowaniu transformacji.Następnie wykonaj zaokrąglenie:
0.5
+
wtedy<.
.źródło
R , 68 bajtów
Wypróbuj online!
Wykorzystanie równania:
gdzie
index
0 dla pierwszej nakładającej się pozycji (00:00), 1 dla drugiej i tak dalej ...źródło
(a[...]...c(60,1))
6:30 > 6:33
.R , 88 bajtów
Wypróbuj online!
Zwiększ czas o jedną minutę. Sprawdza kąt. Jeśli nie jest wystarczająco blisko, pętle aż do znalezienia rozwiązania.
źródło
Python 3 ,
8078 bajtówTo moje pierwsze zgłoszenie, więc konstruktywna krytyka jest mile widziana :)
-2 bajty dzięki @Jo King
Wypróbuj online! (78)
Wypróbuj online! (80)źródło
Java 8,
8982 bajtówNaprawiony. Zobaczę, czy mogę później zagrać w golfa (prawdopodobnie przesyłając inną odpowiedź) ..
Wypróbuj online.
Wyjaśnienie:
DO ZROBIENIA
źródło
f.apply(56).apply(10)
dochody11 59
6:30 > 6:33
.Apl (Dyalog Unicode) , 28 bajtów
Wypróbuj online!
Wyjaśnienie
((⍳11),⍪0,+\∊5/⊂5 6)
to macierz czasów, w których dłonie zachodzą na siebie (wydrukowane na końcu łącza tio),(⍸⌷1⊖⊣)⎕
znajduje przedział, w którym dane wejściowe znajdują się w macierzy, i indeksy pod nimi zawijają się wokół.źródło
C # (.NET Core) , 70 bajtów
Wypróbuj online!
Myślę, że przechodzi wszystkie testy. Chociaż przypadek h = 11 jest trochę brzydki
Wyjaśnienie:
źródło
6:30 > 6:33
.JavaScript, 41 bajtów
Pokaż fragment kodu
źródło
Galaretka , 25 bajtów
Wypróbuj online!
Łącze monadyczne, które zajmuje czas jako listę dwóch liczb całkowitych i zwraca listę dwóch liczb całkowitych odpowiadającą następnemu dotknięciu rąk.
źródło
Perl 6 , 43 bajtów
Wypróbuj online!
Anonimowa cokolwiek lambda, która bierze dwie liczby całkowite reprezentujące godziny i minuty i zwraca godziny i minuty w odwrotnej kolejności. W tej chwili nie jest spójne, gdy wprowadzasz wyrównany czas, niezależnie od tego, czy wyświetla następny wyrównany czas, czy pozostaje na tym samym. Czekam na OP, aby odpowiedzieć na tę sprawę, ale teraz traktuję to jako niezdefiniowane.
Wyjaśnienie
źródło