Учитывая 7-сегментный дисплей с некоторыми сегментами, которые включены, а некоторые отключены, найдите последовательность цифр (0-9), чтобы после переключения соответствующих сегментов для каждой цифры все сегменты были выключены.
пример
_
_ [3] => | [1] => [OFF]
_ |
Числа и соответствующие им сегменты:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
правила
Codegolf ⊨ выигрывает самая короткая запись.
вход
Непустой список включенных сегментов, заданный как
Последовательность чисел. Сегменты нумеруются сверху вниз, слева направо; начиная с 0 или 1. Номера не обязательно должны быть в порядке.
Одна 7-битная цифра. MSB / LSB не указан (таким образом, вы можете выбрать).
Допускаются нечисловые символы между цифрами (но не обязательно).
Например. для номера 7
: 136
или 1010010
или0100101
Выход
Последовательность чисел, которые будут «применены» к дисплею. Не ограничивается никаким образом, например, порядком цифр. Например. для начального состояния , соответствующего количеству 1
, действительные выходы бы 1
, 111
,010
и т.д.
Альтернативным выходом является 10-битная цифра (опять же, MSB / LSB - ваш выбор). Например. в 1
качестве ввода, вывод будет 1000000000
или 0000000001
.
Некоторые комбинации имеют несколько неповторяющихся решений, например. сегменты, соответствующие заглавной букве, H
можно отключить 013
, но также 489
и0258
.
Если решения не существует (что я считаю невозможным), вывод будет пустым.
источник
301
дляH
).17
,08
, и1479
. Решения для верхних вертикальных сегментов, слева направо, есть39
и59
. Решения для нижних вертикальных сегментов, слева направо, есть56
и2389
.2
не всегда необходим, потому что вы можете заменить его либо либо0468
, либо ,1358
или1369
, в зависимости от того, хотите ли вы0
,8
или9
в своем ответе, но отменить это7
вообще невозможно , и я думаю, что у вас должен быть хотя бы один из1
и3
.Ответы:
Желе ,
2625 байтПопробуйте онлайн!
Принимает ввод как 7-битное целое число. Возвращает двоичную форму 10-разрядного целого числа.
Это просто грубая сила всех возможностей. Удалите,
Ḣ
чтобы получить все возможные выходы или замените его наX
чтобы получить случайные возможные выходные данные.Волшебная программа визуализации!
Как это устроено
источник
“wØ][:koR¶z‘
) может содержать ошибку. В вашем номере9
отсутствует нижний сегмент (сравните9
в своей визуализации тот, что в описании задачи). В остальном очень приятно, особенно визуализация!JavaScript (ES6), 60 байт
Это работает, потому что:
источник
JavaScript (ES6),
1171071018684 байтаСохранено 15 байт благодаря Нейлу
Принимает входные данные как 7-разрядное целое число, где младший бит является верхним сегментом. Возвращает 10-разрядное целое число, где младший бит является цифрой
0
.демонстрация
Показать фрагмент кода
источник
f=(n,k=1023)=>[83,0,57,73,10,71,87,1,91,75].reduce((n,v,i)=>n^=k>>i&1&&v+36,n)?k--&&f(n,k):k
. Или , если вы предполагаете , ответ существует, тоf=(n,k=0)=>[83,0,57,73,10,71,87,1,91,75].reduce((n,v,i)=>n^=k>>i&1&&v+36,n)?f(n,k+1):k
.1-7
, вы можете сохранить еще 8 байтов, удалив83
и, используя,91,75
иk+2
.Mathematica, 40 байт
(Это может быть лучше, если тщательно выбирать выход для каждого сегмента и переключаться между LSB и MSB.)
Возьмите ввод как список позиций например
{2,4,5,7}
и выведите 10-битное число (384
=0110000000
в двоичном виде) в порядке старших (0, ..., 9).В примере это соответствует
и вывод соответствует
{7,8}
.Объяснение:
Магические числа (жестко закодированный список) - это выходные данные, которые возвращаются для каждого сегмента. (закодировано в двоичном виде) И, если число появляется в списке дважды, эффект тот же, что и его не появляется, поэтому используется побитовый XOR. Нам просто нужно XOR вывод возможного значения включенных сегментов.
источник
Желе , 12 байт
Попробуйте онлайн!
Это не грубая сила, и это значительно короче, чем мое другое решение. Принимает входные данные в виде списка включенных сегментов и выводит, поскольку LSB является верхним сегментом.
Выводится как список движений цифр.
Как это устроено
Это будет быстро
источник
1*use digit 1 + 2*use digit 2 + 4*use digit 3 ... 64*use digit 7
, а затем XOR-уменьшает их @ ais523. Уплощение будет работать со списком используемых цифр, который занимает больше символов.