Вдохновленный этим вопросом , который далее вдохновил этот , написать программу , которая принимает два целых числа и складывает их уникальным способом, путем выполнения операции ИЛИ на сегментах , используемых для их отображения на дисплее 7-сегмента. Для справки, цифры представлены следующим образом:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
Обратите внимание, что 1 использует два сегмента справа, а не слева. Таким способом можно создать два специальных символа, которые не являются числами. Смотрите таблицу дополнений ниже:
| 0 1 2 3 4 5 6 7 8 9
--+--------------------
0 | 0 0 8 8 8 8 8 0 8 8
1 | 0 1 a 3 4 9 8 7 8 9
2 | 8 a 2 a 8 8 8 a 8 8
3 | 8 3 a 3 9 9 8 3 8 9
4 | 8 4 8 9 4 9 8 Q 8 9
5 | 8 9 8 9 9 5 6 9 8 9
6 | 8 8 8 8 8 6 6 8 8 8
7 | 0 7 a 3 Q 9 8 7 8 9
8 | 8 8 8 8 8 8 8 8 8 8
9 | 8 9 8 9 9 9 8 9 8 9
Полезные наблюдения:
- Любая цифра плюс сама по себе равна
- 8 плюс любая цифра равна 8
- 2 плюс 1, 3 или 7 равно букве «а» (должно быть в нижнем регистре)
- 4 плюс 7 равняется 'q' или 'Q', на ваш выбор
- Числа должны быть выровнены по правому краю, поэтому цифры следует добавлять справа налево. Если одно число имеет больше цифр, чем другое, дополнительные цифры в начале должны быть неизменными. Нет начальных 0, если только число не равно 0.
- Все числа будут 0 или больше. Вам не нужно обрабатывать знак «-». (Главным образом потому, что нет подходящей суммы на сумму «-» и «1» или «7».)
Ваша программа должна принимать 2 целых числа в любом формате, который вы выберете, и выводить строку, содержащую их «сумму» при расчете таким образом. Это код-гольф, поэтому ваша программа должна быть как можно меньше.
Примеры:
- Вход: 12345, 123. Выход: 12389
- Вход: 88888, 42. Выход: 88888
- Вход: 0, 23. Выход: 28
- Вход: 120, 240. Выход: a80
- Вход: 270, 42. Выход: 2Q8 (или 2Q8)
- Вход: 1234567890, 1234567890. Выход: 1234567890
Qбыть в нижнем регистре? Фактические формы , выглядит как , qа неQ
aне менее, он должен быть в нижнем регистре, так как Aвыглядит совершенно иначе.