Dada a, b, c
la longitud de los tres lados de un triángulo, diga si el triángulo está en ángulo recto (es decir, tiene un ángulo igual a 90 grados) o no.
Entrada
Tres valores enteros positivos en cualquier orden
Salida
Ya sea una verdadera potencia específica ( true
, 1
, yes
, ...) o una salida falsa específica ( false
, 0
, no
, ...)
Ejemplo
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
Reglas
- La entrada y la salida se pueden dar en cualquier formato conveniente .
- En su envío, indique los valores verdadero y falso.
- No es necesario manejar valores negativos o triples de borde inválidos
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf y gana el código más corto (en bytes).
code-golf
math
decision-problem
geometry
mdahmoune
fuente
fuente
21, 38, 5
, porque 21 + 5 <38 . ¿Es este un caso patológico intencional que tenemos que manejar?Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Nota técnica: los bytes se cuentan en la página de códigos Jelly.
Explicación:
El problema es equivalente a recibir tres números
a, b, c
y preguntar si hay una permutación tal quea² + b² = c²
. Esto es equivalente a si(a² + b² + c²) ÷ 2
es uno de ellosa², b² or c²
, por lo que el programa solo verifica eso.fuente
²
yµ
cuestan dos bytes cada uno en UTF-8, por lo que su código tiene en realidad 7 bytes, no 5Python 2 , 37 bytes
Pruébalo en línea!
-2 gracias a FlipTack .
-1 gracias a Craig Gidney .
Salidas a través del código de salida (
0
= falso,1
= verdadero).fuente
exec(code)
hmmm, ¿por qué enexec (code)
lugar deexec code
? : D ;-pJava 8, 44 bytes
Explicación:
Pruébalo aquí
fuente
(c*=c)
? Es*=
posible que tenga una preferencia sobre==
y puede guardar dos bytes.==
tiene prioridad sobre*=
.=
,+=
,*=
, Asignaciones y similares en realidad tienen la prioridad más baja de los operadores de Java .a
(por ejemplo), sin ningún éxito. Bueno, podría hacerlo, pero alrededor de 65 personajes ...JavaScript (ES6),
434140 bytesGuardado 1 byte y reparado un error gracias a @Neil
Toma la entrada como una matriz de 3 enteros. Devoluciones
true
para en ángulo recto y defalse
otra manera.Mostrar fragmento de código
Versión original, 44 bytes.
Toma la entrada como 3 enteros. Devoluciones
1
para en ángulo recto y de0
otra manera.Casos de prueba
Mostrar fragmento de código
fuente
=>
y->
diferencia entre JavaScript y Java 8). ;) Tan obvio +1 de mi parte.>>1
es inseguro, esto devuelve cierto para[1, 1, 1]
.Math.hypot(...a,...a)==n*2
?~=
operador para "áspero igual";)Python 3 , 37 bytes
Pruébalo en línea!
Podría encontrarse con problemas de precisión de flotación con entradas grandes.
fuente
Triangular , 57 bytes
Todavía no he visto ninguno en este idioma y me pareció apropiado intentarlo. Tomó un poco ... ya que tenía que entenderlo primero y creo que esto podría jugar un poco más.
Pruébalo en línea!
Esto se expande al siguiente triángulo.
El camino es bastante complicado, pero intentaré explicar lo que he hecho. Me saltearé los punteros direccionales. La mayor parte del código es manipulación de pila.
$:*
Cuadra la primera entrada.$:*
Cuadra la segunda entrada.S":Ug!
Pruebe si el segundo valor es mayor que el primero.p"
intercambia con el primero.p
hacer nada.$:*
Cuadra la tercera entrada.P":USg!
Pruebe si el tercer valor es mayor que el mayor del anterior.p+U-
suma verdadera la pila actual y quita el tercer valor almacenadop"U+-
suma falsa la menor y almacenada tercera y resta de la mayor0=%
prueba la igualdad a cero y el resultado de salida.fuente
Haskell (
333231 bytes)Versión original:
Función anónima. Toma una lista en la forma [a, b, c]. Salidas Verdadero o Falso.
La primera versión verificó si la suma de los cuadrados era el doble del cuadrado del máximo.
En segundo lugar, la versión ligeramente mejor verifica si la mitad de la suma de cuadrados es un elemento en la lista de cuadrados.
Editar: accidentalmente contó una nueva línea, gracias H.PWiz
fuente
sum
se pueden tirar. buena solución!Perl 6 , 24 bytes
Pruébalo en línea!
*²+*²==*²
es una función anónima que devuelve verdadero si la suma de los cuadrados de sus dos primeros argumentos es igual al cuadrado de su tercer argumento. Pasamos la lista de entrada ordenada a esta función, aplanándola en la lista de argumentos con|
.fuente
R , 31
2630bytesEste no me gusta tanto, pero es más corto. Suma los cuadrados y divide por el cuadrado más grande. Verdad si 2.
Versión anterior (modificada con cat y con la sugerencia de @ Guiseppe)
Haga una suma de la entrada ordenada con el último elemento negado y devuelva el
!
no.Pruébalo en línea!
fuente
!sort(scan())^2%*%c(1,1,-1)
es de 27 bytes. pero creo que aún necesitas uncat
.Brain-Flak , 68 bytes
Pruébalo en línea!
Utiliza la observación en la respuesta del usuario 202729.
fuente
C (gcc) , 49 bytes
Pruébalo en línea!
Mejora la técnica de Kevin Cruijssens.
Devuelve 0 para un triángulo válido y, de lo contrario, un valor distinto de cero
fuente
MATL , 7 bytes
Pruébalo en línea!
Explicación
Considere la entrada
[12, 37, 35]
.fuente
Python 2 , 43 bytes
Pruébalo en línea!
Python 2 ,
79706862 bytesPruébalo en línea!
fuente
A*A
es más corto ...-
lugar de==
.C,
6854 bytesUsando la solución user202729 .
¡Gracias a @Christoph por jugar al golf con 14 bytes!
Pruébalo en línea!
C, 85 bytes
Pruébalo en línea!
fuente
1
para los parámetros de los1, 1, 1
cuales está mal ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 bytes
Toma la entrada como una matriz.
Intentalo
fuente
J, 10 bytes
-6 bytes gracias a FrownyFrog
respuesta original
/:
ordenar los cuadrados*:
, luego verificar si la suma de los dos primeros+/@}:
es igual al último{:
Pruébalo en línea!
fuente
Triangularidad ,
4931 bytesPruébalo en línea!
Explicación
Cada programa de triangularidad debe tener un relleno triangular (disculpe el juego de palabras). Es decir, la i ésima línea contando desde la parte inferior del programa debe rellenarse con i - 1 puntos (
.
) en cada lado. Para mantener los triángulos de puntos simétricos y estéticamente agradables, cada línea debe constar de 2L - 1 caracteres, donde L es el número de líneas en el programa. Eliminando los caracteres que componen el relleno necesario, así es como funciona el código:Comprobando si un triángulo está en ángulo recto en Triangularidad ...
fuente
PowerShell , 39 bytes
Pruébalo en línea!
Ordena la entrada, la almacena en
$a,$b,$c
variables. Luego usa el teorema de Pitágoras para verificar sia*a + b*b = c*c
. La salida es booleanaTrue
oFalse
.fuente
JavaScript 34 bytes (sin D =)
fuente
a=>a.sort()[0]**2+a[1]**2==a[2]**2
en ES6. Así que apoyos para ti @DanielIndiesort()
usa el orden lexicográfico cuando no se proporciona devolución de llamada, por lo que este código falla, por ejemplo[10,6,8]
.RProgN 2 , 10 bytes
Explicado
Pruébalo en línea!
fuente
Raqueta ,
6460 bytesPruébalo en línea!
Cómo funciona
Comprueba si
a^2 + b^2 + c^2
es igual a dos veces el más grande dea^2
,b^2
yc^2
.Devuelve los
#t
triángulos rectángulos y#f
todas las demás entradas.expt
.fuente
(define fun
debe ser parte del código ...(define fun ...)
on TIO es solo por conveniencia: también podríamos usar esta función como(... 3 4 5)
dónde...
está la función. (Entonces podríamos tener un encabezado(print (
y un pie de página3 4 5))
si lo prefiere).#lang racket
en el código; otras no.)(max a b c)
que hacer unlet
enlace, ¿eh? Supongo que sería más corto enlazar como argumento a unλ
? ¿O no hay una exponenciación incorporada?(*(expt(max a b c)2)2)
?05AB1E , 6 bytes
Pruébalo en línea!
fuente
n{RÆ_
para guardar un byte.Ruby, 31 bytes
Toma la entrada como una lista de 3 enteros. Utiliza algunas ideas de otras soluciones.
fuente
Julia 0.6 , 16 bytes
Pruébalo en línea!
Cómo funciona
Sea x = [a, b, c] .
x⋅x
es el producto escalar de x y de sí mismo, por lo que produce a² + b² + c² .2x.*x
es el producto de 2x y x , por lo que produce [2a², 2b², 2c²] .Finalmente,
∈
comprueba si el entero a² + b² + c² pertenece al vector [2a², 2b², 2c²] , lo cual es cierto sia2 + b² + c² = 2a² o a² + b² + c² = 2b² o a² + b² + c² = 2c² , que en sí mismo es cierto si f
b² + c² = a² o a² + c² = b² o a² + b² = c² .
fuente
Java (OpenJDK 8) , 68 bytes
Pruébalo en línea!
fuente
sort
toma una matriz.TI-Basic,
131110 bytesAhora funciona para entradas en cualquier orden y también es más corto. Otro -1 gracias a @MishaLavrov
fuente
A=5
,B=4
,C=3
no se maneja correctamente.)
, entoncesmax(Ans=R►Pr(min(Ans),median(Ans
también es válido (aunque el cálculo que estamos haciendo aquí es diferente) y es un byte más corto.CJam, 9
Pruébalo en línea
Explicación:
fuente
Pari / GP ,
2924 bytesPruébalo en línea!
Guardado cinco bytes por un cambio obvio de
norml2(v)
av*v~
.Inspirado por otras respuestas.
Aquí
v
debe haber un vector de filao un vector de columnacon tres coordenadas.Ejemplo de uso:
f([3,4,5])
Por supuesto, obtienes longitudes laterales racionales gratis, por ejemplo
f([29/6, 10/3, 7/2])
.Si no cuento la
f(v)=
parte, son 19 bytes. La primera parte también se puede escribirv->
(total 22 bytes).Explicación: Si las tres coordenadas del
v
sonx
,y
yz
, a continuación, el producto dev
y su transpuestav~
da un escalarx^2+y^2+^z^2
, y tenemos que comprobar si es igual al doble del cuadrado de la máxima de las coordenadasx
,y
,z
.Extra: las mismas
f
pruebas para un cuádruple pitagórico si su vector de entrada tiene cuatro coordenadas, y así sucesivamente.fuente
tio.run
enlace . Sin embargo, es mucho mejor instalar PARI / GP localmente.MS Excel, 49 bytes
Función de hoja de trabajo anónima que toma la entrada del rango [A1: C1] y la envía a la celda que llama.
fuente
Ohm v2 ,
86 bytesPruébalo en línea!
fuente