Ich denke, die meisten Leute hier wissen, was eine 7-Segment-Anzeige für Ziffern ist:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
Wir können die 7-Segment-Differenz (7SD) zwischen zwei Ziffern als die Anzahl der Segmente definieren, die umgeschaltet werden müssen, um von einem zum anderen zu wechseln. ZB die 7SD zwischen 1
und 2
ist 5 (die drei horizontalen Segmente und die unteren beiden vertikalen Segmente müssen umgeschaltet werden), und die 7SD zwischen 6 und 8 ist 1 .
Außerdem können wir die 7SD zwischen zwei Zahlen als die Summe der 7SDs zwischen den entsprechenden Ziffern definieren. Wenn eine Zahl länger als die andere ist, gehen wir davon aus, dass sie rechtsbündig sind, und fügen die Anzahl der Segmente hinzu, die erforderlich sind, um die zusätzlichen höchstwertigen Ziffern der größeren Zahl anzuzeigen. Betrachten Sie als Beispiel die 7SD zwischen 12345
und 549
:
x: 1 2 3 4 5
y: 5 4 9
7SD: 2+5+2+0+1 = 10
Ihre Aufgabe ist es, 7SD zwischen n und n + 1 bei n zu berechnen .
Der Einfachheit halber finden Sie hier die vollständige Tabelle der 7SDs zwischen den einzelnen Ziffern. Die Zeile steht _
für eine leere Position.
_ 0 1 2 3 4 5 6 7 8 9
_ 0 6 2 5 5 4 5 6 3 7 6
0 6 0 4 3 3 4 3 2 3 1 2
1 2 4 0 5 3 2 5 6 1 5 4
2 5 3 5 0 2 5 4 3 4 2 3
3 5 3 3 2 0 3 2 3 2 2 1
4 4 4 2 5 3 0 3 4 3 3 2
5 5 3 5 4 2 3 0 1 4 2 1
6 6 2 6 3 3 4 1 0 5 1 2
7 3 3 1 4 2 3 4 5 0 4 3
8 7 1 5 2 2 3 2 1 4 0 1
9 6 2 4 3 1 2 1 2 3 1 0
Eingang
- Die Eingabe ist eine einzelne positive Ganzzahl
n
. - Sie können ein Programm oder eine Funktion schreiben und Eingaben über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument vornehmen.
- Sie können davon ausgehen, dass die Eingabe höchstens eine Zahl kleiner ist als die größte Zahl, die durch den Standard-Integer-Typ Ihrer Sprache dargestellt werden kann, sofern dieser Typ mindestens Werte bis einschließlich 127 unterstützt.
Ausgabe
- Sie sollten eine einzelne Ganzzahl ausgeben, die 7SD zwischen
n
undn+1
. - Sie können über STDOUT (oder die nächstgelegene Alternative), einen Funktionsrückgabewert oder ein Funktionsargument (out) ausgeben.
Wertung
Es gelten die Standardregeln für Code-Golf . Der kürzeste Code (in Byte) gewinnt.
Testfälle
Aus irgendeinem unbekannten Grund ist diese Sequenz noch nicht in OEIS enthalten, obwohl es die eng verwandte Sequenz A123587 gibt . Hier sind die ersten 100 Zahlen (beginnend mit n = 1, 2, 3, ...
):
5, 2, 3, 3, 1, 5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1,
5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4,
5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1,
5, 4, 1, 6, 4, 5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 6, 4
Der erste Eingang, für den die 7SD größer als 9 ist 1999
, sollte 11 ergeben. Hier einige andere größere Beispiele:
n 7SD
1999 11
12345 1
999999 14
5699999 15
8765210248 1