Etant donné a, b, c
la longueur des trois côtés d’un triangle, disons si le triangle est à angle droit (c’est -à- dire qu’un angle est égal à 90 degrés) ou non.
Contribution
Trois valeurs entières positives dans n'importe quel ordre
Sortie
Soit une sortie spécifique vrai ( true
, 1
, yes
, ...) ou une sortie de fausse spécifique ( false
, 0
, no
, ...)
Exemple
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
Règles
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
- Dans votre soumission, veuillez indiquer les valeurs vraies et fausses.
- Pas besoin de gérer des valeurs négatives ou un bord triple invalide
- Un programme complet ou une fonction sont acceptables. Si une fonction est utilisée, vous pouvez renvoyer le résultat plutôt que de l’imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent tester votre code!
- Les failles standard sont interdites.
- Il s’agit du code-golf, donc toutes les règles de golf habituelles s’appliquent et le code le plus court (en octets) gagne.
code-golf
math
decision-problem
geometry
mdahmoune
la source
la source
21, 38, 5
, car 21 + 5 <38 . Est-ce un cas pathologique intentionnel que nous devons traiter?Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Note technique: Les octets sont comptés dans la page de code Jelly.
Explication:
Le problème équivaut à recevoir trois chiffres
a, b, c
et à se demander s'il existe une permutation telle quea² + b² = c²
. Cela équivaut à savoir si(a² + b² + c²) ÷ 2
est l' una², b² or c²
, de sorte que le programme vérifie que juste.la source
²
etµ
coûtent deux octets chacun en UTF-8, votre code a donc 7 octets, et non pas 5Python 2 , 37 octets
Essayez-le en ligne!
-2 grâce à FlipTack .
-1 merci à Craig Gidney .
Sorties via le code de sortie (
0
= false,1
= true).la source
exec(code)
hmmm, pourquoiexec (code)
au lieu deexec code
? : D ;-pJava 8, 44 octets
Explication:
Essayez-le ici.
la source
(c*=c)
? Il se*=
peut que vous ayez une précision sur le==
et vous pouvez économiser deux octets.==
a priorité sur*=
.=
,+=
,*=
Et missions similaires ont effectivement la priorité la plus faible des opérateurs Java .a
(par exemple), sans succès. Eh bien, je pourrais le faire, mais environ 65 caractères ...JavaScript (ES6),
434140 octetsEnregistré 1 octet et corrigé un bug grâce à @Neil
Prend les entrées sous forme de tableau de 3 entiers. Retourne
true
pour les angles droits etfalse
autres.Afficher l'extrait de code
Version originale, 44 octets
Prend l'entrée sous forme de 3 entiers. Retourne
1
pour les angles droits et0
autres.Cas de test
Afficher l'extrait de code
la source
=>
et->
différence entre JavaScript et Java 8). ;) Si évident +1 de moi.>>1
est dangereux, cela retourne vrai pour[1, 1, 1]
.Math.hypot(...a,...a)==n*2
vous~=
opérateur pour "grossièrement égal";)Python 3 , 37 octets
Essayez-le en ligne!
Peut rencontrer des problèmes de précision float avec de grandes entrées.
la source
Triangulaire , 57 octets
Je n'en ai pas encore vu dans cette langue et il semblait approprié d'essayer d'en faire une. Cela a pris un peu ... car je devais commencer par comprendre et je crois que cela pourrait être joué au golf un peu plus.
Essayez-le en ligne!
Cela s'étend au triangle suivant.
Le chemin est assez compliqué, mais je vais essayer d’expliquer ce que j’ai fait. Je vais sauter les pointeurs directionnels. La majeure partie du code est une manipulation de pile.
$:*
Place la première entrée.$:*
Place la deuxième entrée.S":Ug!
Teste si la deuxième valeur est supérieure à la première.p"
Échanger avec le premier.p
ne rien faire.$:*
Place la troisième entrée.P":USg!
Teste si la troisième valeur est supérieure à la plus grande de la précédente.p+U-
somme de la pile actuelle et enlève la troisième valeur stockéep"U+-
somme le moins et stocké troisième et soustrayez du plus grand0=%
teste l'égalité à zéro et le résultat en sortie.la source
Haskell (
333231 octets)Version originale:
Fonction anonyme. Prend une liste sous la forme [a, b, c]. Sorties Vrai ou Faux.
Première version vérifiée si la somme des carrés était le double du carré du maximum.
Deuxièmement, une version légèrement meilleure vérifie si la moitié de la somme des carrés est un élément de la liste des carrés.
Edit: Accidentellement compté une nouvelle ligne, merci H.PWiz
la source
sum
peuvent être jetées. belle solution!Perl 6 , 24 octets
Essayez-le en ligne!
*²+*²==*²
est une fonction anonyme qui retourne vrai si la somme des carrés de ses deux premiers arguments est égale au carré de son troisième argument. Nous passons la liste des entrées triées à cette fonction, en l'aplatissant dans la liste des arguments avec|
.la source
R , 31
2630octetsJe n'aime pas autant celui-ci, mais il est plus court. Somme les carrés et divise par le plus grand carré. Vérité si 2.
Version précédente (modifiée avec le chat et avec le conseil de @ Guiseppe)
Faites une somme de l'entrée triée avec le dernier élément annulé et renvoyez le
!
non.Essayez-le en ligne!
la source
!sort(scan())^2%*%c(1,1,-1)
27 octets. mais je pense que vous avez encore besoin d'uncat
.Brain-Flak , 68 octets
Essayez-le en ligne!
Utilise l'observation dans la réponse de user202729.
la source
C (gcc) , 49 octets
Essayez-le en ligne!
Améliore la technique de Kevin Cruijssens
Retourne 0 pour un triangle valide et une valeur différente de zéro sinon
la source
MATL , 7 octets
Essayez-le en ligne!
Explication
Considérez l'entrée
[12, 37, 35]
.la source
Python 2 , 43 octets
Essayez-le en ligne!
Python 2 ,
79706862 octetsEssayez-le en ligne!
la source
A*A
est plus court ...-
au lieu de==
.C,
6854 octetsUtilisation de la solution de user202729 .
Merci à @Christoph d'avoir joué au golf 14 octets!
Essayez-le en ligne!
C, 85 octets
Essayez-le en ligne!
la source
1
paramètres1, 1, 1
sont incorrects ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 octets
Prend les entrées sous forme de tableau.
L'essayer
la source
J, 10 octets
-6 octets grâce à FrownyFrog
réponse originale
/:
trier les carrés*:
, puis vérifier si la somme des deux premiers+/@}:
est égale à la dernière{:
Essayez-le en ligne!
la source
Triangularité ,
49 à31 octetsEssayez-le en ligne!
Explication
Chaque programme de triangularité doit avoir un rembourrage triangulaire (excusez le jeu de mots). C'est-à-dire que la i ème ligne à compter du bas du programme doit être complétée avec i - 1 points (
.
) de chaque côté. Afin de garder les triangles de points symétriques et esthétiquement agréables, chaque ligne doit comporter 2L - 1 caractères, L étant le nombre de lignes du programme. En supprimant les caractères qui composent le remplissage nécessaire, voici comment le code fonctionne:Vérifier si un triangle est à angle droit dans Triangularity ...
la source
PowerShell , 39 octets
Essayez-le en ligne!
Trie l'entrée, la stocke dans des
$a,$b,$c
variables. Utilise ensuite le théorème de Pythagore pour vérifier sia*a + b*b = c*c
. La sortie est soit booléenneTrue
soitFalse
.la source
JavaScript 34 octets (sans D =)
la source
a=>a.sort()[0]**2+a[1]**2==a[2]**2
dans ES6. Donc, les accessoires pour vous @DanielIndiesort()
utilise l'ordre lexicographique lorsqu'aucun rappel n'est fourni, faisant échouer ce code par exemple pour[10,6,8]
.RProgN 2 , 10 octets
A expliqué
Essayez-le en ligne!
la source
Raquette ,
6460 octetsEssayez-le en ligne!
Comment ça fonctionne
Teste si
a^2 + b^2 + c^2
est égal à la plus grande deux foisa^2
,b^2
etc^2
.Retourne
#t
pour les triangles rectangles et#f
pour toutes les autres entrées.expt
.la source
(define fun
doit faire partie du code ...(define fun ...)
TIO sur est simplement pour plus de commodité: nous pourrions tout aussi bien utiliser cette fonction que la fonction(... 3 4 5)
où elle...
est. (Nous pourrions donc avoir une tête(print (
et un pied de page3 4 5))
si vous préférez.)#lang racket
dans le code; d'autres non.)(max a b c)
qu'à faire unelet
liaison, hein? Je ne suppose pas qu'il serait plus court de se lier comme un argument à unλ
? Ou n'y a-t-il pas une exponentiation intégrée?(*(expt(max a b c)2)2)
?05AB1E , 6 octets
Essayez-le en ligne!
la source
n{RÆ_
pour sauvegarder un octet.Ruby, 31 octets
Prend la saisie sous forme de liste de 3 entiers. Utilise des idées d'autres solutions.
la source
Julia 0.6 , 16 octets
Essayez-le en ligne!
Comment ça fonctionne
Soit x = [a, b, c] .
x⋅x
est le produit scalaire de x et de lui-même, il donne donc a² + b² + c² .2x.*x
est le produit élément par 2x et x , donc il donne [2a², 2b², 2c²] .Enfin,
∈
vérifie si le nombre entier a² + b² + c² appartient au vecteur [2a², 2b², 2c²] , ce qui est vrai si et seulement sia² + b² + c² = 2a² ou a² + b² + c² = 2b² ou a² + b² + c² = 2c² , ce qui est vrai si et seulement si
b² + c² = a² ou a² + c² = b² ou a² + b² = c² .
la source
Java (OpenJDK 8) , 68 octets
Essayez-le en ligne!
la source
sort
prend un tableau.TI-Basic,
131110 octetsFonctionne maintenant pour les entrées dans n’importe quel ordre et est également plus court. Un autre -1 grâce à @MishaLavrov
la source
A=5
,B=4
,C=3
ne serait pas manipulé correctement.)
, alorsmax(Ans=R►Pr(min(Ans),median(Ans
est également valide (bien que le calcul que nous effectuons ici soit différent) et ait un octet plus court.CJam, 9
Essayez-le en ligne
Explication:
la source
Pari / GP ,
29 à24 octetsEssayez-le en ligne!
Sauvegardé cinq octets par un changement évident de
norml2(v)
àv*v~
.Inspiré par d'autres réponses.
Ici, il
v
doit s'agir d'un vecteur ligneou d'un vecteur colonneavec trois coordonnées.Exemple d'utilisation:
f([3,4,5])
Bien sûr, vous obtenez des longueurs de côté rationnelles gratuitement, par exemple
f([29/6, 10/3, 7/2])
.Si je ne compte pas la
f(v)=
partie, c'est 19 octets. La première partie peut également être écritev->
(total 22 octets).Explication: Si les trois coordonnées
v
sontx
,y
etz
, alors le produitv
et sa transpositionv~
donne un scalairex^2+y^2+^z^2
, et nous devons vérifier si cela est égal à deux fois la place du maximum des coordonnéesx
,y
,z
.Extra: Les mêmes
f
tests pour un quadruple de Pythagore si votre vecteur d’entrée a quatre coordonnées, et ainsi de suite.la source
tio.run
lien . Cependant, il est bien plus agréable d’installer PARI / GP localement.MS Excel, 49 octets
Fonction de feuille de travail anonyme qui prend des entrées dans la plage [A1: C1] et les envoie à la cellule appelante.
la source
Ohm v2 ,
86 octetsEssayez-le en ligne!
la source