Кто не любит теорему Пифагора a² + b² = c²? Напишите самый короткий метод, который вы можете, на любом языке, который принимает значения a и b и печатает «Гипотенуза этого прямоугольного треугольника» + c. Держите с только три знака после запятой.
14
code-golf
теге прямо сказано: «Code-golf - это соревнование для решения конкретной проблемы в наименьшем количестве байтов исходного кода». См. Скоринг кода Гольф (байты против символов) .Ответы:
APL (54)
Тестовое задание:
Объяснение:
⎕*2
: повысить значения на входе до второй степени+/
: взять сумму.5*⍨
: поднять результат до 0,5 степени3⍕
: округлить до 3 знаков после запятойисточник
TI-BASIC,
76555352 байтаНет, закрывающие скобки не требуются. Кроме того, меньше байтов, чем ответ APL :)
источник
R▶Pr(A,B
.Fix 3:R►Pr(X,Y
Input
чтобы проситьX
иY
довольно забавно. Если мы допустим это, должны ли мы также разрешить установкуPolarGC
раньшеInput
, чтобы длина гипотенузы определялась однобайтовымR
? Следует признать,PolarGC
что значенияX
иY
больше не отображаются, когда мы перемещаем курсор, но они все еще сохраняются в соответствующих переменных. (То, что мы тогда никогда бы не использовали, но это мысль, которая имеет значение.)Python 2.7 - 76 символов
объяснение
| а + И.Б. | = √ (a 2 + b 2 ) = c
==> a 2 + b 2 = c 2
ПЖ на гипотенузе
источник
Скриптинг , 46 знаков
Ожидается ввод в виде двух чисел (может быть дробным!), Разделенных пробелом.
Это короче, чем APL, несмотря на необходимость использовать несколько неудобных приемов.
объяснение
источник
DC 54
Касательная оценка APL ответ!
Тестовое задание:
источник
dc -e '2^r2^+3kv[The hypotenuse of this right triangle is ]Pp'
не ждет ввода, печатает"dc: stack empty"
3 раза и затем «Гипотенуза этого прямоугольного треугольника равна 2.000».dc -e '3 4 2^r2^+3kv[...
где 3 и 4 - параметры.С, 77 или 99
77 символов, если на входе могут быть только аргументы функции:
99, если вход должен быть прочитан из стандартного ввода:
Большое спасибо @Yimin Rong!
источник
Powershell
Просто чтобы посмотреть, смогу ли я ...
источник
Read-Host
.Рубин,
949082 символаОбновление (спасибо за комментарии):
источник
a**0.5
вместо длинныхMath.sqrt(a)
. И пространство послеp
также может быть удалено.%(Math...)
.MATLAB
7974источник
Python 2,7 - 80 символов
источник
C ++ - 90
источник
pow(a,2)
когда ты можешь сделатьa*a
? Я также не уверен, что понимаю назначение пола, а также +.5 и умножение и деление на 1000Perl 6 (
6874 байта){}
объявляет лямбда-функцию.[+]
является оператором суммы,X**
является кросс-степенным оператором (например,1, 2 X+ 10, 20
дает11, 21, 12, 22
). В этом случае кросс-степенной оператор принимает один аргумент, поэтому результат имеет ту же длину, что и@_
.@_
содержит все аргументы функции.Если запрещено использовать функцию, которая может принимать неправильное количество аргументов (небезопасно), ее можно заменить
[+] @_ X**2
на$^a**2+$^b**2
, где$^a
и$^b
являются аргументами-заполнителями.источник
Javascript (97)
источник
C, 100 символов (опережает другое решение C на 1!)
Смешно неэффективный алгоритм.
источник
ДЕЛЬФИ / ПАСКАЛЬ
С отступом (157)
источник
integer
наint16
Вы не должны включать первые 2 строки для своего ответа, и вы можете удалить пробелы. делать все, что дает вам 106 символов.EcmaScript 6,
8279Использование:
Обновление: переключиться на
Math.hypot()
источник
Golfscript (
69 67 6665)Это было бы намного проще, если бы плавающая точка фактически поддерживалась без использования обходных путей ... :)
Ссылка для проверки .
источник
2.!~
когда2-1
короче?the difference between
2-1 и2-1
ошибаюсь, поэтому, вероятно, был временно сбит с толку :) Исправлено, спасибо.Python 2 (79)
источник
math
некоторых сбережений.(a*a+b*b)**.5
def
сохранением новой строки и отступа.AWK -
8478 персонажейСпасибо Васи за предложение оператора ^ и удаление ()!
например
источник
{printf"The hypotenuse of this right triangle is %.3f\n",($1^2+$2^2)^.5}
PowerShell: 111
Гольф-код
Прохождение
1..2|%{sv $_ (read-host)};
В интерактивном режиме получает два ввода от пользователя и сохраняет их в $ 1 и $ 2. Может быть в состоянии сократить некоторую длину, используя вместо этого аргументы или входные данные конвейера."The hypotenuse of this right triangle is
Требуемый текст в выходных данных, в соответствии со спецификацией задачи.$(
...)"
Блок инкапсулированного кода будет обработан как скрипт перед включением в вывод."{0:N3}"-f
Форматирует вывод следующего бита кода как число, состоящее ровно из трех цифр после десятичной точки.[math]::sqrt(
...)
Получает квадратный корень инкапсулированного значения.$1/1*$1+$2/1*$2
Служит нашим "a ^ 2 + b ^ 2". Умножение числа само по себе является кратчайшим способом возвести его в PowerShell, но сначала необходимо разделить переменные на 1, чтобы привести их к целым числам. В противном случае они обрабатываются как текст, и 3 * 3 + 4 * 4 будет 3334444 вместо 25.источник
JavaScript: 83
В настоящее время самая короткая реализация JS, использующая
stdin
: DРаботает только в Firefox 27.0+ (EcmaScript 6)
JavaScript: 78
Если мы можем использовать только две переменные (как это делают многие сценарии):
источник
постоянный ток, 55
источник
Ява, 112
(Также печатает ошибку «Нет такого метода», хотя я не уверен, что это противоречит правилам)
Ява, 149
(Нет ошибок)
источник
C #
Только метод (114)
Полная программа (171)
Полная программа (без использования метода - 141)
источник
JavaScript
11810693В отличие от решения @ micha, моя функция принимает две переменные через функцию и отправляет предупреждение о результате.
function(a,b){m=Math;c=d=>d*d,e=1e3;alert("The hypotenuse of this right triangle is "+m.round(m.sqrt(c(a)+c(b))*e)/e)}
function(a,b){e=1e3;alert("The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e)}
На помощь пришла жирная стрела!
h=(a,b,e=1e3)=>"The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e
источник
c()
. ПсевдонимMath
не сохраняет байты в вашем случае.c64 basic v2,
6066 байтСкриншот:
Как это попробовать.
источник
R,
6176 байтcat
отображает его содержимое на STDOUT.scan()
Функция принимает ввод пользователя с клавиатуры. Этот вход существует как вектор, к которому^2
применяется (^
функция векторизована), иsum()
суммирует элементы вектора.sqrt
выводит квадратный корень, который округляется до 3 знаков после запятойround(,3)
Спасибо @caird coinheringaahing за то, что заметил, что предыдущий ответ не округлился.
источник
ARBLE , 73 байта
Попробуйте онлайн!
источник
sqrt(a^2+b^2)
, у этого есть много ненужного образца.OML , 57 байт
Попробуйте онлайн!
Часть 1
Это просто выводит строку
Часть 2
источник
Желе , 32 символа
Попробуйте онлайн!
Вероятно, есть лучшее сжатие строк, которое позволяет мне обходиться без необходимости соединяться с пробелами, но у меня были проблемы с его поиском.
Объяснение:
источник
only three decimal places
значитless than or equal to three decimal places
, вывод выглядит нормально.