Qui n'aime pas le théorème de Pythagore a² + b² = c²? Écrivez la méthode la plus courte possible dans n'importe quelle langue qui prend la valeur a et b et affiche "L'hypoténuse de ce triangle rectangle est" + c. Gardez c à seulement trois décimales.
14
code-golf
balise indique explicitement "Code-golf est une compétition pour résoudre un problème particulier dans le moins d' octets de code source." Voir Code de score golf (octets vs caractères) .Réponses:
APL (54)
Tester:
Explication:
⎕*2
: augmenter les valeurs en entrée à la deuxième puissance+/
: prendre la somme.5*⍨
: élever le résultat à la 0,5e puissance3⍕
: arrondi à 3 décimalesla source
TI-BASIC,
76555352 octetsNon, une parenthèse fermante n'est pas requise. En outre, moins d'octets que cette réponse APL :)
la source
R▶Pr(A,B
.Fix 3:R►Pr(X,Y
Input
pour demanderX
etY
c'est un peu hilarant. Si nous permettons cela, devrions-nous également autoriser le réglagePolarGC
avantInput
, de sorte que la longueur de l'hypoténuse soit donnée par un octetR
? Certes,PolarGC
les valeurs deX
etY
ne sont plus affichées lorsque nous déplaçons le curseur, mais elles sont toujours stockées dans les variables appropriées. (Ce que nous n'utiliserions jamais, mais c'est la pensée qui compte.)Python 2.7 - 76 caractères
Explication
| a + ib | = √ (a 2 + b 2 ) = c
==> a 2 + b 2 = c 2
PJ sur l'hypoténuse
la source
Sclipting , 46 caractères
Attend l'entrée comme deux nombres (peut être fractionnaire!) Séparés par un espace.
C'est plus court que APL, malgré le fait d'avoir à utiliser quelques astuces gênantes.
Explication
la source
dc 54
Tangente le score de la réponse APL!
Tester:
la source
dc -e '2^r2^+3kv[The hypotenuse of this right triangle is ]Pp'
n'attend aucune entrée, imprime"dc: stack empty"
3 fois puis "L'hypoténuse de ce triangle rectangle est 2.000".dc -e '3 4 2^r2^+3kv[...
où 3 et 4 sont les paramètres.C, 77 ou 99
77 caractères si l'entrée ne peut être que les arguments de la fonction:
99 si l'entrée doit être lue depuis stdin:
Un grand merci à @Yimin Rong!
la source
Powershell
Juste pour voir si je pouvais ...
la source
Read-Host
.Rubis,
949082 caractèresMise à jour (merci pour les commentaires):
la source
a**0.5
au lieu de longsMath.sqrt(a)
. Et l'espace aprèsp
peut également être supprimé.%(Math...)
.MATLAB
7974la source
Python 2.7 - 80 caractères
la source
C ++ - 90
la source
pow(a,2)
quand tu peux fairea*a
? Je ne suis pas sûr non plus de comprendre le but du plancher et le +.5 et le multiplier et diviser par 1000Perl 6 (
6874 octets){}
déclare une fonction lambda.[+]
est l'opérateur somme,X**
est l'opérateur de puissance croisée (par exemple,1, 2 X+ 10, 20
donne11, 21, 12, 22
). Dans ce cas, l'opérateur de puissance croisée prend un argument, le résultat a donc la même longueur que@_
.@_
contient tous les arguments de fonction.S'il est interdit d'avoir une fonction qui peut prendre un nombre incorrect d'arguments (dangereux), il est possible de le remplacer
[+] @_ X**2
par$^a**2+$^b**2
, où$^a
et$^b
sont des arguments d'espace réservé.la source
Javascript (97)
la source
C, 100 chars (beats the other C solution by 1!)
A ridiculously inefficient algorithm.
la source
DELPHI / PASCAL
With indent (157)
la source
integer
toint16
You dont have to include the first 2 lines for your answer, and you can remove whitespace. doing all that gives you 106 characters.EcmaScript 6,
8279Usage:
Update: Switch to
Math.hypot()
la source
Golfscript (
69 67 6665)This would be much easier if floating point was actually supported without resorting to workarounds... :)
A link to test it.
la source
2.!~
when2-1
is shorter?the difference between
2- 1` and2-1
wrong, so was probably temporarily confused :) Fixed, thanks.Python 2 (79)
la source
math
for some savings.(a*a+b*b)**.5
def
saving a newline and an indent.AWK —
8478 charactersThanks to Wasi for suggesting ^ operator and removing ()!
e.g.
la source
{printf"The hypotenuse of this right triangle is %.3f\n",($1^2+$2^2)^.5}
PowerShell: 111
Golfed Code
Walkthrough
1..2|%{sv $_ (read-host)};
Gets two inputs interactively from the user, and stores them in $1 and $2. Might be able to cut some length by using arguments or pipeline inputs instead."The hypotenuse of this right triangle is
Required text in the output, per the challenge specifications.$(
...)"
Encapsulated code block will be processed as script before being included in the output."{0:N3}"-f
Formats output from the next bit of code as a number with exactly three digits after the decimal point.[math]::sqrt(
...)
Gets the square root of the encapsulated value.$1/1*$1+$2/1*$2
Serves as our "a^2+b^2". Multiplying a number by itself is the shortest way to square it in PowerShell, but the variables need to be divided by 1 first to force them to integers. Otherwise, they are treated as text and 3*3+4*4 would be 3334444 instead of 25.la source
JavaScript: 83
Currently the shortest JS implementation using
stdin
:DWorks only on Firefox 27.0+ (EcmaScript 6)
JavaScript: 78
If we can use just two variables (as lot of scripts do here):
la source
dc, 55
la source
Java, 112
(Also prints out a No Such Method error, though I'm not sure if this is against the rules)
Java, 149
(No error)
la source
C#
Method Only (114)
Complete Program (171)
Complete Program (without using method - 141)
la source
JavaScript
11810693Unlike @micha's solution, mine takes in two variables via function and sends the alert of the result.
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)}
Fat arrow functions to the rescue!
h=(a,b,e=1e3)=>"The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e
la source
c()
. AliasingMath
doesn't save bytes in your case.c64 basic v2,
6066 bytesScreenshot:
How to try it.
la source
R,
6176 bytescat
displays its content to STDOUT.The
scan()
function takes user's input from keyboard. This input exists as a vector, on which the^2
is applied (^
function is vectorized), and thesum()
sums the elements of the vector.sqrt
outputs the square-root, which is rounded to 3 decimal places byround(,3)
Thanks to @caird coinheringaahing for noticing that the previous answer didn't round.
la source
ARBLE, 73 bytes
Try it online!
la source
sqrt(a^2+b^2)
, this has a lot of unnecessary boilerplate.OML, 57 bytes
Try it online!
Part 1
This simply outputs the string
Part 2
la source
Jelly, 32 characters
Try it online!
There is probably a better string compression that allows me to get around needing to join with spaces but I was having trouble finding it.
Explanation:
la source
only three decimal places
meansless than or equal to three decimal places
, the output looks fine.