Utwórz zegar binarny BCD w ASCII. Zgodnie z domniemaniem wyświetla czas w sześciu kolumnach kropek:
(źródło: Wikimedia Commons )
Każda kolumna jest cyfrą kodowaną binarnie, odczytuje godziny, minuty i sekundy od lewej do prawej. Godziny podane są w formacie 24-godzinnym.
Czas na wyświetlenie jest odczytywany z wiersza poleceń lub ze standardowego wejścia (w zależności od tego, co bardziej pasuje). Jeśli pusty, zamiast tego należy użyć aktualnego czasu.
Rozmiar wyjściowy jest tutaj nieco ograniczony i możemy zmieścić tylko dwa wiersze tekstu. Musisz więc umieścić kropki tylko w dwóch liniach. Znaki .
, :
i '
się przydać tutaj.
Wejście
Czas wyświetlania w formacie ISO-8601, tzn. HH:MM:SS
Bez ułamków sekund. Obowiązkowy format 24-godzinny. Dane wejściowe mogą być puste, w którym to przypadku zostanie wykorzystany aktualny czas.
Wynik
Dwie linie z przedstawiają zegar binarny BCD, jak na powyższym obrazku. Każda linia ma dokładnie sześć znaków, a jedynymi dozwolonymi znakami są spacja, kropka, dwukropek i apostrof.
Zwycięzca
Wygrywa najkrótszy kod bajtowy. W remisie rozwiązanie, które jako pierwsze wygrywa.
Przykładowe dane wejściowe 1
(pusty)
Próbka wyjściowa 1
.
''. ::
Przykładowe wejście 2
17:59:20
Próbka wyjściowa 2
..'
.:..'
Przykładowe dane wejściowe 3
01:08:01
Próbka wyjściowa 3
'
. .
Rubin,
107 103 99 9490 znakówZauważ, że dane wejściowe nie powinny zawierać podziału linii, więc aby przetestować rozwiązanie, użyj czegoś takiego
echo -n "01:08:01" | ruby1.9 bcd.rb
.Aby przetestować domyślne zachowanie, uruchom je za pomocą
ruby1.9 bcd.rb
i wprowadź^D
(tj. Dosłowny EOF).źródło
Time.now.to_s[11,8]
.Windows PowerShell, 81
Ponieważ nie stworzyłem implementacji pisząc zadanie, od samego początku czuję, że mogę go zagrać w golfa :-)
Historia:
[Math]::Floor
jest za długie. Nienawidzę tego.:
pierwszej linii.58
zamiast:
automatycznego rzutowania również na liczby całkowite - nie trzeba już dołączać$_
cudzysłowów :-)-join
nie są już potrzebne.źródło
Rubin - 124 znaki
źródło
DO#
236 znaków
Czytelny:
źródło
- 48
kiedy to robisz% 4
, ponieważ48 % 4 == 0
c/4-12
jest krótszy niż(c-48)/4
... :)Golfscript (+ Ruby), 63
Nadal początkujący z Golfscript. Nie bij mnie.
źródło
""
wymusza na false, abyś mógł je usunąć,\
.Perl (84)
źródło
"\n$&"
na$/.$&
- powszechną sztuczkę Perl-golf :)Python 3, 136 znaków
źródło
wc -c
. Dobra robota. +1Python -
201172 znakówźródło
t=raw_input().replace(':','')
/if not t:t=strftime('%H%M%S')
- oszczędza ci 5 znaków :)Lua -
163160 znakówźródło
VBA (Excel),
150148132 bajtówUżywanie natychmiastowego okna i komórki
[A1]
jako danych wejściowych.źródło
If
instrukcję do[..]
notacji i używając niełamliwej spacji zamiast zwykłej spacji w instrukcji split (Alt + 255), a następnie dodając ciąg zamiast konkatenacji ciągu. Powinno to wyglądaća=Format([IF(A1,A1,NOW())],"hhmmss"):b=Split(" . ' :"):For c=1To Len(a):d=Mid(a,c,1):e=e+b(d\4):f=f+b(d Mod 4):Next:?e:?f
, gdzie pierwszą postacią w wyrażeniu podzielonym jest nieprzerwana przestrzeńsplit
funkcji. Ponownie nauczyłem się nowych rzeczy XD Nice! I dzięki! : DScala, 222:
źródło
VimScript, 143 znaki
źródło