Я думаю, що більшість людей тут знають, що таке 7-сегментний дисплей для цифр:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
Ми можемо визначити різницю в 7 сегментах (7SD) між двома цифрами, щоб це кількість сегментів, які потрібно переключити, щоб переключитися з однієї на іншу. Наприклад, 7SD між 1
і 2
дорівнює 5 (три горизонтальні сегменти та два нижні вертикальних сегменти потрібно змістити), а 7SD між 6 і 8 - 1 .
Крім того, ми можемо визначити 7SD між двома числами як суму 7SD між їх відповідними цифрами. Якщо одне число довше іншого, ми припускаємо, що вони вирівняні вправо, і додамо кількість сегментів, необхідних для відображення додаткових найбільш значущих цифр більшої кількості. Як приклад, розглянемо 7SD між 12345
та 549
:
x: 1 2 3 4 5
y: 5 4 9
7SD: 2+5+2+0+1 = 10
Ваше завдання - обчислити 7SD між n і n + 1 , заданими n .
Для зручності ось повна таблиця 7SD між окремими цифрами. Рядок _
представляє порожнє місце.
_ 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
Вхідні дані
- Введення - це одне додатне ціле число
n
. - Ви можете написати програму або функцію, взявши вхід через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції.
- Ви можете припустити, що вхід є щонайменше на одне менше, ніж найбільше число, яке може бути представлене стандартним цілим типом вашої мови, якщо цей тип підтримує принаймні значення до 127.
Вихідні дані
- Ви повинні надрукувати єдине ціле число, 7SD між
n
іn+1
. - Ви можете виводити через STDOUT (або найближчу альтернативу), значення повернення функції або аргумент функції (out).
Оцінка балів
Застосовуються стандартні правила коду-гольфу , найкоротший код (у байтах) виграє.
Випробування
З якоїсь незрозумілої причини ця послідовність ще не є в OEIS, хоча існує тісно пов'язана послідовність A123587 . Ось перші 100 номерів (починаючи з 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
Перший вхід, для якого 7SD більший, ніж 9, 1999
має давати 11. Ось кілька інших великих прикладів:
n 7SD
1999 11
12345 1
999999 14
5699999 15
8765210248 1