Dos números se consideran amigables si la suma de divisores del primero es la misma que la del segundo número, la suma de divisores del segundo número es igual al primer número y los números primero y segundo no son iguales.
Definamos S(x)
ser la suma de divisores adecuada de x
. 220 y 284 son amigables porque S(220) = 284
y S(284) = 200
.
Su tarea es, como era de esperar, determinar si dos números ingresados son amigables o no. Las entradas serán enteros positivos y puede generar dos valores distintos y consistentes para amistoso o no.
Esta es la secuencia OEIS A259180
Este es un código de golf por lo que gana el código más corto.
Casos de prueba
input, input => output
220, 284 => 1
52, 100 => 0
10744, 10856 => 1
174292, 2345 => 0
100, 117 => 0
6, 11 => 0
495, 495 => 0
6, 6 => 0
code-golf
math
number
decision-problem
caird coinheringaahing
fuente
fuente
Respuestas:
Jalea , 5 bytes
Un enlace monádico que toma una lista de dos enteros que devuelve 1 si son un par de números amistosos y 0 en caso contrario.
Pruébalo en línea!
¿Cómo?
fuente
;wÆṣỊ
yœ¿ÆṣḊ
también puntúa 5 bytes.ÆṣQU⁼
- tal vez hay un astuto 4 en alguna parte ...Python 2 ,
656366 bytes-2 bytes gracias al Sr. Xcoder
Pruébalo en línea!
fuente
Python 2,
7167 bytes-4 bytes gracias a xnor
+9 bytes gracias a caird coinheringaahing
en parte inspirado por [esta respuesta]
fuente
def f(x): return
en su bytecount.map
conlambda
expresión es casi siempre más largo que una lista de comprensión.Brain-Flak , 178 bytes
Pruébalo en línea!
fuente
Haskell , 53 bytes
-2 bytes gracias a BMO. -1 byte gracias a Ørjan Johansen.
Pruébalo en línea!
Ungolfed con UniHaskell y
-XUnicodeSyntax
fuente
a/=b
dentro de la comprensión de la lista.J,
51 28 2724 Bytes-Muchos bytes gracias a @cole
-1 byte más gracias a @cole
Pruébalo en línea!
fuente
-:[:|.(1#.i.*0=i.|])”0
o algo similar. La suma del divisor (verbo de la derecha) se toma del comentario de miles sobre nuestra pregunta de suma del divisor. Editar: con una comilla diferente ya que estoy en el móvil.~:/*]
.~.-:
... (coincidir con la entrada despulsada), que robé de la respuesta de Jelly.-:
Eliminé una coincidencia adicional en su código, actualicé el bytecount y agregué un enlace TIO. Espero que estés bien por ti. Siéntete libre de retroceder si no es así (pero la solución anterior tenía un error de dominio que querrías corregir).>:@#.~/.~&.q:-:~:*+/
JavaScript (ES6), 53 bytes
Toma entrada en la sintaxis de curry
(a)(b)
. Devoluciones0
o1
.Manifestación
Mostrar fragmento de código
¿Cómo?
Usamos la función g para obtener la suma de los divisores propios de un entero dado.
Primero calculamos g (a) y lo comparamos con b . Si g (a) = b , calculamos g (b) y lo comparamos con a . De lo contrario, calculamos g (1) , que da 0 y no puede ser igual a un .
También verificamos que a no sea igual a b .
fuente
Python 3, 84 bytes
Solución directa. d resume los divisores (n% i <1 se evalúa a 1 si divide i). a ^ b no es cero si a! = b. El LHS de la desigualdad es, por lo tanto, 0 si los números no son amigables y> 0 de lo contrario.
fuente
Ruby ,
64 60 5958 bytesPruébalo en línea!
fuente
R , 67 bytes
Pruébalo en línea!
vuelve
TRUE
por amistoso,FALSE
por no.fuente
Perl 6 , 53 bytes
Pruébalo en línea!
Toma la entrada como una lista de dos números.
fuente
PowerShell ,
8796 bytesPruébalo en línea!
Toma entrada
$a,$b
. Define unfilter
(aquí equivalente a una función) que toma entrada$n
. Dentro construimos un rango de1
a$n-1
, sacamos aquellos que son divisores,-join
los juntamos+
y los enviamos aInvoke-Expression
(similar aeval
).Finalmente, fuera del filtro, simplemente verificamos si la suma de divisores de una entrada es igual a la otra y viceversa (y validación de entrada para asegurarnos de que no sean iguales). Ese valor booleano se deja en la tubería y la salida es implícita.
fuente
Pyth, 12 bytes
Toma la entrada como una lista.
Pruébalo en línea
Explicación
fuente
05AB1E ,
87 bytesPruébalo en línea!
fuente
üQ_sÑOüQ&
seguro jajaja.Lote, 127 bytes
Salidas
1
si los parámetros son amigables. Funciona restando todos los factores de la suma de los números de entrada para cada número de entrada, y si ambos resultados son cero, entonces los números son amigables.fuente
APL (Dyalog Unicode) ,
45 38 44 36 3520 bytesPruébalo en línea!
Infix Dfn, corregido para el caso de entradas iguales.
Gracias @Uriel por 8 bytes; @cole para 1 byte; @ Adám por 15 bytes.
¿Cómo?
@ Adám también me ha ayudado con una función tácita de
2220 bytes que es equivalente a la Dfn:Pruébalo en línea!
¿Cómo?
fuente
each
es en lugar de duplicar el código{(⍺≠⍵)∧⍵⍺≡+/¨¯1↓¨(0=⍺⍵|⍨⍳¨⍺⍵)/¨⍳¨⍺⍵}
. Todavía no he pasado por la lógicaRojo , 117 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 9) , 87 bytes
Pruébalo en línea!
fuente
SNOBOL4 (CSNOBOL4) ,
153146 bytesPruébalo en línea!
Define una función
A
que calcula la amabilidad de dos números, devolviendo1
para amigable y la cadena vacía para no. El algoritmo es el mismo que mi respuesta anterior, así que dejo la explicación anterior a continuación.fuente
Pyth , 13 bytes
+4 bytes para verificar si los valores son distintos, creo que eso no debería ser parte del desafío ...
Es casi seguro que se puede jugar mucho al golf
Pruébalo en línea!
fuente
APL + WIN,
4954414035bytesReescrito para rechazar entradas enteras iguales
Solicita la entrada de pantalla de un vector de los dos enteros.
fuente
NARS APL, 38 bytes, 18 caracteres
11π⍵ encuentra la suma de los divisores de ⍵ en 1..⍵; tenga en cuenta que la pregunta want (11π⍵) -⍵ y en APLsm
la prueba
fuente
Japt ,
71210 bytesToma la entrada como una matriz de 2 números.
Intentalo
[6,11]
.fuente
Adelante (gforth) ,
9186 bytesPruébalo en línea!
Adelante (gforth) Sin locales, 94 bytes
Una versión más "Forthy" que no usa variables locales
Pruébalo en línea!
fuente
Brachylog , 9 bytes
Pruébalo en línea!
Toma la entrada como una lista y las salidas a través de éxito o fracaso.
fuente
Adelante (gforth) , 80 bytes
Solución de reffujo refactorizada .
Pruébalo en línea!
Cómo funciona
fuente