Pythagore s'est fait exploser la jambe pendant la guerre. Il a dû être amputé et, bien qu'il ait failli mourir, il s'en est tiré et s'est complètement rétabli. Maintenant, après un an de marche avec des béquilles, il a le privilège de se faire faire une prothèse de jambe! La chose est, cependant, il y en a plusieurs qui correspondent, mais lesquels?
La tâche
Si vous entrez un nombre entier positif correspondant à la longueur d'une jambe d'un triple de Pythagore, affichez toutes les possibilités pour l'autre jambe. Par exemple, le plus petit triple de Pythagore est (3,4,5), qui forme un triangle avec deux jambes de longueur 3 et 4 et une hypoténuse de longueur 5.
Exemples
Leg:5
12
Leg:28
21
45
96
195
Leg:101
5100
Leg:1001
168
468
660
2880
3432
4080
5460
6468
10200
38532
45540
71568
501000
Les règles
- L'entrée sera un seul entier positif
n
. - La sortie peut être dans n’importe quel ordre, avec n’importe quel délimiteur, dans n’importe quelle base (même si cette base doit être cohérente), avec des accolades optionnelles pour l’ouverture et la fermeture et des espaces de fin optionnels. C'est-à-
1 2 3
dire[1,2,3]
, et que1,11,111
tous correspondent à cette spécification de sortie. - Vous pouvez supposer que
n
ne dépassera jamais le quart de la quatrième racine de la limite de votre langue (sans utiliser de bibliothèques). En pratique, vous pouvez supposer que l’entrée sera inférieure ou égale à 10 000, la valeur la moins élevée étant retenue.
Pythagore vous attend, alors mieux vaut écrire votre code rapidement et brièvement!
Réponses:
Pyth - 13 octets
Brute force tous les possibles jusqu'à
n^2+1
.Suite de test .
la source
Gelée , 8 octets
Cette réponse est non compétitive, car elle utilise des fonctionnalités qui ont été mises en œuvre après la publication du défi. Essayez-le en ligne!
Cette approche n'utilise pas de calcul en virgule flottante, elle donnera donc la bonne réponse tant que les listes intermédiaires pourront être mémorisées.
Idée
Si (a, b, c) est un triple de Pythagore, il existe des entiers strictement positifs k, m, n tels que l'égalité définie {a, b} = {km 2 - kn 2 , 2kmn} est vérifiée .
En particulier, cela signifie que a <b 2 et b <a 2 , donc pour l'entrée a, nous pouvons simplement vérifier si a 2 + b 2 est un carré parfait pour chaque b dans {1,… a 2 } .
Code
la source
Julia, 35 octets
C'est une fonction anonyme qui accepte un entier et retourne un tableau.
Pour chaque valeur
i
allant de 1 à l'entrée au carré, nous calculons l'hypoténuse à l'aide de la fonction intégrée de Juliahypot
et déterminons si la partie fractionnaire est 0. Si c'est le cas, nous la conservons, sinon elle est exclue.la source
CJam, 17 octets
C'est une fonction anonyme qui extrait un entier de la pile et laisse un tableau en retour.
Essayez-le en ligne!
Idée
Si (a, b, c) est un triple de Pythagore, il existe des entiers strictement positifs k, m, n tels que l'égalité définie {a, b} = {km 2 - kn 2 , 2kmn} est vérifiée .
En particulier, cela signifie que a <b 2 et b <a 2 , donc pour l’entrée a nous pouvons simplement vérifier si a 2 + b 2 est un carré parfait pour chaque b dans {1,… a 2 } .
Code
la source
JavaScript ES6, 60
62Identique aux autres réponses, en vérifiant de 1 à a * a-1
Merci à @ Mwr247 le le plus de créer une gamme dans ES6
2 octets enregistrés thx @ETHproductions
la source
a=>[...Array(a*a).keys()].filter(b=>b&&!(Math.hypot(a,b)%1))
C, 96 octets
Incrémentez alternativement
y
(l'autre jambe) etz
(l'hypoténuse) jusqu'à ce que leur différence chute à 1. Affichez chaque correspondance exacte (c==0
) que vous rencontrez en chemin.Appelez le programme compilé avec n comme paramètre; il produira une liste de nombres décimaux séparés par des espaces.
Évidemment pas le plus court; Je peux trouver du réconfort en ayant le plus rapide.
la source
Wolfram Language (Mathematica) , 40 octets
J'utilise une forme non documentée
Solve
: lorsque la liste de variables est omise, laSolve
résolution par défaut de tous les symboles de l'expression est résolue. Nous économisons ainsi 6 octets sur le plus régulierSolve[#^2+b^2==c^2,{b,c},PositiveIntegers]
.PositiveIntegers
est nouveau dans la version 12 de Mathematica et n'est donc pas disponible dans TIO . Dans Mathematica, nous obtenonsla source
Python 2, 53 octets
Une solution simple en utilisant complexe
abs
pour calculer la longueur de l'hypoténuse. C'est sûr d'utilisern*n
comme limite supérieure pour l'autre jambe parce que(n*n)^2 + n^2 < (n*n+1)^2
. J'ai essayé d'utiliser la récursivité à la place, mais rien de plus court.la source
Sérieusement, 20 octets
Même stratégie que la réponse Python de xnor:
i in range(1,n*n)
recherchez les valeurs oùabs(i+nj) % 1 == 0
et affichez la liste.Essayez-le en ligneExplication:
la source
PARI / GP, 36 octets
la source
APL (NARS), 373 caractères, 746 octets
commentaire:
L'idée serait de prendre en compte l'entrée pour connaître le m possible, n générant en utilisant tout le triple de Pythagore ayant l'entrée comme jambe. Tester:
la source
APL (Dyalog Extended) ,
15SBCS de 14 octetsFonction de préfixe tacite anonyme.
Essayez-le en ligne!
×⍨
square (lit. multiplication selfie of) de l'argument(
…)
Applique la fonction tacite anonyme suivante:⍳
ɩ ntegers 1 à l'argument⍳
multiplier par ɩ ntegers 1 à l'argument (c. -à- carré)⊢(
…)
Applique la fonction tacite anonyme suivante avec l'argument comme argument de gauche:+
est la somme∊
un membre de⊢
il?⍸
d conseils de véritésla source
Perl 5, 43 octets
Si vous voulez que le script se termine, nous pouvons inspecter d’autres branches jusqu’à n², comme expliqué par xnor . Nous avons donc 48 octets:
la source
Japt , 16 octets
Essayez-le en ligne!
Comment ça marche
la source
Stax , 8 octets
Exécuter et déboguer
En pseudo-code:
la source
05AB1E , 10 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
MathGolf , 9 octets
Essayez-le en ligne!
Impossible de trouver un bon moyen de supprimer les
²
s, qui occupent 3/9 octets. Sinon, c'est assez simpleExplication
la source
Java 8, 72 octets
Essayez-le en ligne.
Explication:
la source