Для двоичного числа A в качестве входных данных с d> 1 цифрой выведите двоичное число B с d цифрами в соответствии со следующими правилами для нахождения n-й цифры B:
Первая цифра B равна нулю, если первая и вторая цифры A равны; в противном случае это один.
Если 1 <n <d, то, если (n-1) -я, n-я и (n + 1) -я цифры A равны, то n-я цифра B равна нулю; в противном случае это один.
D-тая цифра B равна нулю, если (d-1) -я и D-я цифры A равны; в противном случае это один.
правила
Формат ввода / вывода строки / списка в порядке. Другой допустимый способ ввода / вывода - это целое число, за которым следует число предшествующих нулей (или после количества предшествующих нулей).
Сделайте ваш код как можно короче.
Тестовые случаи
00 -> 00
01 -> 11
11 -> 00
010111100111 -> 111100111100
1000 -> 1100
11111111 -> 00000000
01010101 -> 11111111
1100 -> 0110
1100 -> 0110
(первые 2 цифры выходных данных всегда идентичны во всех других тестовых случаях; то же самое для последних 2 цифр)Ответы:
Haskell,
595854 байтаПопробуйте онлайн!
Редактировать: @ Ørjan Йохансен сохранил 4 байта. Благодарность!
источник
"0110"!!(a+b+c)
сохраните байт.[last s]
можно переместить вscanr
начальное значение.Желе , 9 байт
Попробуйте онлайн!
Ввод / вывод в виде списка цифр.
Объяснение:
источник
.ị
- Получает элемент с индексом 0,5 . Поскольку floor (0.5) ≠ ceil (0.5) ,ị
возвращает элементы с индексами 0 и 1 . Jelly индексируется, поэтому 0 фактически захватывает последний элемент.Ṛ
переворачивает пару (потому что они возвращаются какlast, first
). Затемj
соединяет пару на входе иṡ3
разбивает ее на перекрывающиеся фрагменты длиной 3.E€
Проверяет (для каждого списка), равны ли все элементы, и¬
логически отрицает каждый.05AB1E , 6 байтов
Ввод / вывод в форме битовых массивов.
Попробуйте онлайн!
Как это работает
источник
05AB1E , 11 байт
Попробуйте онлайн! или как тестовый набор
объяснение
источник
Haskell ,
666159 байтПопробуйте онлайн! Ввод - это список нулей и единиц, вывод - строка. Пример использования:
g [0,1,0,1,1,1,1,0,0,1,1,1]
доходность"111100111100"
.Предыдущее 61-байтовое решение:
Попробуйте онлайн!
источник
J ,
2614 байтКредит на решение Emigna 05AB1E
Попробуйте онлайн!
Оригинальная попытка
Попробуйте онлайн!
источник
Python 3 , 58 байт
Попробуйте онлайн!
источник
Шелуха ,
1511 байтПринимает ввод в виде списка, попробуйте онлайн! Или попробуйте тот, который использует строки для ввода / вывода.
объяснение
источник
Желе , 8 байт
Ввод / вывод в форме битовых массивов.
Попробуйте онлайн!
Как это работает
источник
I0,0jI¬¬
JavaScript (ES6), 45 байт
Принимает ввод как массив символов. Возвращает массив целых чисел.
Контрольные примеры
Показать фрагмент кода
комментарии
источник
Mathematica, 56 байт
Попробуйте онлайн!
источник
Желе , 16 байт
Попробуйте онлайн!
Я собирался сыграть в гольф, но у Эрика уже есть более короткое решение, а игра в гольф просто приблизит мою к его. Я все еще играю в гольф, но я не буду обновляться, если я не смогу победить его или найти уникальную идею.
объяснение
источник
Perl 5 , 62 + 1 (
-n
) = 63 байтаПопробуйте онлайн!
источник
s;..$;
конструкция в конце изящна. Я должен запомнить это.Шелуха , 10 байт
Попробуйте онлайн!
Спасибо Згарбу за -1 байт.
источник
Ẋo±≠
сохраняет байт.Japt ,
141312 байтЧастично перенесен из раствора желе Денниса. Ввод и вывод - это массивы цифр.
Сохраненный байт благодаря ETHproductions.
Попытайся
объяснение
Неявный ввод массива
U
.ä-
получает дельты массива.pT
толкает 0 к концу массива.äaT
сначала добавляет еще 0 к началу массива, прежде чем получить абсолютные дельты.mg
сопоставляет элементы массива, возвращая знак каждого элемента как -1 для отрицательных чисел, 0 для 0 или 1 для положительных чисел.источник
.ø
в ответе 05AB1E. Я думаю, что это сделало бы это на 1 байт короче ...A.ä()
которого добавляется второй аргумент, вы можете добавить третий аргумент, который добавляется. Так что, в этом случае,pT äaT
может статьäaTT
экономия 2 байта.Python 3 , 54 байта
Ввод / вывод осуществляется в форме логических массивов.
Попробуйте онлайн!
источник
J, 32 байта
Как это работает:
Я пропустил некоторые @s и круглые скобки, которые просто гарантируют, что они хорошо сочетаются.
Пошаговый пример:
источник
Сетчатка , 35 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Пояснение: регулярное выражение начинается с сопоставления каждой входной цифры по очереди. Группа захвата пытается сопоставить другую цифру до или после рассматриваемой цифры. Затем
?
суффикс позволяет захватывать совпадения 0 или 1 раз;$#2
превращает это в выходную цифру.источник
Pyth , 15 байт
Попробуй это здесь!
В качестве альтернативы:
mtl{d.:s+hQeBQ3
,.aM._M.+++Z.+QZ
,Это добавляет первый элемент и добавляет последний элемент, затем получает все перекрывающиеся подстроки длины 3 и, наконец, получает количество различных элементов в каждом подсписке и уменьшает его. Этот беспорядок был сделан на мобильном телефоне в полночь, поэтому я не удивлюсь, если будут какие-то легкие игры в гольф.
источник
Gaia , 9 байт
Попробуйте онлайн!
объяснение
Gaia , 9 байт
Попробуйте онлайн!
источник
C , 309 байт
Не совсем подходит для игры в гольф, но, тем не менее, заслуживает ответа. Попробуйте это здесь !
объяснение
источник
APL + WIN, 29 байт
Запрашивает ввод с экрана в виде вектора цифр и выводит вектор цифр.
объяснение
источник
SNOBOL4 (CSNOBOL4) , 273 байта
Попробуйте онлайн!
источник
C (tcc) ,
646256 байтВвод / вывод в форме строк. Функция f изменяет свой аргумент s на месте.
Попробуйте онлайн!
источник
Common Lisp, 134 байта
Попробуйте онлайн!
источник