Задав десятичное число k
, найдите наименьшее целое число, n
такое, что корень квадратный из n
находится в пределах k
целого числа. Однако расстояние должно быть ненулевым - n
не может быть идеальным квадратом.
Дано k
десятичное число или дробь (в зависимости от того, что проще для вас), например 0 < k < 1
, выведите наименьшее положительное целое число n
, чтобы разница между квадратным корнем n
и ближайшим целым числом к квадратному корню была n
меньше или равна, k
но отлична от нуля ,
Если i
ближайшее целое число к квадратному корню из n
, вы ищете первое n
где 0 < |i - sqrt(n)| <= k
.
правила
- Вы не можете использовать в языке недостаточную реализацию нецелых чисел, чтобы тривиализировать проблему.
- В противном случае можно предположить, что
k
это не вызовет проблем, например, с округлением с плавающей запятой.
Тестовые случаи
.9 > 2
.5 > 2
.4 > 3
.3 > 3
.25 > 5
.2 > 8
.1 > 26
.05 > 101
.03 > 288
.01 > 2501
.005 > 10001
.003 > 27888
.001 > 250001
.0005 > 1000001
.0003 > 2778888
.0001 > 25000001
.0314159 > 255
.00314159 > 25599
.000314159 > 2534463
Разделенные запятыми входные данные теста:
0.9, 0.5, 0.4, 0.3, 0.25, 0.2, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.0314159, 0.00314159, 0.000314159
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
JavaScript (ES7),
5150 байтПопробуйте онлайн!
(не для тестовых случаев, которые требуют слишком много рекурсии)
Нерекурсивная версия,
5756 байтПопробуйте онлайн!
Или для 55 байтов :
Попробуйте онлайн!
(но этот значительно медленнее)
источник
J ,
3929 байтNB. Эта более короткая версия просто использует формулу @ alephalpha.
Попробуйте онлайн!
39 байт, оригинал, перебор
Попробуйте онлайн!
Обрабатывает все тестовые случаи
источник
Japt ,
1816 байтов-2 байта от лохматого
Попробуйте онлайн!
источник
%1 &&
это неприятно, не уверен, что использование решения Арно будет короче (возможно, нет)Z¬u1
чтобыZ
в начале функции.[1,-1]®*U²Ä /U/2 c ²-Z} rm
Pyth,
2221 байтПопробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .
Еще один вариант отличного ответа от алефальфы , не забудьте дать им голос!
Изменить: Сохраненный байт, благодаря Кевину Круйссену
источник
[-1,1]
в 3 байта, или вам нужен дополнительный реверс, чтобы он стал 4 байта? Если это возможно в 3 байта, вы можете сделать это, а затем изменить ,*_d
чтобы*d
и+d
к-d
. Кроме того, разве Pyth не имеет встроенного минимума вместо сортировки и получения первым?- ... d
хотя, это экономит мне байт! Спасибо[1,-1]
или[-1,1]
. Я сравнивал*d
и-d
с моим ответом 05AB1E, где я не использую карту, но могу вычитать / умножать 2D-массив из / с другого 2D-массива, поэтому мне не нужна карта. Рад, что я мог помочь сохранить байт в этом случае. :) И спасибо за вдохновение для моего ответа 05AB1E.Perl 6 ,
343329 байт-1 байт благодаря Грими
Попробуйте онлайн!
источник
>=
на>
. Квадратные корни целых чисел либо целочисленные, либо иррациональные, поэтому случай равенства не может произойти.APL (Dyalog Unicode) , 27 байтов SBCS
Попробуйте онлайн!
Монадический поезд принимает один аргумент. Это порт ответа алефальфа .
Как:
источник
C # (интерактивный компилятор Visual C #) ,
898571 байтПопробуйте онлайн!
-4 байта благодаря Кевину Круйссену!
источник
n++
в цикл, чтобы его-1
можно было удалить из возврата:k=>{double n=1,p;for(;Math.Abs(Math.Round(p=Math.Sqrt(0d+n))-p)>k|p%1==0;n++);return n;}
0d+
можно удалить, не так ли?n
уже был дваждыJava (JDK) ,
7370 байтПопробуйте онлайн!
-3 bytes
благодаря @ceilingcatисточник
Java 8, 85 байт
Порт ответа EmbodimentOfIgnorance 's C # .NET.
Попробуйте онлайн.
Math.round
В качестве альтернативы может быть, но , к сожалению , это тот же самый байт-счетчик:Попробуйте онлайн.
источник
MathGolf , 16 байт
Попробуйте онлайн!
Не большой поклонник этого решения. Это порт решения 05AB1E, основанный на той же формуле, которую использует большинство ответов.
объяснение
источник
byte
в коде гольф? Потому что некоторые из ваших персонажей требуют более одного байта. Я не хочу придираться, мне искренне интересно :)'ԓ'
символ на самом деле составляет 2 байта, а остальные - 1 байта.Forth (gforth) , 76 байтов
Попробуйте онлайн!
объяснение
Начинает счетчик с 1 и увеличивает его в цикле. На каждой итерации проверяется, является ли абсолютное значение квадратного корня счетчика - ближайшее целое число меньше k
Код Объяснение
источник
Желе , 13 байт
Мне не удалось получить что-то более крутое, чем тот же подход, что и в случае с алефальцем
- иди, скажи ему ответ Mathematica !
Попробуйте онлайн!
Как?
источник
Japt , 14 байт
Попытайся
источник
Perl 5
-p
, 42 байтаПопробуйте онлайн!
источник