¿Quién no ama el teorema de Pitágoras a² + b² = c²? Escriba el método más corto que pueda en cualquier lenguaje que tome el valor a y b e imprima "La hipotenusa de este triángulo rectángulo es" + c. Mantenga c con solo tres decimales.
14
code-golf
etiqueta dice explícitamente "Code-golf es una competencia para resolver un problema particular en la menor cantidad de bytes de código fuente". Ver código de puntuación golf (bytes vs.caracteres) .Respuestas:
APL (54)
Prueba:
Explicación:
⎕*2
: eleva los valores en la entrada a la segunda potencia+/
: toma la suma.5*⍨
: elevar el resultado a la potencia 0.53⍕
: redondeado a 3 decimalesfuente
TI-BASIC,
76555352 bytesNo, no se requiere paréntesis de cierre. Además, menos bytes que esa respuesta APL :)
fuente
R▶Pr(A,B
.Fix 3:R►Pr(X,Y
Input
para pedirX
yY
es algo gracioso. Si permitimos eso, ¿deberíamos permitir también la configuraciónPolarGC
anteriorInput
, de modo que la longitud de la hipotenusa esté dada por un byteR
? Es cierto quePolarGC
los valores deX
yY
ya no se muestran cuando movemos el cursor, pero todavía se almacenan en las variables apropiadas. (Que entonces nunca usaríamos, pero es el pensamiento lo que cuenta.)Python 2.7 - 76 caracteres
Explicación
| a + ib | = √ (a 2 + b 2 ) = c
==> a 2 + b 2 = c 2
PJ en hipotenusa
fuente
Sclipting , 46 caracteres
Espera la entrada como dos números (¡pueden ser fraccionarios!) Separados por un espacio.
Esto es más corto que APL, a pesar de tener que usar algunos trucos inconvenientes.
Explicación
fuente
dc 54
Tangentes el puntaje de la respuesta APL!
Prueba:
fuente
dc -e '2^r2^+3kv[The hypotenuse of this right triangle is ]Pp'
no espera ninguna entrada, imprime"dc: stack empty"
3 veces y luego "La hipotenusa de este triángulo rectángulo es 2.000".dc -e '3 4 2^r2^+3kv[...
donde 3 y 4 son los parámetros.C, 77 o 99
77 caracteres si la entrada puede ser solo el argumento de la función:
99 si la entrada debe leerse desde stdin:
¡Muchas gracias a @Yimin Rong!
fuente
Potencia Shell
Solo para ver si podía ...
fuente
Read-Host
.Rubí,
949082 caracteresActualización (gracias por los comentarios):
fuente
a**0.5
lugar de largosMath.sqrt(a)
. Y el espacio posteriorp
también se puede eliminar.%(Math...)
.MATLAB
7974fuente
Python 2.7 - 80 caracteres
fuente
C ++ - 90
fuente
pow(a,2)
cuando puedes hacera*a
? Tampoco estoy seguro de entender el propósito del piso y el +.5 y la multiplicación y división por 1000Perl 6 (
6874 bytes){}
declara una función lambda.[+]
es operador de suma,X**
es operador de potencia cruzada (por ejemplo,1, 2 X+ 10, 20
da11, 21, 12, 22
). En este caso, el operador de potencia cruzada toma un argumento, por lo que el resultado tiene la misma longitud que@_
.@_
contiene todos los argumentos de la función.Si no se permite tener una función que pueda tomar un número incorrecto de argumentos (inseguro), es posible reemplazarlo
[+] @_ X**2
con$^a**2+$^b**2
, donde$^a
y$^b
son argumentos de marcador de posición.fuente
Javascript (97)
fuente
C, 100 caracteres (¡supera la otra solución C por 1!)
Un algoritmo ridículamente ineficiente.
fuente
DELPHI / PASCAL
Con sangría (157)
fuente
integer
aint16
No tiene que incluir las primeras 2 líneas para su respuesta, y puede eliminar espacios en blanco. haciendo todo lo que te da 106 caracteres.EcmaScript 6,
8279Uso:
Actualización: cambiar a
Math.hypot()
fuente
Golfscript (
69 67 6665)Esto sería mucho más fácil si el punto flotante fuera realmente compatible sin recurrir a soluciones ... :)
Un enlace para probarlo .
fuente
2.!~
cuando2-1
es más corto?the difference between
2-1` y me2-1
equivoco, por lo que probablemente me confundí temporalmente :) Solucionado, gracias.Pitón 2 (79)
fuente
math
de algunos ahorros.(a*a+b*b)**.5
def
guardar una nueva línea y una sangría.AWK -
8478 caracteres¡Gracias a Wasi por sugerir ^ operador y eliminar ()!
p.ej
fuente
{printf"The hypotenuse of this right triangle is %.3f\n",($1^2+$2^2)^.5}
PowerShell: 111
Código de golf
Tutorial
1..2|%{sv $_ (read-host)};
Obtiene dos entradas interactivas del usuario y las almacena en $ 1 y $ 2. Es posible que pueda cortar algo de longitud utilizando argumentos o entradas de canalización."The hypotenuse of this right triangle is
Texto requerido en la salida, según las especificaciones del desafío.$(
...)"
El bloque de código encapsulado se procesará como secuencia de comandos antes de incluirse en la salida."{0:N3}"-f
Los formatos salen del siguiente bit de código como un número con exactamente tres dígitos después del punto decimal.[math]::sqrt(
...)
Obtiene la raíz cuadrada del valor encapsulado.$1/1*$1+$2/1*$2
Sirve como nuestro "a ^ 2 + b ^ 2". Multiplicar un número por sí mismo es la forma más corta de cuadrarlo en PowerShell, pero las variables deben dividirse por 1 primero para forzarlas a números enteros. De lo contrario, se tratan como texto y 3 * 3 + 4 * 4 sería 3334444 en lugar de 25.fuente
JavaScript: 83
Actualmente, la implementación JS más corta que utiliza
stdin
: Dfunciona solo en Firefox 27.0+ (EcmaScript 6)
JavaScript: 78
Si podemos usar solo dos variables (como hacen muchos scripts aquí):
fuente
dc, 55
fuente
Java, 112
(También imprime un error de No tal método, aunque no estoy seguro de si esto va en contra de las reglas)
Java, 149
(No hay error)
fuente
C#
Solo método (114)
Programa completo (171)
Programa completo (sin usar el método - 141)
fuente
JavaScript
11810693A diferencia de la solución de @ micha, la mía toma dos variables a través de la función y envía la alerta del resultado.
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)}
¡Flecha gorda funciona al rescate!
h=(a,b,e=1e3)=>"The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e
fuente
c()
. El aliasMath
no guarda bytes en su caso.c64 básico v2,
6066 bytesCaptura de pantalla:
Cómo probarlo
fuente
R,
6176 bytescat
muestra su contenido a STDOUT.La
scan()
función toma la entrada del usuario desde el teclado. Esta entrada existe como un vector, sobre el cual^2
se aplica (la^
función está vectorizada), ysum()
suma los elementos del vector.sqrt
genera la raíz cuadrada, que se redondea a 3 decimales porround(,3)
Gracias a @caird coinheringaahing por notar que la respuesta anterior no fue completa.
fuente
ARBLE , 73 bytes
Pruébalo en línea!
fuente
sqrt(a^2+b^2)
, esto tiene muchas repeticiones innecesarias.OML , 57 bytes
Pruébalo en línea!
Parte 1
Esto simplemente genera la cadena
Parte 2
fuente
Gelatina , 32 caracteres
Pruébalo en línea!
Probablemente haya una mejor compresión de cadenas que me permita desplazarme y unirme con espacios, pero tuve problemas para encontrarla.
Explicación:
fuente
only three decimal places
mediosless than or equal to three decimal places
, la salida se ve bien.