вход
- Список от 1 до 255 натуральных чисел (включительно), каждое в диапазоне от 1 до 2 32 - 1 (включительно).
- Ваш входной формат не должен быть идентичен тестовым примерам.
- Ввод без начальных нулей должен быть принят.
- Ввод с ведущими нулями не требуется принимать.
- Вы можете использовать любой желаемый разделитель между целыми числами.
- Целое число может быть представлено строкой, но отдельные цифры конкретного целого числа должны быть смежными.
- Вы можете использовать любую базу для ввода (включая двоичную и унарную), при условии, что выходные данные также находятся в этой базе.
Выход
- Одно целое число
- Выход не должен иметь начальных нулей.
- Выход должен быть в той же базе, что и вход.
- Выходные данные могут быть рассчитаны любым способом, который вы хотите, но должны соответствовать результату следующего вычисления:
Расчет биплекса
- Биты двоичного представления нумеруются справа, начиная с нуля, поэтому бит i находится в столбце, представляющем 2 i .
- Я й bitsum это сумма я й бит двоичных представлений каждого из входных чисел.
- Bitsum максимум является самым высоким значением , принимаемым по bitsums.
- Минимальная bitsum является самой низкой ненулевой величиной , принимаемой в bitsums.
- Я й разряд двоичного представления продукции является:
- 1, если i- я битная сумма равна максимуму битовой суммы или минимуму битовой суммы.
- 0 иначе
Работал пример
Этот пример использует двоичный файл для ввода и вывода.
Input: 100110
1101110
1100101
_______
Bitsums: 2301321
Output: 101101
Максимальное количество битов равно 3, а минимальное значение битов равно 1, поэтому выход имеет 1, где битовая сумма равна 3 или 1, а 0 - везде.
Контрольные примеры
Тестовые случаи в форме:
Input => Output
Тестовые случаи в двоичном виде:
[1] => 1
[10] => 10
[1, 10, 101] => 111
[11111111111111111111111111111111] => 11111111111111111111111111111111
[10010010010010010010010010010010, 10101010101010101010101010101010, 11011011011011011011011011011011] => 11100011100011100011100011100011
[10001011100010100110100101001001, 10110000111110010000111110111010, 1101110001101101011010010100101, 1010101010001011101001001010101] => 11
Те же тесты в десятичном формате:
[1] => 1
[2] => 2
[1, 2, 5] => 7
[4294967295] => 4294967295
[2454267026, 2863311530, 3681400539] => 3817748707
[2341103945, 2969112506, 1849078949, 1430639189] => 3
Leaderboard
Благодаря фрагменту таблицы лидеров Мартина
Оператор получил название biplex, сокращение от экстремумов бинарной плоскости, после обсуждения в чате .
code-golf
base-conversion
binary
Trichoplax
источник
источник
You may choose to use any base for input and output (including binary and unary), provided they are both in the same base
. Так что да, пойти на это :)Ответы:
Желе неконкурентоспособное
14 байт. Этот ответ не является конкурирующим, поскольку задача предшествует созданию желе.
Попробуйте онлайн!
Как это работает
источник
Pyth,
2625 байтПопробуйте онлайн: демонстрация или тестовый набор
объяснение
источник
_B
Использование является блестящимJ,
3130242321 байтЭто молчаливый монадический глагол, который принимает список десятичных целых чисел и возвращает их десятичный биплекс.
Спасибо @Zgarb за его предложения, которые сэкономили 4 байта напрямую и проложили путь для еще 2!
Спасибо @randomra за добавление в игру еще 2 байтов!
Контрольные примеры
Как это работает
источник
Минколанг 0,10 ,
10979 байтВвод и вывод в десятичном виде. Попробуй это здесь.
объяснение
Старая версия:
Попробуй это здесь!
объяснение
Суть в том, что особенность массива интенсивно используется (
a A
) для хранения битовых сумм, из которых найдены минимальная и максимальная, затем соответственно выводятся1
s и0
s с выводом ведущих0
s в двух местах.источник
Brainfuck , 619 байтов
Первый ответ слишком долго здесь, так что я решил сделать хороший ответ!
Разве ... я победил?
Эта программа ожидает новые строки (ASCII
10
) после каждого двоичного числа и требует пробела (ASCII32
) в конце.Тестовые прогоны:
(Новые строки добавляются после каждого случая с
++++++++++.
добавлением в конце программы)объяснение
Все еще в стадии разработки, но медленно. Из-за нехватки времени я просто скопировал сделанные мной заметки во время написания этой программы, чего пока хватит для пояснения:
источник
CJam, 27 байт
Принимает входные данные в виде списка CJam-base-10. Проверьте это здесь. В качестве альтернативы, запустите все контрольные примеры (сценарий отбрасывает ожидаемый результат и при необходимости преобразует формат ввода).
объяснение
источник
1
данными должно быть число, двоичное представление которого имеет s в тех битах, которые соответствуют битовым плоскостям, где произошли минимумы и максимумы.JavaScript (ES6),
215185176 байтиспользование
объяснение
источник
f=(a)=>{}
=f=a=>{}
2) Вы можете превратить вашиfor...in
циклы вfor...of
циклы, сохранив несколько байтов:for(i in a)for(b=a[i]...
=for(i of a)for(b=i...
,for(i in s)r=s[i],d=...
=for(r of s)d=...
3) Побитовое ИЛИ|
автоматически меняет true на 1 и false на 0, такo+=r==q|r==d?1:0;
же как иo+=r==q|r==d;
.return parseInt(o,2)
до:return+('0b'+o)
s[l-d-1]=(s[l-d-1]|0)
наs[T=l-d-1]=(s[T]|0)
. Чтобы побрить больше 2, заменитьb=i.toString(2),l=b.length,d=l
наd=l=(b=i.toString(2)).length
.Юлия, 141 байт
Ungolfed:
источник
Simplex v.0.7 , 38 байт
Упрощенные комментарии. Ввод в двоичном виде, переводчик в данный момент не работает. Надеюсь, комментариев достаточно.
источник
Октава, 50 байт
Пример:
источник
@(a)
определяет анонимную функцию, которая принимает входной векторa
.[""
заставляет вывод в строку (я полагаю).(b=sum(a-48))
определяетb
как вектор, содержащий битовые суммы.b==max(b)
будет вектором, имеющим1
в данном месте, если битовая сумма максимальна, и0
иначе.b(b>0)
является вектором каждого элементаb
больше чем0
,b==min(b(b>0))
также вектор, содержащий,1
когда битовая сумма является минимальной, и0
иначе. Тогда это будет OR вместе и+48
для ASCII.function o=b(i)
(новуюr=sum(i>48);o=['' (r==max(r)|r==min(r))+48];
JavaScript (ES6), 158
Функция с параметром числового массива, возвращающая число. С таким же количеством байтов он может получить параметр массива строк (содержащий базовые представления 2) и вернуть строку базовых 2 - просто переместите
.toString(2)
в конце послеr
.источник
Хаскелл,
198182178161 персонажЯ все еще новичок в игре в гольф. Только 80 репутации приходит от ответа.
Как это работает.
Вместо заполнения я переворачиваю массив, затем добавляю, используя пользовательский (&). Я не использую foldl1 (zipWith (+)), который короче, потому что zipWith удалит лишний элемент. Затем я нахожу максимальный и ненулевой минимум, что также требует определенной пользователем функции. Затем я сопоставляю элемент с максимальным и ненулевым минимумом, 1, если совпадает, 0, если он не совпадает. Затем мы обращаемся и превращаем его в двоичное число.
СДЕЛАТЬ:
Data.List
источник
k
,c
используется только один раз, поэтому нет необходимости ставить его вwhere
предложении. С его помощью можно непосредственно:...||(x==a#b)...
. Почему фигурные скобки? Вl
:concat.map show
естьconcatMap show
или еще лучше>>=
:l=(>>=show).v...
. (Примечание: есть также то,=<<
что делает то же самое, но с аргументами flipped:)(show=<<).v...
.>>=
и=<<
работать здесь в контексте списка и делать разные вещи в функциональном или другом контексте.[]
в последних случаях&
и#
на_
:b&_=b
и_#l=l
.(x==b)||(x==c)
(или(x==b)||(x==a#b)
когда вы удалитеc
) может быть заменено наelem x[b,c]
(соответственно:)elem x[b,a#b]
.u=maximum
иk a=m(\x->fromEnum$elem x[u a,a#u a])a
должен работать._&a=a
, он должен остаться[]&a=a
, иначе первый список будет потерян, если второй пуст. Используйте_
только в последнем случае - возможно, это ваша ошибка.Python 3,
181126122 байта(Я убрал большую часть косых черт, потому что это становилось немного нелепым.) Благодаря Sp3000 !
Немного меньше в гольф:
Ввод ожидается в двоичном виде с пробелами, разделяющими числа. Вывод также в двоичном виде.
источник
Javascript,
154150 байтСпасибо за метод edc65 для расчета min / max, он сократил мой код на 4 байта.
объяснение
источник
f=i=>(m=0,r=[],i.map(n=>{for(k=32;k--;n=n/2|0)r[k]=~~r[k]+n%2}),r.map(n=>m+=m+(n==Math.min(...r.filter(x=>x))|n==Math.max(...r))),m)
ShapeScript , 186 байт
Важный, бесполезный язык для важного, бесполезного оператора.
Ввод / вывод в двоичном формате. Программа ожидает каждого числа в отдельной строке, каждая из которых заканчивается переводом строки.
Попробуйте онлайн!
Контрольные примеры
источник
APL, 27 байт
Это монадическая функция, которая принимает список десятичных целых чисел и возвращает их десятичный биплекс.
Попробуйте онлайн в демоверсии ngn / apl .
Как это работает
источник
Wolfram Language, 113 байтов
Эта версия принимает данные из всплывающего окна, а числа вводятся в форме "{x, y, z, ...}", (без кавычек).
Входные данные:
Выход:
Принимает входные данные в динамическом манипулировании в виде строки вида "{x, y, z}", где x, y и z являются целыми 10-ю целыми числами (с ведущими нулями или без них). Выход тоже в базе 10.
Существуют и другие способы ввода данных таким образом, чтобы сэкономить на количестве символов, но я думаю, что это решение представляет собой элегантное использование динамического графического интерфейса пользователя, который выполняет вычисления
Если вы хотите запустить это в облаке, мы можем использовать CloudDeploy:
Облако развертывания приносит количество символов до 256, однако ...
Входными данными в FormPage также является строка вида "{x, y, z}", где x, y и z являются целыми числами из 10 основ.
Я сам это развернул в облаке, и вы можете попробовать это на https://www.wolframcloud.com/objects/97b512df-64f8-4cae-979b-dba6d9622781
источник
Питон 3, 197
Он принимает в двоичных числах, разделенных пробелами.
Безголовая версия:
источник
C #, 255
Полная программа, вводимая как аргументы командной строки - разделенные пробелами - в десятичном виде.
Более читабельно:
источник
Рубин, 127 байт
Принимает массив в качестве ввода.
источник
CoffeeScript, 194 байта
Принимает ввод как двоичные числа, разделенные запятой, вывод в двоичном виде.
Попытайся.
источник
GolfScript, 46 байт
Попробуйте это онлайн на веб-GolfScript .
Контрольные примеры
источник
C ++, 192 байта
Допускает ввод 32-битного целого числа без знака и количества элементов в этом массиве.
Ungolfed:
источник