Przyrostowy format czasu gry
Cel
Gry przyrostowe często mają stoper odliczający dni, godziny, minuty i sekundy do zakończenia zadania. W zależności od dostępnego miejsca można je sformatować jako:
2d 13h
23h 59m 48s
14m
3h 0m 0s
Celem tego kodu golfa jest napisanie funkcji lub programu, który wykonuje to formatowanie.
Wejścia
- Łączna liczba sekund.
- Maksymalna liczba segmentów do wydrukowania.
Wynik
- Segmenty obejmują:
- 0 tygodni
- 0 dni
- 0 godzin
- 0 minut
- 0 sekund
- Każdy segment jest oddzielony pojedynczą spacją.
- Wyświetlane segmenty muszą być ciągłe. Na przykład nie będziesz wyświetlać godzin i sekund bez wyświetlania minut, nawet jeśli minut jest zero.
- Wartości jednocyfrowe nie mają zer wiodących, chociaż wartość zero musi być pokazana jako
0
. - Wartości są zaokrąglane w dół.
- Pierwszy wyświetlany segment to pierwsza wartość niezerowa.
Przypadki testowe
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Zwycięski
Rozwiązanie o najniższej liczbie bajtów w ciągu tygodnia zyska „akceptację”.
Edycje
- Wyjaśniono, który segment jest pierwszy, jak pokazano w przykładach.
- Dodano przypadek testowy 4 zgodnie z żądaniem.
307891 1
?0w
lub1w
.3d
? „Pierwszy wyświetlany segment to pierwsza wartość niezerowa”Odpowiedzi:
CJam (migawka),
4138 bajtówW powyższym zastosowano notację karetką, ponieważ dwóch znaków nie można wydrukować.
Dzięki @ Sp3000 za grę w golfa z 2 bajtów.
Testowanie
Najnowsza stabilna wersja (0.6.5) zawiera błąd, który może powodować
{}#
zwracanie liczb całkowitych zamiast długich. Całkiem paradoksalnie można to obejść, rzutując na liczbę całkowitą (i
).Aby uruchomić to z kodem za pomocą interpretera online, kliknij ten link bezpośredni lub skopiuj kod z tej pasty .
Możesz też pobrać i zbudować najnowszą migawkę, wykonując następujące polecenia:
Możesz utworzyć plik CJam w następujący sposób:
Jak to działa
źródło
Java,
197191 bajtówWłaśnie zauważyłem, że Java obsługuje deklarację podobną do
String a[]
. To pozwoliło mi wyciągnąć deklaracjęb
iz
do tej samej linii, co uratowało mnie odString
ponownego pisania .źródło
;z=" ")
- bardzo sprytny.C,
134127110104103 bajtówNowa wersja:
Poprzednia wersja:
źródło
Pyth,
3943 bajtówedycja: +4 znaki, bo zapomniałem
0s
przypadku testowego.Obejmuje to 2 znaki niedrukowalne. Uzyskaj aktualny kod i wypróbuj go online: Demonstracja
Wyjaśnienie:
źródło
Python 2.7 -
181178174 bajtówMoja pierwsza próba gry w golfa.
źródło
if n!=0
na justif n
.Julia, 158 bajtów
Jestem pewien, że może to być krótsze przy bardziej sprytnym podejściu, ale na razie to właśnie mam.
Tworzy to nienazwaną funkcję, która akceptuje dwie liczby całkowite jako dane wejściowe i zwraca ciąg znaków. Aby to nazwać, nadaj mu nazwę, np
f=(s,g)->...
.Niegolfowane + wyjaśnienie:
Przykłady:
źródło
Scala, 147 bajtów
źródło
rs , 367 bajtów
Demo na żywo i wszystkie przypadki testowe.
Niechlujny, niechlujny, niechlujny ...
Wykonanie przypadków testowych w Chrome na Androida zajmuje około 3-7 sekund. Czy nie używać trybu debugowania, które można zamrozić przeglądarkę w tym przypadku, ponieważ wszystkie wyjścia, które mają zostać wydrukowane.
źródło
DO#,
239 237 170164 bajtówNie jest to tak kompaktowe jak inne rozwiązania, ale nie mogę stawić czoła temu wyzwaniu, nie sami sobie tego zadając.
Ta najnowsza iteracja została zainspirowana odpowiedzią ESC .
Wcięte dla jasności:
źródło