Учитывая a, b, c
длину трех сторон треугольника, скажем, является ли треугольник прямоугольным (то есть имеет один угол, равный 90 градусам) или нет.
вход
Три положительных целых значения в любом порядке
Выход
Либо конкретный истинный выход ( true
, 1
, yes
...) или выход конкретной лжи ( false
, 0
, no
...)
пример
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
правила
- Ввод и вывод может быть дан в любом удобном формате .
- В своем представлении, пожалуйста, укажите истинные и ложные значения.
- Нет необходимости обрабатывать отрицательные значения или неверные тройные ребра
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
math
decision-problem
geometry
mdahmoune
источник
источник
21, 38, 5
, потому что 21 + 5 <38 . Это преднамеренный патологический случай, который мы должны обработать?Ответы:
Желе , 5 байт
Попробуйте онлайн!
Техническое примечание: байты учитываются в кодовой странице Jelly.
Объяснение:
Задача эквивалентна заданию трех чисел
a, b, c
и выяснению, существует ли такая перестановкаa² + b² = c²
. Это эквивалентно тому,(a² + b² + c²) ÷ 2
является ли оно одним изa², b² or c²
, поэтому программа просто проверяет это.источник
²
иµ
стоимость двух байтов каждый в UTF-8, так что ваш код на самом деле имеет 7 байтов, а не 5Python 2 , 37 байт
Попробуйте онлайн!
-2 благодаря FlipTack .
-1 спасибо Крейгу Гидни .
Выходы через код выхода (
0
= ложь,1
= истина).источник
exec(code)
, почемуexec (code)
вместоexec code
? : D ;-pJava 8, 44 байта
Объяснение:
Попробуй это здесь.
источник
(c*=c)
?*=
Может иметь precidence над==
и вы можете сохранить два байта.==
имеет приоритет над*=
.=
,+=
,*=
, И подобные задания на самом деле имеют самый низкий приоритет в Java операторов .a
(например), но безуспешно. Ну, я мог бы сделать это, но около 65 символов ...JavaScript (ES6),
434140 байтСохранено 1 байт и исправлена ошибка благодаря @Neil
Принимает ввод как массив из 3 целых чисел. Возвращает
true
для прямоугольных иfalse
других.Показать фрагмент кода
Оригинальная версия, 44 байта
Вводит как 3 целых числа. Возвращает
1
для прямоугольных и0
других.Контрольные примеры
Показать фрагмент кода
источник
=>
и->
разница между JavaScript и Java 8). ;) Так что очевидно +1 от меня.>>1
небезопасно, это возвращает истину для[1, 1, 1]
.Math.hypot(...a,...a)==n*2
?~=
оператор для «грубого равенства»;)Python 3 , 37 байт
Попробуйте онлайн!
Возможно, возникнут проблемы с плавающей точностью при больших входах.
источник
Треугольный , 57 байтов
Я еще не видел ни одного на этом языке, и было бы уместно попробовать сделать это. Это заняло немного ... поскольку я должен был сначала обдумать это, и я полагаю, что это могло бы быть гольфом еще немного.
Попробуйте онлайн!
Это расширяется до следующего треугольника.
Путь довольно запутанный, но я постараюсь объяснить, что я сделал. Я пропущу указатели направления. Большая часть кода - манипулирование стеком.
$:*
Квадрат первого входа.$:*
Квадрат второй вход.S":Ug!
Проверьте, больше ли второе значение, чем первое.p"
своп с первым.p
Ничего не делай.$:*
Квадрат третий вход.P":USg!
Проверьте, не превышает ли третье значение наибольшее из предыдущих.p+U-
сумма текущего стека и удаление сохраненного третьего значенияp"U+-
сумма наименьшего и хранится третье и вычитать из наибольшего0=%
проверить равенство нулю и выходной результат.источник
Haskell (
333231 байт)Оригинальная версия:
Анонимная функция. Принимает список в виде [a, b, c]. Выходы True или False.
Первая версия проверила, была ли сумма квадратов в два раза больше квадрата максимума.
Во-вторых, немного лучшая версия проверяет, является ли половина суммы квадратов элементом списка квадратов.
Редактировать: случайно пересчитал перевод строки, спасибо H.PWiz
источник
sum
могут быть выброшены. отличное решение!Perl 6 , 24 байта
Попробуйте онлайн!
*²+*²==*²
является анонимной функцией, которая возвращает true, если сумма квадратов первых двух аргументов равна квадрату третьего аргумента. Мы передаем отсортированный входной список этой функции, уплощая его в список аргументов с помощью|
.источник
R , 31
2630байтМне этот не очень нравится, но он короче. Суммирует квадраты и делит на самый большой квадрат. Правда если 2.
Предыдущая версия (модифицированная с помощью cat и с подсказкой @ Guiseppe)
Сделайте сумму отсортированного ввода с последним отрицательным элементом и верните
!
not.Попробуйте онлайн!
источник
!sort(scan())^2%*%c(1,1,-1)
это 27 байт. но я думаю тебе все еще нужнаcat
.Brain-Flak , 68 байт
Попробуйте онлайн!
Использует наблюдение в ответе пользователя 202729.
источник
C (gcc) , 49 байтов
Попробуйте онлайн!
Улучшает технику Кевина Круйссенса
Возвращает 0 для правильного треугольника и ненулевое значение в противном случае
источник
MATL , 7 байт
Попробуйте онлайн!
объяснение
Рассмотрим ввод
[12, 37, 35]
.источник
Python 2 , 43 байта
Попробуйте онлайн!
Python 2 ,
79706862 байтаПопробуйте онлайн!
источник
A*A
короче ...-
вместо==
.C
6854 байтаИспользуя решение user202729 .
Спасибо @Christoph за игру в гольф 14 байтов!
Попробуйте онлайн!
C 85 байт
Попробуйте онлайн!
источник
1
по параметрам1, 1, 1
которых неверны ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 байт
Принимает ввод в виде массива.
Попробуй
источник
J, 10 байт
-6 байт благодаря FrownyFrog
оригинальный ответ
/:
отсортировать квадраты*:
, а затем проверить,+/@}:
равна ли сумма первых двух последним{:
Попробуйте онлайн!
источник
Треугольность ,
4931 байтПопробуйте онлайн!
объяснение
У каждой программы треугольности должно быть треугольное заполнение (извините за каламбур). То есть i- я строка, считая от нижней части программы, должна быть дополнена i - 1 точками (
.
) с каждой стороны. Чтобы точки-треугольники оставались симметричными и эстетически приятными, каждая строка должна состоять из 2L - 1 символов, где L - количество строк в программе. Удаление символов, которые составляют необходимый отступ, вот как работает код:Проверка, является ли треугольник прямоугольным в Треугольности ...
источник
PowerShell , 39 байт
Попробуйте онлайн!
Сортирует входные данные, сохраняет их в
$a,$b,$c
переменных. Затем использует теорему Пифагора, чтобы проверить, является лиa*a + b*b = c*c
. Вывод либо логический,True
либоFalse
.источник
JavaScript 34 байта (без D =)
источник
a=>a.sort()[0]**2+a[1]**2==a[2]**2
в ES6. Так что реквизит вам @DanielIndiesort()
использует лексикографический порядок, когда обратный вызов не предоставляется, что делает этот код неудачным, например, для[10,6,8]
.RProgN 2 , 10 байт
Разъяснения
Попробуйте онлайн!
источник
Ракетка ,
6460 байтПопробуйте онлайн!
Как это устроено
Тесты , если
a^2 + b^2 + c^2
равно удвоенному самый большой изa^2
,b^2
иc^2
.Возвращает
#t
для правильных треугольников и#f
для всех других входов.expt
.источник
(define fun
должно быть частью кода ...(define fun ...)
На TIO только для удобства: мы одинаково хорошо могли бы использовать эту функцию,(... 3 4 5)
когда...
функция. (Таким образом, мы могли бы иметь верхний(print (
и нижний колонтитулы,3 4 5))
если хотите).#lang racket
в код; некоторые - нет.)(max a b c)
чем делатьlet
переплет, да? Я не думаю, что это будет короче, чтобы связать в качестве аргументаλ
? Или нет встроенного возведения в степень?(*(expt(max a b c)2)2)
?05AB1E , 6 байтов
Попробуйте онлайн!
источник
n{RÆ_
чтобы сохранить байт.Рубин, 31 байт
Вводит в виде списка из 3 целых чисел. Использует некоторые идеи из других решений.
источник
Юлия 0,6 , 16 байт
Попробуйте онлайн!
Как это устроено
Пусть x = [a, b, c] .
x⋅x
является точечным произведением x и самого себя, поэтому оно дает ² + b² + c² .2x.*x
является поэлементным произведением 2x и x , поэтому оно дает [2a², 2b², 2c²] .Наконец,
∈
проверяется, принадлежит ли целое число a² + b² + c² к вектору [2a², 2b², 2c²] , что верно, еслиa² + b² + c² = 2a² или a² + b² + c² = 2b² или a² + b² + c² = 2c² , что само по себе верно, если
b² + c² = a² или a² + c² = b² или a² + b² = c² .
источник
Java (OpenJDK 8) , 68 байт
Попробуйте онлайн!
источник
sort
принимает массив.TI-Basic,
131110 байтТеперь работает для входов в любом порядке, а также короче. Еще -1 благодаря @MishaLavrov
источник
A=5
,B=4
,C=3
не будет правильно обработан.)
,max(Ans=R►Pr(min(Ans),median(Ans
оно также допустимо (хотя вычисления, которые мы здесь делаем, отличается) и на один байт короче.CJam, 9
Попробуйте онлайн
Объяснение:
источник
Пари / ГП ,
2924 байтаПопробуйте онлайн!
Сохранено пять байтов за счет очевидного изменения с
norml2(v)
наv*v~
.Вдохновлен другими ответами.
Здесь
v
должен быть вектор строкиили вектор столбцас тремя координатами.Пример использования:
f([3,4,5])
Конечно, вы получаете рациональные длины сторон бесплатно, например
f([29/6, 10/3, 7/2])
.Если я не считаю
f(v)=
часть, то это 19 байтов. Первая часть также может быть записанаv->
(всего 22 байта).Объяснение: Если три координат
v
являютсяx
,y
иz
, тем произведениеv
и его транспозицияv~
дает скалярx^2+y^2+^z^2
, и мы должны проверить, что равно удвоенный квадрат максимума координатx
,y
,z
.Дополнительно: те же
f
тесты для пифагорейской четверки, если ваш входной вектор имеет четыре координаты и так далее.источник
tio.run
ссылку . Однако гораздо приятнее просто установить PARI / GP локально.MS Excel, 49 байт
Функция анонимного рабочего листа, которая принимает входные данные из диапазона [A1: C1] и выводит их в вызывающую ячейку.
источник
Ом v2 ,
86 байтПопробуйте онлайн!
источник