Wprowadzenie
Panele informacyjne są wszędzie. Gdy technologia stała się tańsza, papierowe plakaty zostały przekształcone w świecące znaki, które pokazują słowa, które pojawiają się z jednej strony i wychodzą z drugiej, tak jak to na rysunku:
Kiedy jeden z tych znaków zaczyna się, zwykle zaczyna się pusty, a tekst opuszcza się z prawej strony na lewą, przesuwając się, aż zniknie.
Jego funkcją jest włączanie i wyłączanie małych żarówek (LED), aby dać wrażenie ruchu.
Jeśli zamiast tekstu musimy tylko wyświetlać liczby, plakat może być znacznie mniej skomplikowany przy użyciu tak zwanych znaczników siedmiosegmentowych, takich jak:
W tym przypadku każda liczba jest reprezentowana przez kombinację wł. / Wył. Tylko 7 segmentów świetlnych, które pozwalają przedstawić wszystkie liczby:
Zadajemy sobie pytanie, ile zmian świateł (ile włączeń i wyłączeń) należy wykonać, aby przejść przez jeden z tych plakatów o określonej liczbie?
Na przykład, aby wyświetlić 123 w 3-cyfrowym znaku, który zaczyna się od wyłączenia wszystkich diod LED, będziemy mieli:
To łącznie 42 zmiany świateł.
Wyzwanie
Biorąc pod uwagę liczbę nieujemną i długość znaku dodatniego, oblicz liczbę zmian świateł.
Zasady
- Załóżmy, że dane wejściowe składają się z liczby nieujemnej (N> = 0) i długości znaku dodatniego (M> 0)
- Załóżmy, że długość znaku> = długość numeru (M> = cyfry (N))
Przypadki testowe
123, 3 => 42
45, 5 => 60
111, 3 => 12
98765, 10 => 220
0, 3 => 36
0,3 => 36
Odpowiedzi:
Python 2 ,
129126119104 bajtówWypróbuj online!
Dziękuję za duże 15 bajtów z ovs .
Jak określono, przyjmuje liczbę nieujemną i długość znaku dodatniego i zwraca sumę zmian.
źródło
'7367355777e0d93bf0fb'
\x7f
) pomiędzyp
i{
.Galaretka , 23 bajty
Dyadyczny link akceptujący liczbę całkowitą do wyświetlenia po lewej stronie i długość znaku po prawej stronie, która daje liczbę zmian (działa również, jeśli liczba cyfr w liczbie całkowitej do wyświetlenia jest większa niż długość znaku).
Wypróbuj online!
W jaki sposób?
Podczas całego pokazu każdy 7-segmentowy wyświetlacz (w pewnym momencie) przechodzi od pustej do pierwszej cyfry, następnie do drugiej i tak dalej, a na koniec od ostatniej do pustej. Każde z przejść kosztuje bitowy XOR segmentów z cyfr i na cyfry (gdzie puste to „cyfra” z 0 segmentami). Ukradłem segmenty jako liczby całkowite z poprzedniej wersji odpowiedzi ETHproductions , ale każda permutacja 7 segmentów byłaby równie dobra.
źródło
JavaScript (Node.js) ,
104949393 bajtyZaoszczędzono 1 bajt dzięki @Shaggy
Wypróbuj online!
źródło
0,3
powinienem dać36
; dajesz0
. (Miałem ten sam problem - naprawienie tego kosztowało mnie około 10 bajtów grrrr ... :)).Japt,
3130 bajtówZaadaptowano z roztworu galaretki Jonathana. Pobiera dane wejściowe w odwrotnej kolejności, a liczba jest wyświetlana jako tablica cyfr.
Spróbuj
źródło
Czysty , 280 bajtów
Wypróbuj online!
Musi być krótsza droga ...
źródło
Węgiel drzewny , 40 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Działa poprzez konwersję danych wejściowych na wartości segmentu binarnego, a następnie zliczenie liczby zmian między poszczególnymi znakami. Wyjaśnienie:
źródło
JavaScript (Node.js) , 88 bajtów
Pobiera dane wejściowe jako
(integer)(width)
.Wypróbuj online!
W jaki sposób?
Skomentował
źródło