Биквадратичное число - это число, которое является четвертой степенью другого целого числа, например: 3^4 = 3*3*3*3 = 81
Если в качестве входных данных указать целое число, выведите ближайший биквадратный номер.
Вот первые 15 двойных квадратов:
1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625
Это код-гольф, поэтому побеждает меньше байтов на каждом языке
Это OEIS A000583
code-golf
sequence
number-theory
integer
Skidsdev
источник
источник
n^4
иn
чередуется в знаке.2 x n²
числа: 2, 8, 18, 32, 50, 72, 98, ...Ответы:
Python 3 , 35 байт
Попробуйте онлайн!
Как это устроено
Значение n, при котором выход переключается с ( k - 1) 4 на k 4, удовлетворяет условию √ (√n - 3/4) + 1/2 = k или n = ((k - 1/2) 2 + 3 / 4) 2 = ( k 2 - k + 1) 2 = (( k - 1) 4 + k 4 + 1) / 2, что является точно первым целым числом, которое ближе к k 4 .
(Работает для всех n ≤ 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 , после чего округление с плавающей запятой начинает его разбивать, даже если оно работает математически для всех n .)
источник
round
если переключитесь на Python 2, который округляет все .5.Октава , 35 байт
Этот вызов требовал подхода, основанного на свертке.
Попробуйте онлайн!
объяснение
Выражение
(1:n).^4
создает вектор строки[1 16 81 256 ... n^4]
.Этот вектор затем сворачивается с
[1 1]/2
, что эквивалентно вычислению скользящего среднего для блоков размера2
. Это подразумевает, что вектор дополняется слева и справа0
. Таким образом, первое значение в результате0.5
(среднее из неявного0
и1
), второе8.5
(среднее из1
и16
) и т. Д.В качестве примера, для
n = 9
результатаconv((1:n).^4,[1 1]/2)
являетсяСравнение
n>...
тогда даети подачи
sum(...)
дает2
. Это означает, что оноn
точно превышает2
средние точки между биквадратичными числами (включая дополнительную среднюю точку0.5
). И, наконец,^4
поднимает это ,4
чтобы получить результат,16
.источник
Haskell ,
5149 байтовФункция монады ФТВ!
Попробуйте онлайн!
Объяснение:
источник
MATL , 6 байтов
Попробуйте онлайн!
объяснение
Рассмотрим ввод
9
в качестве примера.источник
Нейм , 5 байт
Объяснение:
Попробуйте онлайн!
источник
Excel, 25 байт
Excel обновляет это
=INT((A1^0.5-3/4)^0.5+0.5)^4
источник
Excel.ActiveSheet
A1
Mathematica, 21 байт
источник
Брахилог , 9 байт
Попробуйте онлайн!
объяснение
источник
JavaScript (ES7), 42 байта
Рекурсивная версия, 44 байта
демонстрация
Показать фрагмент кода
источник
Октава , 37 байт
Анонимная функция, использующая интерполяцию ближайшего соседа.
Попробуйте онлайн!
источник
conv
:(05AB1E , 6 байтов
Попробуйте онлайн!
объяснение
источник
APL, 22 байта
Попробуйте онлайн!
Как?
o←4*⍨⍳⍵
-o
= range (⍵
) 4 [векторизация]p←|⍵-⍨o
-p
= abs (o
-⍵
) [векторизация]o/⍨
- взятьo
элемент по индексу, где ...p=⌊/p
-p
минимальный элементисточник
Желе , 6 байт
Монадическая ссылка, возвращающая список из одного элемента, или полная программа, которая печатает результат (используя неэффективный метод).
Попробуйте онлайн!
Как?
источник
PHP , 33 байта
Попробуйте онлайн!
PHP , 56 байт
Попробуйте онлайн!
источник
C ++, 96 байт
Полная версия:
ССЫЛКА, чтобы попробовать
источник
Haskell, 35 байт
Порт Андерса Python3 ответ .
источник
R ,
47443735 байтПопробуйте онлайн!
источник
f=
) и вместоx[which.min((x-n)^2)]
использованияwhich.min((x-n)^2)^4
, а затем поместитьf=
в заголовок ссылкиx
вообще. Спасибо!n=scan();which.min(((1:n)^4-n)^2)^4
и ввод идет в раздел нижнего колонтитула на TIO.Pyth , 9 байт
Попробуйте онлайн!
Pyth , 17 байт
Полная программа, в которой используется тот же арифметический подход, что и в ответе @ AndersKaseorg :
Попробуйте онлайн!
источник
Japt , 20 байт
Это слишком долго!
Проверь это
источник
QBIC , 38 байт
объяснение
источник
Java (OpenJDK 8) , 64 байта
Попробуйте онлайн!
источник
Common Lisp, 50 байт
Попробуйте онлайн!
источник
C #, 95 байт
Мы используем 940 в качестве заданного значения, так как любое большее значение переполняет int.
Полная / Отформатированная версия:
источник
Рубин ,
2334 байтаЯ понятия не имею, почему
0.75
это так важно, но эй, что бы ни работало.Попробуйте онлайн!
источник