Соревнование
При заданном целочисленном входе, x
где 1 <= x <= 255
возвращаются результаты степеней двух, которые при суммировании дают x
.
Примеры
Учитывая вход:
86
Ваша программа должна вывести:
64 16 4 2
Входные данные:
240
Выход:
128 64 32 16
Входные данные:
1
Выход:
1
Входные данные:
64
Выход:
64
Вывод может содержать нули, если в сумме нет определенной степени двух.
Например, ввод 65
может выводить 0 64 0 0 0 0 0 1
.
счет
Это код-гольф , поэтому выигрывает самый короткий ответ на каждом языке.
code-golf
binary
code-golf
sequence
integer
chess
code-golf
number
arithmetic
matrix
code-golf
code-golf
combinatorics
grid
set-partitions
code-golf
array-manipulation
graph-theory
code-golf
number
code-golf
string
decision-problem
code-golf
matrix
cellular-automata
3d
code-challenge
restricted-source
printable-ascii
code-golf
board-game
code-golf
geometry
grid
code-golf
word-puzzle
code-golf
matrix
sorting
code-golf
code-golf
string
decision-problem
code-golf
matrix
cellular-automata
code-golf
decision-problem
code-golf
math
number
arithmetic
restricted-source
code-golf
code-golf
number
integer
matrix
code-golf
date
code-golf
matrix
code-golf
sequence
combinatorics
chemistry
code-golf
array-manipulation
popularity-contest
code-golf
code-golf
natural-language
code-golf
number
integer
sorting
substitution
code-golf
string
number
date
encode
code-golf
decision-problem
code-golf
string
subsequence
code-golf
string
alphabet
code-golf
SpookyGengar
источник
источник
Ответы:
JavaScript (ES6), 28 байт
Попробуйте онлайн!
источник
f=n=>n&&f(n&~-n)+[,n&-n]
.Чистый Баш , 20
Попробуйте онлайн!
объяснение
источник
Желе , 4 байта
-2, поскольку мы можем выводить нули вместо неиспользованных степеней 2 :)
Попробуйте онлайн!
Как?
источник
Желе , 6 байт
Попробуйте онлайн!
объяснение
НО здесь есть объяснение (примечание: я предполагал, что мы можем выводить только полномочия 2 и ничего больше):
«Доказательство», что оно работает правильно. Стандартным представлением целого числаX в базе 2 является список { х1, х2, х3, ⋯ , хN} , где Икся∈ { 0 , 1 } ,∀i ∈ 1 , n¯¯¯¯¯¯¯¯ , такоечто
Икс= ∑я = 1NИкся⋅ 2н - я
Индексыя такойчтоИкся= 0 , очевидноне имеют никакого вкладапоэтому мы заинтересованы только в поиске техтакиечтоИкся= 1 . Так как вычитатья изN не удобно (степени двух имеют показатели степени видаN- я , гдея - любой индекс1 ) вместо того, чтобы найти правдивые индексы в этом списке, мы обращаем его вспять, а затем находим их «назад» с помощью2 до этих сил.
UT
. Теперь, когда мы нашли правильные индексы, все, что нам нужно сделать, это поднятьисточник
’
там ...BUT2*H
будет работать, хотя.Python , 35 байт
Little-endian с нулями при неиспользуемых степенях 2.
Попробуйте онлайн!
источник
APL (Dyalog Extended) , 7 байтов SBCS
Функция анонимного молчаливого префикса. Требуется индексирование на основе 0 (
⎕IO←0
).Попробуйте онлайн!
2
два*
поднятые к власти⍸
в ɩ ndices , где правда ,⍢
а⌽
обращено⍤
из⊤
двоичного представленияисточник
Кувалда 0,2, 3 байта
Распаковывает в
{intLiteral[2],call[NumberExpand,2]}
.Sledgehammer - это компрессор для кода Wolfram Language, использующий шрифт Брайля в качестве кодовой страницы. Фактический размер вышеупомянутого составляет 2,75 байта, но в соответствии с текущими правилами мета, заполнение до ближайшего байта учитывается в размере кода.
источник
05AB1E , 3 байта
Порт @JonathanAllan 's Jelly ответа , так что обязательно проголосуйте за него!
Содержит нули (в том числе -нагрузки конечных нулей).
Попробуйте онлайн или проверьте все тесты .
Объяснение:
источник
bitwise and
использовал в Осабье. Хороший.&
. XD Я использовал Bitwise-XOR пару раз, как здесь или здесь, так и Bitwise-NOT один раз здесь (который я позже удалил снова после игры в гольф дальше ...). Я действительно использую побитовые-и, XOR, OR, NOT, SHIFT и т. Д. Довольно часто в Java, но в 05AB1E не так много. :)Католикон , 3 байта
Попробуйте онлайн!
Объяснение:
источник
Wolfram Language (Mathematica) , 17 байт
Попробуйте онлайн!
Mathematica поражает снова.
источник
R ,
2723 байтаПопробуйте онлайн!
Развернутый код и объяснение:
источник
C # (интерактивный компилятор Visual C #) , 29 байт
Содержит 5 непечатаемых символов.
объяснение
Попробуйте онлайн!
источник
n=>new int[8].Select((j,i)=>1<<i&n).Where(i=>i!=0)
часть адреса передWhere
пять байт короче кстатиThe output may contain zeros
n=>new int[8].Select((j,i)=>1<<i&n)
составляет 35 байт, и нам не понадобятся дополнительные флаги и кодировки текста.n=>"INSERT ASCII HERE".Select(a=>1<<a&n)
но я на мобильном устройстве, которое не может отображать или печатать непечатные, поэтому мне придется подождать, пока я вернусь домой, чтобы обновить ответC # (интерактивный компилятор Visual C #) , 38 байт
Попробуйте онлайн!
источник
1
,2
,4
,8
,16
и т.д. (x>y
должно бытьx>=y
вместо этого)./u:System.Linq.Enumerable
и попробовать его для 31 байта/u:System.Linq.Enumerable
": PC (gcc) , 39 байт
Попробуйте онлайн!
источник
05AB1E, 7 байтов
объяснение:
Попробуйте онлайн!
источник
Haskell , 29 байт
Попробуйте онлайн!
источник
Рубин , 25 байт
Попробуйте онлайн!
источник
С (лязг) ,
1331106358 байт58-байтовое решение благодаря @ceilingcat .
Попробуйте онлайн!
источник
main(){}
и тип возвращаемого значения по умолчанию int. То же самое для переменных в глобальной области видимости. Также, по крайней мере, на обычных реализациях, таких как clang, printf и scanf, работают без прототипов. Вы, конечно, получаете предупреждения, но это все еще допустимый C89 (возможно) или, по крайней мере, K & R C для их неявного объявления. Типы объектов C, которые вы передаете в качестве аргументов, определяют, как они передаются, поэтому achar*
иint*
Just Work будет работать без усечения указателей до 32-разрядных на x86-64 или чем-либо еще. (Повышение аргументов по умолчанию происходит так же, как и для функций с переменным числом, которыми они в любом случае являются.)&
чтобы проверить, установлен ли бит. Какy&(1<<x)&&printf("%d ",1<<x);
. Или просто не пропускать нулиprintf("%d ", y&(1<<x))
. Или вместо подсчета битовых позиций используйтеx=256
иx>>=1
для смещения маски.main(y){int x=256;for(scanf("%d",&y);x>>=1;)printf("%d ",y&x);}
63 байта Попробуйте онлайн! clang даже скомпилирует это с-std=c11
MATL , 5 байтов
Попробуйте онлайн!
объяснение
Рассмотрим ввод
86
в качестве примера.источник
Perl 6 ,
1612 байт-4 байта благодаря Джонатану Аллану
Попробуйте онлайн!
Возвращает All Junction с 8 элементами. Это довольно нестандартный способ возврата, но, как правило, соединения могут действовать как упорядоченные (по крайней мере, до тех пор, пока не будет реализована автоматическая обработка) списки, и можно извлечь значения из одного.
Объяснение:
источник
Japt,
85 байтПопытайся
альтернатива
Предложено Оливером, чтобы избежать
0
s в выводе, используя-mf
флаг.Попытайся
источник
N&2pU
с,-mf
чтобы избежать0
с05AB1E , 9 байтов
Попробуйте онлайн!
Это также верно для 6 байтов, но не завершается вовремя на TIO для 86:
05AB1E , 6 байтов
Попробуйте онлайн!
источник
15
вместо[1,2,4,8]
2**0
, хороший улов.Ý
болееL
.L
вместо того,Ý
чтобы сначала в моем ответе.Юлия 0,6 , 13 байт
Попробуйте онлайн!
источник
CJam , 12 байт
Попробуйте онлайн!
источник
K (ок) ,
1916 байт-3 байта благодаря ngn!
Попробуйте онлайн!
ОК не имеет
power
оператора, поэтому мне нужна вспомогательная функция{*/x#2}
(скопировать в 2x
раза и уменьшить полученный список умножением)источник
{
x}
Алхимик , 125 байт
Попробуйте онлайн! или проверить каждый вход!
объяснение
источник
PHP ,
4139 байтПопробуйте онлайн!
Или 38 без весёлого
>>=
оператора и PHP 5.6+:Или 36 с прямым порядком байтов ("0 2 4 0 16 0 64 0"):
На самом деле я просто хотел использовать
>>=
оператора, поэтому я придерживаюсь 39 .тесты:
источник
TSQL,
4339 байтНе могу найти более короткое причудливое решение, поэтому вот стандартный цикл. -4 байта благодаря MickyT и KirillL
Попробуйте это
источник
,@ int=128s:print @y&@ set @/=2IF @>0GOTO s
. На это намекнул @KirillL для ответа RPython 2 ,
4340 байтПопробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #), 33 байта
Порт @Arnauld 's JavaScript (ES6) ответ , так что обязательно проголосуйте за него!
Попробуйте онлайн.
Объяснение:
источник