Biorąc pod uwagę liczbę całkowitą od 0 do 141 (włącznie), wypisz wszystkie 24-godzinne czasy, których godzina, minuta i druga jednostka dodają do tej liczby całkowitej.
Zasady dodawania
Liczby są dodawane według ich jednostek czasu, a nie pojedynczych cyfr.
Na przykład weź 17:43:59
17 + 43 + 59 = 119
Pamiętaj, że to przykład dodawanych cyfr . W rzeczywistości wpisałeś 119, a 17:43:59 byłby jednym z wyników. Dane wyjściowe należy podać jako GG: MM: SS lub G: MM: SS.
Pamiętaj również, że najwyższa możliwa liczba to 141, czyli 23:59:59. To jest kod golfowy, więc wygrywa najmniejsza kwota. Próba i błąd są dozwolone, ale może być lepszy sposób na rozwiązanie tego problemu.
Edycja: Określ, gdzie w kodzie jest wartość wejściowa.
Odpowiedzi:
Galaretka ,
16302920 bajtówTeraz z poprawnym formatem wyjściowym! Ogromne podziękowania dla Dennisa za pomoc w debugowaniu tej odpowiedzi. Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Edycja: +14 bajtów przy użyciu poprawnego formatu wyjściowego. -1 bajt od usunięcia dodatkowej spacji. -3 od zmiany z
24,60,60
na“ð<<‘
. -6 bajtów od zmiany+100DḊ€€
nad⁵
.Wyjaśnienie
źródło
Bash, 71
Wypróbuj online .
źródło
printf
tu jest drogo. Przez corazt
bliżej odpowiednim formacie i mocowania go do makijażu((t-$1))
pracy, można je dostać w dół do 71:for t in {0..23}+{00..59}+{00..59};{((${t//+0/+}-$1))||echo ${t//+/:};}
Perl 6 ,
6256 bajtówWystarczy sprawdzić wszystkie możliwe kombinacje w iloczynie wszystkich godzin, minut i sekund.
źródło
Python 3 , 91 bajtów
Istnieją krótsze rozwiązania wykorzystujące
exec
(Python 2) lub rekurencyjny (Python 3), ale oba wymagają nieuzasadnionej ilości pamięci.Wypróbuj online!
źródło
PowerShell ,
8777 bajtówZaoszczędzono 10 bajtów dzięki Johnowi L. Bevanowi
Wypróbuj online! (upłynie limit czasu, jest bardzo wolny)
Wyjaśnienie
Całkiem proste, zaczynając od bieżącego
[datetime]
, dodaj 1 sekundę 86.399 razy, sformatuj jako ciąg, a następnie zachowaj tylko te, w których suma się sumuje.źródło
10000000
ze1e7l
aby zapisać 4 bajty ... albo nawet1e7
za dodatkową bajt (myślę, musiałem zaliczyćL
na korzyść parametru, ale podejrzewają swoich Avoids podejście potrzeba.1e7
przez co najmniej 30 minut i to byłL
postfiks, za którym tęskniłem; Zapomniałem o tym i nie mogłem znaleźć sposobu, aby uzyskać int, który byłby krótszy niż stała. Kto zdecydował, że to[timespan]
interpretuje[int]
jako kleszcze, a[double]
jak dni ? Teniex
kawałek jest całkiem genialny, choć sprawia, że cała ta sprawa jest wyjątkowo wolniejsza.iex
sztuczka została zaadaptowana z podpowiedzi tutaj: codegolf.stackexchange.com/a/746/6776Haskell, 77 bajtów
źródło
Haskell, 90 bajtów
Zwraca listę ciągów GG: MM: SS, np.
f 140
->["22:59:59","23:58:59","23:59:58"]
.To trzy proste pętle na godziny, minuty i sekundy. Zachowaj i sformatuj wszystkie wartości, w których suma jest liczbą wejściową
x
.źródło
Pyth - 30 bajtów
Zajmuje wszystkie możliwe czasy, a następnie filtry.
Pakiet testowy .
źródło
Julia 0,5 , 69 bajtów
Wypróbuj online!
źródło
Partia, 168 bajtów
Wyświetla jednocyfrowe godziny.
źródło
Mathematica, 79 bajtów
źródło
Oktawa,
83, 87 bajtówWypróbuj online!
źródło
QBIC ,
8272 bajtyUderza to w niefortunne miejsce w QBasic, a rzucanie na numer, przycinanie i przygotowywanie w
0
razie potrzeby jest naprawdę kosztowne.Przykładowe dane wyjściowe:
WyjaśnienieNapisałem o tym powieść:źródło
PowerShell , 67
79bajtów (nieprzyjemna wersja)Ponieważ zasady nie mówią nic o ukończeniu w określonym czasie (lub wcale), ani nic o duplikatach, oto przerażające rozwiązanie:
źródło
Rakieta 39 bajtów
Nie golfowany:
źródło
MATL , 29 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript,
122120 bajtówPobiera jeden dodatkowy pusty ciąg jako dane wejściowe,
który, jak zakładam, nie wlicza się do wielkości. Zaktualizowany bytecount (w tym historyczny), aby dodać dwa bajty do inicjalizacji ciągu.źródło
JavaScript (ES6), 110
Mniej golfa
Test
źródło
JavaScript, 96 bajtów
Widok rozszerzony:
Zapętlaj wszystkie możliwe czasy, zapętlając 86399 na 1,
Odejmij wszystkie 3 liczby od wartości wejściowej, aby zwrócić wartość falsey, jeśli trzy liczby sumują się do wartości wejściowej. Jeśli wartością jest falsey, wyślij wartość.
źródło
bash, 78 bajtów (przy użyciu narzędzia BSD) lub 79 bajtów (również innych niż BSD)
Jest to trochę dłużej niż dobre 71-bajtowe rozwiązanie bash @DigitalTrauma i @ hvd, ale podobał mi się pomysł użycia liczb w bazie 60; Jestem ciekawy, czy ktoś może trochę bardziej pograć w golfa.
Za pomocą narzędzia jot w standardzie BSD:
Dzięki bardziej powszechnie dostępnemu narzędziu Seq:
Chodzi o to, aby wygenerować liczby od 0 do 83699 i użyć dc do przekonwertowania ich na bazę 60. „Cyfry” na wyjściu dc base-60 to 2-cyfrowe liczby od 00 do 59, ze spacjami oddzielającymi „cyfry”, więc wyświetla wszystkie pożądane czasy od 00 00 00 do 23 59 59 w prawie wymaganym formacie.
Jeśli jednak dosłownie to wykonasz, liczby poniżej 60 ^ 2 nie są trzycyfrowymi liczbami w podstawie 60, więc brakuje początkowej 00 lub 00 00. Z tego powodu generuję liczby od 60 ^ 3 do 60 ^ 3 + 83699; zapewnia to, że wszystkie wygenerowane liczby mają dokładnie 4 cyfry długości w bazie 60. Jest to OK, o ile w końcu wyrzucę dodatkową pierwszą cyfrę (01), która nie jest potrzebna.
Tak więc po wygenerowaniu pożądanych czasów po prostu biorę każdy poczwórny od 01 00 00 00 do 01 23 59 59, dodam trzy ostatnie liczby i odejmuję argument $ 1. Jeśli to 0, biorę wszystko czterokrotnie od trzeciej postaci (wyrzucając „01”), używam tr, aby konwertować spacje na dwukropki i wydrukować wynik.
źródło
PowerShell , 91
97bajtów (w tym dane wejściowe)param($x)0..23|%{$h=$_;0..59|%{$m=$_;0..59|?{$h+$m+$_-eq$x}|%{"{0:0}:{1:00}:{2:00}"-f$h,$m,$_}}}
lub
param($x)0..23|%{$h=$_;0..59|?{($s=$x-$h-$_)-le59-and$s-ge0}|%{"{0:0}:{1:00}:{2:00}"-f$h,$_,$s}}
<\ s>Rozszerzony i skomentowany
Uwaga: wyprzedzona przez wersję @ Briantist: /codegolf//a/105163/6776
źródło