Intro
Die Informationstafeln sind überall. Als die Technologie billiger wurde, wurden die Papierplakate in leuchtende Zeichen umgewandelt, die Wörter zeigen, die auf der einen Seite erscheinen und auf der anderen herauskommen, wie das auf der Abbildung:
Wenn eines dieser Zeichen startet, beginnt es normalerweise leer und der Text wird von rechts nach links verschoben, bis er verschwindet.
Die Funktion besteht darin, die kleinen Glühbirnen (LEDs) ein- und auszuschalten, um ein Gefühl der Bewegung zu erzeugen.
Wenn wir anstelle von Text nur Zahlen anzeigen müssen, kann das Poster mit den so genannten Siebensegment-Markern wie den folgenden viel weniger raffiniert sein:
In diesem Fall wird jede Zahl durch die Kombination von nur 7 Lichtsegmenten dargestellt, mit denen alle Zahlen dargestellt werden können:
Die Frage, die wir uns stellen, ist, wie viele Lichtwechsel (wie viele an und aus) durchgeführt werden müssen, um eine bestimmte Anzahl dieser Plakate zu passieren.
Wenn Sie beispielsweise die 123 in einem dreistelligen Zeichen anzeigen möchten, bei dem alle LEDs ausgeschaltet sind, müssen Sie Folgendes tun:
Dies macht insgesamt 42 Lichtwechsel.
Herausforderung
Berechnen Sie bei einer nicht negativen Zahl und einer positiven Vorzeichenlänge die Anzahl der Lichtwechsel.
Regeln
- Angenommen, die Eingabe besteht aus einer nicht negativen Zahl (N> = 0) und einer positiven Vorzeichenlänge (M> 0).
- Angenommen, Zeichenlänge> = Zahlenlänge (M> = Ziffern (N))
Testfälle
123, 3 => 42
45, 5 => 60
111, 3 => 12
98765, 10 => 220
0, 3 => 36
0,3 => 36
Antworten:
Python 2 ,
129126119104 BytesProbieren Sie es online!
Thx für große 15 Bytes von ovs .
Nimmt wie angegeben eine nicht negative Zahl und eine positive Vorzeichenlänge und gibt die gesamten Änderungen zurück.
quelle
'7367355777e0d93bf0fb'
\x7f
) zwischenp
und{
.Jelly , 23 Bytes
Eine dyadische Verknüpfung, die die links anzuzeigende Ganzzahl und die rechts angezeigte Vorzeichenlänge akzeptiert und die Anzahl der Änderungen angibt (funktioniert auch, wenn die Anzahl der Stellen in der anzuzeigenden Ganzzahl größer als die Vorzeichenlänge ist).
Probieren Sie es online!
Wie?
Während der gesamten Show wechselt jede 7-Segment-Anzeige (zu einem bestimmten Zeitpunkt) von leer zu der ersten Ziffer, dann zu der zweiten usw. und schließlich von der letzten zu wieder leer. Die Übergänge kosten jeweils das bitweise XOR der Ein-Segmente der Von-Ziffer und Zu-Ziffer (wobei leer eine "Ziffer" mit 0 Ein-Segmenten ist). Ich habe die on-Segmente als ganze Zahlen aus einer früheren Revision der Antwort von ETHproductions gestohlen , aber jede Permutation der 7 Segmente würde genauso gut funktionieren.
quelle
JavaScript (Node.js) ,
104949393 Byte1 Byte dank @Shaggy gespeichert
Probieren Sie es online!
quelle
0,3
sollte geben36
; Sie geben0
. (Ich hatte das gleiche Problem - die Behebung dieses Problems kostete mich ungefähr 10 Bytes Grrrr ... :)).Japt,
3130 BytesAngepasst an Jonathans Jelly-Lösung. Nimmt die Eingabe in umgekehrter Reihenfolge vor, wobei die Zahl als Ziffernfeld angezeigt wird.
Versuch es
quelle
Sauber , 280 Bytes
Probieren Sie es online!
Es muss einen kürzeren Weg geben.
quelle
Kohle , 40 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Wandelt die Eingabe in binäre Segmentwerte um und zählt dann die Anzahl der Änderungen zwischen den einzelnen Zeichen. Erläuterung:
quelle
JavaScript (Node.js) , 88 Byte
Übernimmt die Eingabe als
(integer)(width)
.Probieren Sie es online!
Wie?
Eine Liste gegeben{ d1,d2, … , Dn} von n Ziffern und eine Anzeigebreite w , Die gesamte Anzahl N von Lichtänderungen ist gegeben durch:
WoTx , y ist die Anzahl der Lichtänderungen für einen Übergang von der Ziffer x zu digitalisieren y und T′x ist die Anzahl der Lichtwechsel für einen Übergang von einer leeren Ziffer zur nächsten x (oder umgekehrt).
Kommentiert
quelle