Biorąc pod uwagę a, b, c
długość trzech boków trójkąta, powiedzmy, czy trójkąt jest ustawiony pod kątem prostym (tj. Ma jeden kąt równy 90 stopni), czy nie.
Wejście
Trzy dodatnie wartości całkowite w dowolnej kolejności
Wynik
Albo specyficzny prawdziwe wyjścia ( true
, 1
, yes
, ...) lub wyjście specyficzny false ( false
, 0
, no
, ...)
Przykład
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
Zasady
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie .
- W swoim zgłoszeniu proszę podać prawdziwe i fałszywe wartości.
- Nie trzeba obsługiwać wartości ujemnych ani potrójnych niepoprawnych krawędzi
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
math
decision-problem
geometry
mdahmoune
źródło
źródło
21, 38, 5
, ponieważ 21 + 5 <38 . Czy to zamierzony przypadek patologiczny, z którym musimy sobie poradzić?Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Uwaga techniczna: bajty są liczone na stronie kodowej Jelly.
Wyjaśnienie:
Problem jest równoznaczny z
a, b, c
podaniem trzech liczb i pytaniem, czy istnieje taka permutacjaa² + b² = c²
. Jest to równoważne z tym, czy(a² + b² + c²) ÷ 2
jest jednym za², b² or c²
, więc program po prostu to sprawdza.źródło
²
iµ
kosztują dwa bajty w UTF-8, więc twój kod ma w rzeczywistości 7 bajtów, a nie 5Python 2 , 37 bajtów
Wypróbuj online!
-2 dzięki FlipTack .
-1 dzięki Craig Gidney .
Dane wyjściowe za pośrednictwem kodu wyjścia (
0
= fałsz,1
= prawda).źródło
exec(code)
hmmm, dlaczegoexec (code)
zamiastexec code
? : D ;-pJava 8, 44 bajty
Wyjaśnienie:
Wypróbuj tutaj.
źródło
(c*=c)
?*=
Może mieć precidence nad==
i można zaoszczędzić dwa bajty.==
ma pierwszeństwo przed*=
.=
,+=
,*=
Oraz inne podobne zadania faktycznie mają najniższy priorytet w operatorów Java .a
(na przykład), bez powodzenia. Cóż, mogłem to zrobić, ale około 65 znaków ...JavaScript (ES6),
434140 bajtówZapisałem 1 bajt i naprawiłem błąd dzięki @Neil
Pobiera dane wejściowe jako tablicę 3 liczb całkowitych. Zwraca
true
dla prostopadłych ifalse
innych.Pokaż fragment kodu
Wersja oryginalna, 44 bajty
Pobiera dane wejściowe jako 3 liczby całkowite. Zwraca
1
dla prostopadłych i0
innych.Przypadki testowe
Pokaż fragment kodu
źródło
=>
i->
różnicy między JavaScript i Java 8). ;) Tak oczywiste +1 ode mnie.>>1
jest niebezpieczne, zwraca wartość true dla[1, 1, 1]
.Math.hypot(...a,...a)==n*2
?~=
operator dla „z grubsza równego”;)Python 3 , 37 bajtów
Wypróbuj online!
Może wystąpić problem z precyzją ruchu przy dużych nakładach.
źródło
Trójkątny , 57 bajtów
Nie spotkałem się jeszcze z tym językiem i wydawało mi się, że warto spróbować. Trochę to zajęło ... ponieważ najpierw musiałem się tym zająć i wierzę, że można by jeszcze trochę zagrać w golfa.
Wypróbuj online!
To rozwija się do następującego trójkąta.
Ścieżka jest dość skomplikowana, ale postaram się wyjaśnić, co zrobiłem. Pominę wskaźniki kierunkowe. Większość kodu to manipulacja stosami.
$:*
Kwadrat pierwszego wejścia.$:*
Kwadrat drugiego wejścia.S":Ug!
Sprawdź, czy druga wartość jest większa niż pierwsza.p"
Zamień z pierwszym.p
Nie rób nic.$:*
Kwadrat trzeciego wejścia.P":USg!
Sprawdź, czy trzecia wartość jest większa od największej z poprzedniej.p+U-
sumuje bieżący stos i zabiera zapisaną trzecią wartośćp"U+-
suma najmniejsza i zapisana trzecia i odejmij od największej0=%
test równości do zera i wynik wyjściowy.źródło
Haskell (
333231 bajtów)Orginalna wersja:
Funkcja anonimowa. Pobiera listę w postaci [a, b, c]. Wyprowadza wartość True lub False.
Pierwsza wersja sprawdzała, czy suma kwadratów była dwukrotnością kwadratu maksimum.
Po drugie, nieco lepsza wersja sprawdza, czy połowa sumy kwadratów jest elementem na liście kwadratów.
Edycja: przypadkowo policzyłem nowy wiersz, dzięki H.PWiz
źródło
sum
można wyrzucić. fajne rozwiązanie!Perl 6 , 24 bajtów
Wypróbuj online!
*²+*²==*²
jest anonimową funkcją, która zwraca true, jeśli suma kwadratów pierwszych dwóch argumentów jest równa kwadratowi trzeciego argumentu. Do tej funkcji przekazujemy posortowaną listę danych wejściowych, spłaszczając ją do listy argumentów za pomocą|
.źródło
R , 31
2630bajtówNie podoba mi się ten, ale jest krótszy. Sumuje kwadraty i dzieli przez największy kwadrat. Prawda, jeśli 2.
Poprzednia wersja (zmodyfikowana za pomocą kota i końcówki @ Guiseppe)
Wykonaj sumę posortowanego wejścia z zanegowanym ostatnim elementem i zwróć
!
nie.Wypróbuj online!
źródło
!sort(scan())^2%*%c(1,1,-1)
jest 27 bajtów. ale myślę, że nadal potrzebujeszcat
.Brain-Flak , 68 bajtów
Wypróbuj online!
Wykorzystuje obserwację w odpowiedzi user202729.
źródło
C (gcc) , 49 bajtów
Wypróbuj online!
Poprawiono technikę Kevina Cruijssensa
Zwraca 0 dla poprawnego trójkąta, w przeciwnym razie wartość niezerową
źródło
MATL , 7 bajtów
Wypróbuj online!
Wyjaśnienie
Rozważ wejście
[12, 37, 35]
.źródło
Python 2 , 43 bajty
Wypróbuj online!
Python 2 ,
79706862 bajtówWypróbuj online!
źródło
A*A
jest krótszy ...-
zamiast==
.C,
6854 bajtówKorzystanie z rozwiązania user202729 .
Dzięki @Christoph za grę w golfa 14 bajtów!
Wypróbuj online!
C, 85 bajtów
Wypróbuj online!
źródło
1
dla parametrów,1, 1, 1
które są niepoprawne ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 bajtów
Pobiera dane wejściowe jako tablicę.
Spróbuj
źródło
J, 10 bajtów
-6 bajtów dzięki FrownyFrog
oryginalna odpowiedź
/:
posortuj kwadraty*:
, a następnie sprawdź, czy suma pierwszych dwóch+/@}:
równa się ostatniej{:
Wypróbuj online!
źródło
Trójkątność ,
4931 bajtówWypróbuj online!
Wyjaśnienie
Każdy program Trójkątności musi mieć trójkątne wypełnienie (przepraszam za kalambur). Oznacza to, że i- ta linia licząca od dołu programu musi być uzupełniona i-1 kropkami (
.
) z każdej strony. Aby trójkąty kropkowe były symetryczne i estetyczne, każda linia musi składać się z 2L - 1 znaków, gdzie L jest liczbą linii w programie. Usuwając znaki, które składają się na niezbędne wypełnienie, oto jak działa kod:Sprawdzanie, czy trójkąt jest ustawiony pod kątem prostym w trójkątności ...
źródło
PowerShell , 39 bajtów
Wypróbuj online!
Sortuje dane wejściowe i zapisuje je w
$a,$b,$c
zmiennych. Następnie używa twierdzenia Pitagorasa, aby sprawdzić, czya*a + b*b = c*c
. Dane wyjściowe to BooleanTrue
lubFalse
.źródło
JavaScript 34 bajty (bez D =)
źródło
a=>a.sort()[0]**2+a[1]**2==a[2]**2
w ES6. Więc podoba Ci się @DanielIndiesort()
używa kolejności leksykograficznej, gdy nie jest dostępne wywołanie zwrotne, co powoduje na przykład, że ten kod zawodzi[10,6,8]
.RProgN 2 , 10 bajtów
Wyjaśniono
Wypróbuj online!
źródło
Rakieta ,
6460 bajtówWypróbuj online!
Jak to działa
Testy jeśli
a^2 + b^2 + c^2
jest równa dwukrotności największaa^2
,b^2
ic^2
.Zwraca
#t
dla prostokątnych trójkątów i#f
dla wszystkich innych danych wejściowych.expt
.źródło
(define fun
musi być częścią kodu ...(define fun ...)
Na TIO jest tylko dla wygody: moglibyśmy równie dobrze użyć tej funkcji jako(... 3 4 5)
gdzie...
jest funkcja. (Więc możemy mieć nagłówek(print (
i stopkę,3 4 5))
jeśli wolisz.)#lang racket
do kodu; niektóre nie.)(max a b c)
niżlet
wiązanie, co? Nie sądzę, że krótsze byłoby wiązanie jako argument doλ
? A może nie ma wbudowanego potęgowania?(*(expt(max a b c)2)2)
?05AB1E , 6 bajtów
Wypróbuj online!
źródło
n{RÆ_
aby zapisać bajt.Ruby, 31 bajtów
Pobiera dane wejściowe jako listę 3 liczb całkowitych. Wykorzystuje pomysły z innych rozwiązań.
źródło
Julia 0.6 , 16 bajtów
Wypróbuj online!
Jak to działa
Niech x = [a, b, c] .
x⋅x
jest iloczynem iloczynu x i samego, więc daje a² + b² + c² .2x.*x
jest iloczynem elementarnym 2x i x , więc daje [2a², 2b², 2c²] .Na koniec
∈
sprawdza, czy liczba całkowita a² + b² + c² należy do wektora [2a², 2b², 2c²] , co jest prawdziwe iffa² + b² + c² = 2a² lub a² + b² + c² = 2b² lub a² + b² + c² = 2c² , co samo w sobie jest prawdziwe iff
b² + c² = a² lub a² + c² = b² lub a² + b² = c² .
źródło
Java (OpenJDK 8) , 68 bajtów
Wypróbuj online!
źródło
sort
zajmuje tablicę.TI-Basic,
131110 bajtówTeraz działa na dane wejściowe w dowolnej kolejności i jest również krótszy. Kolejne -1 dzięki @MishaLavrov
źródło
A=5
,B=4
,C=3
by nie być prawidłowo obsługiwane.)
, tomax(Ans=R►Pr(min(Ans),median(Ans
jest również poprawny (chociaż obliczenia, które tu wykonujemy, są inne) i są o jeden bajt krótsze.CJam, 9
Wypróbuj online
Wyjaśnienie:
źródło
Pari / GP ,
2924 bajtówWypróbuj online!
Oszczędność pięciu bajtów dzięki oczywistej zmianie z
norml2(v)
nav*v~
.Inspirowany innymi odpowiedziami.
Tutaj
v
może być wektorem rządlub wektora kolumnytrzech współrzędnych.Przykład zastosowania:
f([3,4,5])
Oczywiście, na przykład, otrzymujesz racjonalne długości boków
f([29/6, 10/3, 7/2])
.Jeśli nie liczę
f(v)=
części, to jest 19 bajtów. Pierwszą część można również napisaćv->
(łącznie 22 bajty).Objaśnienie: Jeżeli trzy współrzędne
v
sąx
,y
iz
, następnie produktemv
i jego transpozycjiv~
daje skalarnex^2+y^2+^z^2
i musimy sprawdzić, czy to jest równa dwukrotności kwadratu maksimum współrzędnychx
,y
,z
.Dodatkowo: Te same
f
testy dla poczwórnej Pitagorasa, jeśli wektor wejściowy ma cztery współrzędne i tak dalej.źródło
tio.run
linku . Jednak dużo przyjemniej jest po prostu zainstalować PARI / GP lokalnie.MS Excel, 49 bajtów
Anonimowa funkcja arkusza roboczego, która pobiera dane z zakresu [A1: C1] i wysyła je do komórki wywołującej.
źródło
Ohm v2 ,
86 bajtówWypróbuj online!
źródło