Привет, ребята, для моего класса мне нужно сделать квадратный корень из числа, но это не работает !! HELLPP!
Соревнование:
Write a function or program that will "make a number square root".
Примечание: это троллинг кода. Дайте «полезный» ответ, который поможет новому программисту достичь успеха в программировании! Будь креативным!
Ответы:
Джава
Вау, это сложная проблема. Я никогда не делал квадратный корень раньше. Я взял квадратные корни, но я не сделал один. Не забывайте, чтобы ваш код выглядел привлекательно для дополнительной оценки в ваших классах. Вот код, который делает квадратный корень из введенного числа:
Тролли:
System.out.print
не печататьjava.lang.System.out.print
. Они печатают во внутренний класс. Первые два (которые должны печатать строки) ничего не делают; второй:100
) ?:0
. Сбой из-за бесконечного цикла, когда вход отрицательный по той же причине, что и из-за бесконечного цикла, когда вход0
.источник
JFrame.DO_NOTHING_ON_CLOSE
в списке троллей ...setAlwaysOnTop(true)
тоже.C ++
Ну, если у вас нет лучшего маршрута, всегда есть решение грубой силы:
Это перебирает все возможные значения a
double
(сunion
помощью along long
, имеющего одинаковый битовый размер, так как нет хорошего способа фактически перебрать их, используя удвоенные значения в качестве действительных удваивающихся значений), пока не найдет тот, чей квадрат равенn
.источник
double
и Аlong long
- самая страшная вещь, которую я когда-либо видел.union
является неопределенным поведением, и с помощью функции возможен итеративный просмотр двойных чиселstd::nextafter
std::nextafter
существовало до того, как вы упомянули об этом мне, так что да, это было необходимо.double
значения не могут быть получены из умножения ,x*x
гдеx
этоdouble
тоже. Так что поиск иногда не будет успешным (в большинстве случаев?), Давая NaN вместо более правильного результата.Python 3
Этот простой код даст точный ответ:
источник
В Python 3 вы можете сделать следующее:
источник
Исправляя этот ответ ,
Это просто неправильно. Все знают, что самым быстрым является ASM.
Чистый x86_64 ASM!
В отличие от других запаздывающих ответов, этот имеет сложность O (1)!
А также в отличие от других ответов, это на 101% точно, потому что
sqrt(0.5)
это дает0.70710678118655
!источник
PCMPEQQ
больше не будутпитон
Если это разрешено в вашем классе, вы можете использовать сложную математическую библиотеку в качестве помощника, установите ее, выполнив команду:
Тогда вы просто запустите что-то вроде этого скрипта Python:
(Убедитесь, что вы запускаете это с правами администратора)
источник
root
в Unixland).С
Очевидно, это лучший способ. Это так быстро, как вы можете себе представить, посмотрев на код. Использование C, потому что C является самым быстрым, и эта проблема требует быстрого решения. Я проверил это для моих любимых чисел, таких как 7, 13 и 42, и, похоже, работает.
источник
results[number];
?С
Уловки и магия заставят это работать.
источник
Python 3
Вы, ребята, все делаете неправильно. Любой может увидеть, что квадратный корень из 20 - это не 4.47213595499958 или даже √20. Это решение переносит сложную задачу вычисления квадратного корня в модуль, предназначенный для этой цели.
Один из таких модулей - это sympy, который предоставляет математику с квадратными корнями. В отличие от других решений здесь, на самом деле все делает правильно. Он даже предполагает, что sqrt (-1) - это я - ни одно из решений здесь не может решить эту проблему.
А вот и модульный код, как выглядят хорошие программы. Функции должны быть как можно меньше, а если нет, это означает, что вы пишете ужасные программы. Кроме того, программы должны иметь много комментариев.
И вот пример работы этой программы.
источник
print_format_prompt_with_thing_to_specify_get_default_prompt_format_to_getattr_get_sys_name_from_get_stdout_name_and_print_square_root_of_read_from_stdin_and_print_get_string_from_get_newline_to_getattr_get_sys_name_from_get_stdout_name
.JavaScript
К сожалению, JavaScript не поддерживает символ квадратного корня для имен функций. Вместо этого мы можем использовать некоторые другие символы алфавита Unicode для представления функции квадратного корня.
В этом примере я буду использовать
ᕂ
.Как только у нас будет действительный символ, мы можем использовать объект Math для генерации функции квадратного корня.
Это просто! :)
источник
Юлия
Очевидно, что лучший способ сделать это - использовать квадратный корень Taylor Series:
Это на самом деле выводит очень точные значения:
Но, разумеется, как и в приближенном (а также в сходящемся ряду), он бесполезен для значений, не близких к 1:
источник
a^2
(n раз) и умножу наa
(n раз) ответ (sqrt(x)~a^n*sqroot(x/a^2n)
) x-> 0 (если a> 0), а не 1 (дает большие ошибки). Также, если x / a ^ 2n ~ 1, числаa!=x
иn
будут меняться для произвольного,x
чтобы получить желаемое назначение (что раздражает и отнимает много времени, чтобы найти их).Латекс
Решение для этого довольно сложное и очень сложное, поэтому возьмите свой кофе. Проблема в том, что в зависимости от того, какое число вы хотите получить, квадратный корень кода существенно меняется. Я покажу вам проблему. Допустим,
9
это ваш номер. Тогда код будет выглядеть так:Теперь давайте скажем, что
1234321
это ваш номер, посмотрите на код:Последнее, но не менее важное, скажем, ваш номер
0
.Хороший способ решить эту проблему - написать программу в
Ook!
илиPiet
, которая хочет ваш номер и выводитLaTeX-sqrt-code
для него. Вот очень простой примерOok!
, поскольку он может читать только один байт и не проверяет, является ли этот байт допустимым числом или нет, но я думаю, вы дойдете до сути.То же самое для
Piet
:Это был бы самый эффективный способ. Я также предложил бы использовать, так
Piet
как это всегда красивое произведение искусства, чтобы вещи не становились скучными быстро.источник
Haskell
Я перестал доверять компьютерам, когда впервые услышал об ошибках с плавающей точкой. Я имею в виду, серьезно, если даже Google не может их контролировать , тогда кто может?
Поэтому наш лучший выбор - найти решение, включающее только целые числа. К счастью, это легко, так как мы можем просто проверить все числа, потому что каждый интервал [1..n] содержит только конечное их количество, не так, как в действии crap aleph-1. Вот пример реализации в Haskell:
Работает как шарм, проверьте это:
Точность должна быть достаточной для большинства приложений.
источник
double
s, а DDG используетtriple
s.Джава
Самый точный способ сделать это - выполнить итерацию. Во-первых,
integer
переходите к s, пока не достигнете цели, затем переключитесь наdouble
s. Преимущество этого метода в том, что он точен , в отличие от других методов оценки, которые вы можете увидеть. Вы жертвуете скоростью, но для большинства приложений это именно то, что вам нужно.Вы можете изменить этот ответ в зависимости от того, насколько точным вы должны быть, но это должно работать по крайней мере с точностью до миллиардного:
источник
0.000000001
заключается в том, что он склонен к ошибкам округления. Я создал более точное решение в C ++.Math.nextUp(root)
вместо+0.000000001
? Это заняло бы гораздо больше времени ... и это гарантированно будет успешным.Double
и был удивлен, когда я не смог его найти. Не думал заглядыватьMath
, но это работает довольно хорошо. У меня еще ничего не было "провалилось".Javascript
Эти магические константы могут быть использованы для вычисления квадратного корня числа с использованием алфавита:
тесты:
Кажется, работает довольно хорошо. Интересно, есть ли более короткий путь?
источник
JavaScript
Очень сложная проблема!
Для этого в JavaScript нет встроенной функции ...
Похоже, работа для решателя Ньютона-Рафсона.
Теперь вы можете использовать
Math.sqrt
источник
JavaScript / ActionScript
Невозможно напрямую вычислить квадратный корень ни в ActionScript, ни в JavaScript, однако есть обходной путь. Вы можете получить квадратный корень из числа, подняв его до
1/2
степени.Вот как это будет выглядеть в JavaScript и ActionScript 2:
И хотя эта функция работает так же хорошо в ActionScript 3, я бы порекомендовал использовать типизированные переменные и возвращаемые значения для ясности и надежности:
Тролль:
источник
1/2 == 0
.Python 2.7
объяснение
квотирование
Википедия - квадратный корень
В математике квадратный корень числа a - это число y такое, что y 2 = a
Другими словами, каждое число является квадратным корнем некоторого другого числа.
Заметка
Этот вопрос для меня выглядит как хорошо известная головоломка. Как сделать линию короче, не потирая и не разрезая ее.
источник
PHP (и другие):
Поскольку способ, которым был описан вопрос, не означал, что нам действительно нужно его вычислить, вот мое решение:
Это позволяет точно рассчитать квадратный корень на нескольких языках.
Список языков может быть расширен.
Значение может быть отправлено через POST, GET, cookie или даже сохранено в сеансе.
Если вы предоставите только число, оно будет сбито с толку и даст вычисленный результат, который действителен для (почти) КАЖДОГО языка!
источник
С
Это лучше, чем все остальные 27 ответов, потому что все они неточны. Правильно, они дают только один ответ, когда должно быть 2. Этот даже не пытается ответить, если он будет неправильным, он просто сдается и округляется.
Код-троллинг:
for
зацикливание#define
использовать дляувеличениячитабельности√1024
возвращает3√1024 = ∓32
, что просто неправильно)источник
#define the number
... хороший! Мне понравились ваши рассуждения об условии для показа сообщения об использовании, в частности.C ++
основано на http://en.wikipedia.org/wiki/Fast_inverse_square_root и ответе @ snack.
За исключением того, что вместо преобразования в болванку способа преобразования x ^ (- 0.5) в x ^ (0.5) я изменил алгоритм, чтобы сделать это напрямую.
АЛГОРИТМ
Преобразуйте число с плавающей запятой (в нашем случае это double) в целое число (в нашем случае long long.)
Первые несколько битов числа с плавающей запятой являются экспонентой, то есть число сохраняется как 2 ^ AAA * 1.BBBBBBB. Так что сделайте смещение прав, и этот показатель уменьшен вдвое.
В исходном обратном квадратном корне это число было вычтено из константы для получения обратной величины. Я просто добавляю его к константе, потому что хочу напрямую получить квадратный корень. Значение константы выбрано, чтобы дать ответ, который является наилучшим приближением к желаемому значению.
Приведите число обратно к плавающей точке.
По желанию, одна или две итерации метода Ньютона могут быть использованы для улучшения результата, но я не стал беспокоиться, потому что хотел посмотреть, как близко я смогу добраться без него.
Используемые константы выглядят очень загадочно, но, кроме первых нескольких цифр, значения не являются критическими. Я нашел постоянную методом проб и ошибок. Я остановился, как только я получил значение, которое иногда недооценивали, а иногда переоценивали.
Полученные результаты
Преобразование необходимо только потому, что C не позволит вам выполнять операции битового сдвига с плавающей запятой, поэтому единственными реальными операциями являются битовый сдвиг и сложение. Я не использовал ни одной итерации метода Ньютона для улучшения результата, поэтому точность замечательна. Преподаватель ОП будет впечатлен скоростью метода, который (честно говоря) достаточно точен для многих целей!
источник
10
* 1.000
, sqrt (4) = 2 ^01
* 1.000
= 2, sqrt (2) = 2 ^00
* 1.100
= 1,5. Таким образом,1
бит, сдвинутый из показателя степени, дает мантиссу 1,5, что не далеко от истинного значения sqrt (2), которое составляет около 1,4. Но понятия не имею, как последовательно дает ответы с точностью лучше 3%.Е
Примечание: это работает только на моем компьютере, так как основные аппаратные средства не хранят числа в двоичной системе, но в базовых е, такой, что выглядит как
10
представляют е,100
представляет е е , и так далее. Таким образом, то, что вы могли бы на двоичной машине назвать смещением влево, выполняет x => e x , а то, что вы могли бы на двоичной машине назвать смещением вправо, выполняет x => ln x. Ясно, что трудно представить ее основные цифры на этой очень ограниченной, бинарно-ориентированной интернет-среде, но я прилагаю все усилия.Синтаксис E очень похож на синтаксис C / C ++, поэтому большинство людей должно легко его понять.
источник
n >> 1
это не то же самое, чтоlog(n)
.JavaScript / HTML / CSS
Я думал об использовании jQuery и идентификаторов, чтобы троллить немного больше, но я предпочитаю vanilla js.
Результат не совсем точен, но он работает!
источник
GeoGebra
Считайте значение вашего ответа с координатной оси.
Попробуйте онлайн здесь (требуется Java), или посмотрите скриншоты ниже:
источник
100% чистый bash (на основе целых чисел)
С презентацией ascii-art:
Этот идеальный квадрат должен быть получен в bash с помощью
source
командыСтарая (эта версия может быть просто вставлена в любой консольный терминал)
Будет работать как:
Обратите внимание: корень квадратный !!
источник
Джава
Спасибо, ggmx за код для генерации n цифр числа пи в java .
Не хотелось реализовывать ввод. Чтобы проверить изменение кода
sqrtThis
иexpectedPercision
.Вот как работает код. Во-первых, получить корень sqrt для целого числа тривиально, поэтому я не чувствовал, что реализую это, и вместо этого использовал javas, встроенный в sqrt fcn. Остальная часть кода на 100% законна, хотя.
Основная мысль,
так как pi - бесконечное длинное неповторяющееся десятичное число, все числовые последовательности должны встречаться в нем(читать редактировать). Поэтому ваш ответ внутри пи !! Таким образом, мы можем просто применить поиск регулярных выражений к пи в поиске вашего ответа. Если мы не сможем найти хороший ответ, тогда мы просто удвоим размер числа пи, по которому мы ищем!Это действительно легко, на самом деле можно сказать, что это так же просто, как пи :)
Доказано, что Edit Pi содержит в себе каждую последовательность конечных чисел. Тот факт, что число pi бесконечно и не повторяется, не является достаточным доказательством для такого утверждения, как доказано Экзелианом. Однако многие математики верят, что число pi содержит каждую последовательность конечных чисел.
источник
JQuery
этот самый точный (бонус: работает и для писем!)
Вот скрипка
источник
document.write
противостоит этому достаточно.C ++
Это в конечном итоге даст вам квадратный корень.
Я исправил код, чтобы лучше отразить вопрос. Спасибо за ваши предложения ... Код обновлен.
источник
x+=1e-16
?DBL_EPSILON
.питон
Это решение:
Спойлер:
Код:
источник
C ++
Ваш вопрос не компилируется, потому что вы положили! в конце. C ++ не нравится!
Вот правильный вопрос для компилятора:
Ох .. и сделать файл.
и 26317.def. Это должно уже присутствовать в вашем компиляторе
Да, кто-то может использовать -E для вывода правильного ответа препроцесса, но если вы знаете -E, вы также знаете, как получить квадратный корень. : P Вот некоторые предварительно обработанные. Очень плохое минимальное решение, без обязательной проверки, без подсказок. TIL этот триграф предварительно обработан.
источник