Примечание. Это ветка полицейских , в которой нужно разместить зашифрованный код. Вот ветка грабителей, где взломанный источник должен быть опубликован и связан с ответом полицейского.
Задача: Напишите самую короткую безопасную программу, которая умножает квадратный корень из целого числа n на квадрат n
Это копы и грабители , поэтому правила таковы:
- В своем ответе опубликуйте зашифрованную версию вашего исходного кода (символы должны быть написаны в любом порядке). Зашифрованная версия не должна работать!
- Вы можете принять ввод любым стандартным способом, то же самое относится и к выводу. Жесткое кодирование запрещено
- После того, как код будет взломан грабителями (если это произойдет), вы должны упомянуть, что ваш код был взломан в вашем заголовке, и добавить спойлер в текст вашего ответа с вашим точным кодом.
- То же самое относится и к безопасным ответам (упомяните, что это безопасно, и добавьте спойлер )
- Код считается безопасным, если никто не взломал его через 5 дней после публикации, и вы можете указать это в заголовке.
- Вы должны указать свой язык программирования
- Вы должны указать количество байтов
- Вы должны указать механизм округления в своем ответе (см. Ниже)
Можно предположить, что результат меньше 2 32, а n всегда положительно. Если результатом является целое число, вы должны вернуть точное значение с десятичной точкой или без нее; в противном случае минимальная десятичная точность будет равна 3 десятичным знакам с любым механизмом округления по вашему выбору, но может включать и больше. Вы должны указать механизм округления в своем ответе. Вы не можете вернуться в виде дробей (числитель, знаменатель пары - извините, Bash!)
Примеры:
In -> Out
4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0
Самый короткий безопасный ответ к концу апреля будет считаться победителем.
источник
Ответы:
05AB1E, 20 байтов - безопасно
Еще один совершенно другой подход из моих предыдущих ответов.
Нет округления.
Пример работает
Я не сомневаюсь, что @Emigna взломает его в один миг, но нужно попробовать! :-D
Решение
Это использует тот факт, что эта последовательность:
u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
сходится к sqrt (x) и кубически быстро при этом (извините, не нашел, как отформатировать математические уравнения в PCG).
Детальное объяснение
Попробуйте онлайн!
источник
Python 3 , 44 байта ( взломан )
Нет округления. Точность с плавающей точкой.
источник
MATL , 12 байт ( взломано @tehtmi )
Нет округления; использует с плавающей точкой.
Предполагаемое решение (отличается от найденного @tehtmi):
объяснение
источник
Röda , 28 байт ( взломано @tehtmi )
Обратите внимание на пробел в начале. Нет округления, но он использует числа с плавающей запятой, поэтому точность ограничена.
источник
Perl, 42 байта (безопасный)
Есть 41 байт кода и
-p
флага (других флагов нет).Результат не округляется (или, скорее, округляется до той же точки, которую Perl получит при округлении
$_ = (sqrt $_) * ($_ ** 2)
).Решение:
Объяснение:
источник
$_=
. И естьeval
где-то. (это не много, но я чувствую, что не могу дать вам больше, не предоставив вам слишком много информации)Октава, 43 байта (Сейф)
Это скрипт, который требует ввода из командной строки (это не функция). Это точность с плавающей точкой (поэтому нет округления).
Решение:
Объяснение:
источник
C, 50 байтов ( взломано fergusq )
Использует стандартное округление IEEE754. Как отмечено в ответе fergusq, может потребоваться в
-lm
зависимости от вашего компилятора.источник
Mathematica, 131 байт, не конкурирует ?, взломан
Это был взломан @ lanlock4 ! Тем не менее, у меня все еще есть интернет-очки, чтобы даровать кого-то, кто находит оригинальное решение, где все персонажи действительно необходимы ....
Это задумано как головоломка. Хотя вы можете использовать вышеперечисленные символы так, как хотите, я, конечно, намерен, чтобы ответ следовал за формой
где первая и третья строки являются просто оберткой, чтобы сделать округление и отображение законным (каждый вывод записывается ровно в три десятичных знака, округлено), а вторая строка представляет собой зашифрованную версию кишок кода. Пример выходов:
(Mathematica - это несвободное программное обеспечение, но есть песочница Wolfram, где можно тестировать скромные объемы кода. Например, вырезать и вставить код
определяет функцию, которую вы впоследствии можете вызвать как
f@6
илиf[9]
, которая делает то же самое, что и расшифрованная версия кода выше. Так это действительно должно быть неконкурентным?)источник
Swift - 64 байта (безопасно)
Нет округления и отображает
.0
даже если результат является целым числом.источник
Haskell, 16 байт ( взломано @nimi )
Нет конкретного округления
источник
R, 28 байт ( взломано @Flounderer )
Точность Standard R с плавающей точкой.
источник
C #, 172 байта ( взломано SLuck49 )
Этот код является полной программой.
В начале есть семь пробелов.
Ввод читается из STDIN и распечатывается в STDOUT. Результат
double
не округлен.Оригинальный код безголовый:
источник
JavaScript (ES7), 20 байт ( взломано @IlmariKaronen )
Стандартная точность JavaScript.
источник
Python 2, 60 байт ( взломано @notjagan )
Нет округления. Точно до 10 десятичных цифр.
источник
Python 3.6, 59 байт
Нет округления. Точность с плавающей точкой.
источник
Haskell, 64 байта, ( взломано Laikoni )
Стандартные операции с плавающей точкой на Haskell.
Моя оригинальная версия:
источник
Фурье ,
124119 байтЗдесь нет пробелов и символов новой строки.
Квадратный корень округляется до ближайшего целого числа, потому что Фурье, кажется, не обрабатывает ничего, кроме целых чисел (и, поскольку @ATaco получил разрешение, я надеюсь, что это нормально)
исправлена ошибка редактирования, если вы уже взломали это, предыдущий был функционален
Понял, что я неправильно понял часть кода, и использовал больше символов, чем мне было нужно
Если я что-то пропустил, дайте мне знать
источник
Информ 7 , 71 байт ( взломано @Ilmari Karonen )
Код включает 17 пробелов и 2 новые строки. Это полная программа Infrom 7, определяющая функцию, которая печатает результат с точностью до 5 десятичных знаков.
источник
R, 19 байт (взломано @Steadybox)
Стандартное округление
R, 33 байта (взломано @plannapus)
R, 31 байт (взломано @plannapus)
h=f`l`u`n`c`t`i`o`n([],[])^(.9)
источник
Октава, 30 байт (безопасно)
Немного проще, чем мой первый. Не должно быть слишком сложно, но, надеюсь, это веселая головоломка.
источник
^
? Хммм ...@(e)(e**((i/(i+i))+~sum(e:j)))
но это толькоn^1.5
... это сложно.Ом, 11 байт
Используйте с
-c
флагом. Использует кодировку CP-437.источник
OCaml , 13 байт ( взломано @Dada )
Нет округления (в рамках стандарта IEEE 754).
источник
Javascript, 123 байта, взломан notjagan
Этот код является полной функцией
В самом начале списка символов есть один пробел
Округление этого ответа является точностью с плавающей запятой для Javascript, точность в пределах 10 ^ -6 для каждого ответа.
Стал короче, потому что точность не должна была поддерживаться настолько высокой, как я думал.
Я понял, что это будет намного легче решить, чем я первоначально сделал, но это уже было: P
Исходный код:
Метод Ньютона, примененный 5 раз от ближайшей степени 2
источник
Python 3.6 - 52 байта ( взломано @xnor )
Стандартное округление Python
источник
Ruby, 35 байт (взломан xsot )
Нет округления. Точность с плавающей точкой.
источник
05AB1E , 47 байтов
Не округляет, использует точность с плавающей запятой.
источник
CJam, 8 байт ( взломано E
nmigmna )Нет округления. Использует двойную точность.
источник
R, 32 байта ( взломано @plannapus )
Стандартная точность с плавающей точкой.
источник
Excel, 26 байт
Нет округления.
Примечание: поскольку Excel является платным программным обеспечением, это также работает в бесплатном LibreOffice.
источник
RProgN 2 , 6 байт ( взломано @notjagan )
Нет округления, отображает много знаков после запятой. Не отображает ничего для целочисленного решения.
источник
n²√n
? Я могу легко заставить его рассчитатьn² + √n
, но я не могу на всю жизнь увидеть, как вы получили условия для умножения.