Дано положительное квадратное число в качестве входных данных. Выведите число значений между входом и следующим наивысшим квадратом.
пример
Вход: 1
Выход: 2
Причина: числа от 2 до 3 находятся между 1 и 4, следующий по величине квадрат
Вход: 4
Выход: 4
Причина: числа 5, 6, 7, 8 от 4 до 9
Ответы:
Желе , 2 байта
Попробуйте онлайн!
Порт моего ответа Mathematica (взять квадратный корень, затем дважды). Это ограничено входными данными, которые могут быть представлены точно как число с плавающей запятой. Если это проблема, трехбайтовое решение
ƽḤ
работает для произвольных квадратов (которые Деннис сначала опубликовал, но затем удалил).источник
Brain-Flak ,
38, 22 байтаПопробуйте онлайн!
Я очень горжусь этим ответом. ИМО, одна из моих лучших игр для мозга.
Как это работает?
Как отметили многие другие пользователи, ответом будет просто sqrt (n) * 2 . Тем не менее, вычисление квадратного корня в мозговых злаках очень нетривиально. Поскольку мы знаем, что входные данные всегда будут квадратными, мы можем оптимизировать. Итак, мы пишем цикл, который вычитает
от ввода, и отслеживать, сколько раз он работает. Как только он достигнет 0, ответом будет просто последнее число, которое мы вычли минус один.
Первоначально я поставил счетчик на другой стек. Однако мы можем использовать сам основной стек в качестве счетчика, увеличив высоту стека.
В псевдокоде python-y это в основном следующий алгоритм:
источник
Mathematica, 8 байт
Попробуйте онлайн! (Используя математику.)
Разница между n 2 и (n + 1) 2 всегда равна 2n + 1, но мы просто хотим, чтобы значения между ними исключали оба конца, то есть 2n .
Это может быть сокращено в
2#^.5&
зависимости от требований к точности.источник
Юлия 0,5 , 8 байт
Попробуйте онлайн!
источник
дк, 5
Попробуйте онлайн .
Ранее я неправильно понял вопрос. Эта версия работает для любого положительного целочисленного ввода, а не только для идеальных квадратов:
12
Попробуйте онлайн .
источник
Желе ,
76 байтЯ пропустил предостережение "входные данные будут квадратными", но это будет работать для всех неотрицательных целых чисел ... Мартин Эндер уже дал 2-байтовое решение .
Монадическая ссылка, возвращающая счет.
Попробуйте онлайн!
источник
Japt ,
53 байтаПопробуйте онлайн!
Квадратный корень из ввода, затем умножьте на 2.
источник
Brain-Flak , 20 байтов
Приветствую удивительный ответ DJMcMayhem (albiet чуть дольше) здесь
Попробуйте онлайн!
объяснение
Этот код работает путем обратного отсчета от квадратного числа с нечетным приращением. Поскольку каждый квадрат является суммой последовательных нечетных чисел, он достигнет 0 с шагом n 1/2 . Хитрость в том, что мы на самом деле отслеживаем наши шаги в четном числе и используем статическое значение,
()
чтобы сместить его в соответствующее нечетное число. Поскольку ответ 2n 1/2 , это четное число будет нашим ответом. Поэтому, когда мы достигаем 0, мы удаляем ноль, и наш ответ находится там в стеке.источник
Mathematica, 17 байт
Попробуйте онлайн!
источник
Октава ,
2510 байтПопробуйте онлайн!
Сэкономил 15 байтов, используя гораздо лучший подход Мартина. Ассортимент состоит из
2*sqrt(n)
элементов. Функция делает именно это: Умножает2
на корень ввода.источник
Желе , 7 байт
Попробуйте онлайн!
Объяснение:
источник
Python 3 , 16 байт
Попробуйте онлайн!
источник
Ом , 2 байта
Попробуйте онлайн!
источник
JavaScript ES6, 10 байт
Попробуйте онлайн!
Math.sqrt
довольно долго, поэтому мы используем**.5
источник
TI-Basic, 3 байта
Самый простой подход ...
источник
05AB1E , 2 байта
Попробуйте онлайн!
Еще один порт подчинения Мартина Эндера ...
источник
Добавить ++ ,
2220 байтПопробуйте онлайн!
Хотите знать, как это работает? Ну, не бойся! Я здесь, чтобы обучить вас!
источник
MATL (
87 байт)Я уверен, что это может быть значительно уменьшено (edit: спасибо Луис), но наивное решение:
Попробуйте онлайн!
Объяснение:
источник
2^
наU
(и это работало в версии 20.1.1 , которая была самой последней на момент испытания, поэтому ответ на нее будет приемлемым даже по нашему старому стандарту)Пари / ГП , 9 байт
Попробуйте онлайн!
источник
PHP , 44 байта
Попробуйте онлайн!
источник
Алиса , 10 байт
Попробуйте онлайн!
объяснение
Опять же, вычисляет 2 sqrt (n) . Макет сохраняет два байта по сравнению со стандартным решением:
Разбивка кода без учета перенаправления IP:
источник
Go , 56 байт
Попробуйте онлайн!
источник
QBIC ,
199 байтСпасла кучу, скопировав подход @ MartinEnder.
Нет ссылки TIO для QBIC, к сожалению.
объяснение
источник
На самом деле , 3 байта
Попробуйте онлайн!
источник
05AB1E ,
43 байтаВычеркнул 4 все еще 4: c
Попробуйте онлайн!
источник
Сетчатка , 21 байт
Попробуйте онлайн! Объяснение: Работает, беря квадратный корень из числа на основе решателя треугольных чисел @ MartinEnder. После сопоставления квадратного числа,
$1
это разница между квадратным числом и предыдущим квадратным числом, в унарном виде. Мы хотим следующее отличие, но эксклюзивное, которое будет всего на 1 больше. Чтобы достичь этого, мы считаем количество пустых строк в$1
.источник
T-SQL, 22 байта
Ввод осуществляется через уже существующую таблицу в соответствии с нашими стандартами .
источник
Java (OpenJDK 9) / JShell, 17 байт
Попробуйте онлайн!
Примечание. Для этого потребуется
import java.util.function.*;
получить доступ кIntFunction<T>
Java 8 или Java 9, ноjava.util.function
пакет по умолчанию импортируется в JShell.источник
Haskell, 9 байт
Попробуйте онлайн
Вход и выход будут обрабатываться как значения с плавающей точкой.
источник
Нетер, 7 байт
Попробуй это здесь!
Точно так же, как и любой другой ответ: выводит дважды квадратный корень.
источник