Учитывая натуральное число, n
напишите программу или функцию, чтобы получить список всех двух возможных умножений, которые можно использовать для достижения n
. Для того, чтобы лучше понять , что делал вид , вы можете пойти в http://factornumber.com/?page=16777216 , чтобы увидеть , когда n
это 16777216
мы получаем следующий список:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
Не нужно красиво печатать такие вещи, как здесь. Требование состоит в том, что каждая запись (пара факторов) хорошо отличается друг от друга, и внутри каждой пары первый фактор также хорошо отличается от другого. Если вы решите вернуть список / массив, внутренним элементом может быть список / массив с двумя элементами или некоторая структура вашего языка, которая поддерживает пару вещей, таких как C ++ std::pair
.
Не печатайте умножение на 1 запись и не повторяйте записи с первым коэффициентом, замененным вторым, поскольку они довольно бесполезны.
Нет победителя; это будет в зависимости от языка кода.
источник
30
?Ответы:
Java (OpenJDK 8) ,
816665 байт++j<=i/j
->j++<i/j
.Попробуйте онлайн!
Старый (для справки)
Java (OpenJDK 8) , 126 байт
Попробуйте онлайн!
Первый кодгольф представить и первый лямбда-использование. Будущее я, пожалуйста, прости меня за код.
источник
05AB1E , 8 байтов
Попробуйте онлайн!
источник
C (gcc) ,
585453 байтаПопробуйте онлайн!
источник
Python 2 , 51 байт
Попробуйте онлайн!
51 байт (спасибо Луису Мендо за байт)
Попробуйте онлайн!
51 байт
Попробуйте онлайн!
источник
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 байт
Попробуйте онлайн!
источник
APL (Dyalog) , 28 байт
Попробуйте онлайн!
источник
Perl 6 , 38 байт
Попытайся
Expanded:
источник
Брахилог , 8 байт
Попробуйте онлайн!
объяснение
~×
Часть не включает в себя 1s в своем выходе, так что для ввода Н это дает [N] , вместо [1, N] , который затем с помощью забитĊ
. Я не совсем уверен, зачем≜
это нужно ...источник
≜
необходимо, потому что в противном случае нет точек выбора дляᵘ
: список длины 2, продукт которого является входным, является единственным ответом, если вы на самом деле не запрашиваете значения списка.Japt , 9 байт
Проверьте это онлайн! Возвращает массив массивов, с некоторыми нулями в конце;
-R
добавлен флаг, чтобы показать результат более четко.источник
null
s в конце.Желе , 8 байт
Монадическая ссылка, принимающая число и возвращающая список списков (пар) чисел.
Попробуйте онлайн! (Тайм-аут для TIO для
16777216
примера, так как он создаст список из 68,7 миллиардов пар и отфильтрует их с нужным продуктом!)Как?
*
Ḋ
, dequeue, неявно создает диапазон числового ввода до начала действия, а функция range неявно ограничивает свой ввод, так что, скажем,n=24
результат½
is4.898...
; диапазон становится[1,2,3,4]
; и исключенный результат[2,3,4]
** Как и выше,
p
декартово произведение задает диапазоны для числового ввода - здесь правильный аргумент,n
следовательно, правильный аргумент становится[1,2,3,...,n]
до того, как произойдет фактическое картезианское произведение.источник
Шелуха , 8 байт
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6), 55 байт
демонстрация
Показать фрагмент кода
Попробуйте онлайн!
источник
6
?Python 2 , 59 байт
Попробуйте онлайн!
источник
range(2,N)
и сохранить его в виде списка, но выделенной памяти недостаточно. Можно попробовать заменитьrange
наxrange
(генератор диапазона Python 2), хотя это превышает одну минуту максимальной продолжительности работы TIO. На машине с достаточным объемом памяти и времени эта программа должна завершиться и вернуть правильный ответ.Желе , 9 байт
Попробуйте онлайн!
источник
Октава , 42 байта
Попробуйте онлайн!
источник
PHP, 70 байт
В виде строки (70 байт):
В качестве дампа массива (71 байт):
(Я не уверен, что могу использовать return $ b; вместо print_r, поскольку он больше не выводит массив, иначе я могу сохранить 2 байта здесь.)
Массив дает результаты как:
источник
Желе , 12 байт
Попробуйте онлайн!
Как это устроено
источник
Wolfram Language (Mathematica) , 41 байт
Попробуйте онлайн!
являетсяFunction
оператором, который вводит безымянную функцию с именованным параметромn
.источник
Фактор , 58
Ну, в этом вопросе должен быть какой-то фактор!
Это цитата.
call
он с номером в стеке, оставляетassoc
(массив пар) в стеке.Я никогда не уверен, считается ли весь импорт или нет, так как он является частью языка. Этот использует:
(Если они имеют значение, я должен искать более длинное решение с более коротким импортом, что довольно глупо)
Как слово:
источник
Рубин , 43 байта
Попробуйте онлайн!
Как это устроено:
Для каждого числа до sqrt (n) сгенерируйте пару
[[x, n/x]]
, затем возьмитеn%x
th-й элемент этого массива. Еслиn%x==0
это так[x, n/x]
, то иначеnil
. когда закончите, удалите всеnil
из списка.источник
Par / GP ,
493438 байтПопробуйте онлайн!
Установите нотацию строителя для всех пар,
[d, n/d]
гдеd
проходит через все делителиd
вn
зависимости отd > 1
иd <= n/d
.Огромное улучшение от алефалии.
источник
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Шелуха ,
1412 байтПопробуйте онлайн!
объяснение
источник
APL + WIN, 32 байта
Объяснение:
источник
Добавить ++ ,
1815 байтПопробуйте онлайн!
Как это устроено
источник
Mathematica, 53 байта
Попробуйте онлайн!
источник
Befunge-93, 56 байт
Попробуйте онлайн
источник
Юлия 0,6 , 41 байт
Попробуйте онлайн!
Переопределяет встроенный унарный оператор
~
и использует понимание массива для построения вывода.div(x,y)
необходим для целочисленного деления.x/y
сохраняет 5 байтов, но вывод~4=(2,2.0)
.Int(floor(√x))
.источник
APL NARS 99 символов
9 + 46 + 41 + 3 = 99 Тест: (где не печатать ничего, он возвращает что-то, что возвращает - список нулевой, который нужно рассматривать как «нет решения»)
источник
Пыть ,
6765 байтЯ уверен, что это можно сыграть в гольф.
По сути, алгоритм генерирует список всех делителей входных данных (назовем его n ), создает один и тот же список, но переворачивает, перемежает их два (например, если n = 24, то в этот момент он имеет [ 1,24,2,12,3,8,4,6,6,4,8,3,12,2,24,1]), и распечатывает элементы из индекса 2 до половины длины массива, печатая каждый номер на новой строке и с дополнительной новой строкой между каждой парой.
Большая часть работы выполняется на самом деле управления стеком.
Сохранено 2 байта с помощью функции приращения.
источник
Perl 5, 50 байт
Ungolfed:
Попробуйте онлайн .
источник