Dois números são considerados amigáveis se a soma correta do primeiro divisor for igual ao segundo número, a soma adequada do segundo número for igual ao primeiro número e o primeiro e o segundo número não forem iguais.
Vamos definir S(x)
como a soma correta do divisor de x
. 220 e 284 são amigáveis porque S(220) = 284
e S(284) = 200
.
Sua tarefa é, sem surpresa, determinar se dois números introduzidos são amigáveis ou não. As entradas serão números inteiros positivos e você pode gerar dois valores consistentes e distintos para amigável ou não.
Esta é a sequência OEIS A259180
Este é um código de golfe, portanto o código mais curto vence.
Casos de teste
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
fonte
fonte
Respostas:
Gelatina , 5 bytes
Um link monádico que obtém uma lista de dois números inteiros que retorna 1 se eles são um par de números amigáveis e 0 caso contrário.
Experimente online!
Quão?
fonte
;wÆṣỊ
eœ¿ÆṣḊ
também marcar 5 bytes.ÆṣQU⁼
- talvez haja uma sorrateira 4 em algum lugar ...Python 2 ,
656366 bytes-2 bytes graças ao Sr. Xcoder
Experimente online!
fonte
Python 2,
7167 bytes-4 bytes graças ao xnor
+9 bytes graças a caird coinheringaahing
parcialmente inspirado por [esta resposta]
fonte
def f(x): return
no seu bytecount.map
comlambda
expressão é quase sempre maior que uma compreensão de lista.Flacidez cerebral , 178 bytes
Experimente online!
fonte
Haskell , 53 bytes
-2 bytes graças ao BMO. -1 byte graças a Ørjan Johansen.
Experimente online!
Ungolfed with UniHaskell and
-XUnicodeSyntax
fonte
a/=b
dentro da compreensão da lista.J,
51 28 2724 bytes-Lotes de bytes graças a @cole
-1 mais byte graças a @cole
Experimente online!
fonte
-:[:|.(1#.i.*0=i.|])”0
ou algo parecido com isso. A soma do divisor (verbo mais à direita) é retirada do comentário da milha sobre a nossa questão da soma do divisor. Editar: com aspas diferentes, pois estou no celular.~:/*]
.~.-:
... (combinar com dados não deduzidos), que roubei da resposta do Jelly.-:
no seu código, atualizei o bytecount e adicionei um link TIO. Espero que tudo bem por você. Sinta-se à vontade para reverter se não estiver (mas a solução anterior apresentava um erro de domínio que você deseja corrigir).>:@#.~/.~&.q:-:~:*+/
JavaScript (ES6), 53 bytes
Recebe entrada na sintaxe de currying
(a)(b)
. Retorna0
ou1
.Demo
Mostrar snippet de código
Quão?
Usamos a função g para obter a soma dos divisores adequados de um dado inteiro.
Primeiro calculamos g (a) e comparamos com b . Se g (a) = b , calculamos g (b) e comparamos com a . Caso contrário, calculamos g (1) , que fornece 0 e não pode ser igual a a .
Além disso, verificamos que a não é igual a b .
fonte
Python 3, 84 bytes
Solução simples. d resume os divisores (n% i <1 é avaliado para 1 se s divide n). a ^ b é diferente de zero se a! = b. O LHS da desigualdade é, portanto, 0 se os números não forem amigáveis e> 0 em caso contrário.
fonte
Ruby ,
64 60 5958 bytesExperimente online!
fonte
R , 67 bytes
Experimente online!
retorna
TRUE
para amigável,FALSE
para não.fonte
Perl 6 , 53 bytes
Experimente online!
Recebe a entrada como uma lista de dois números.
fonte
PowerShell ,
8796 bytesExperimente online!
Recebe entrada
$a,$b
. Define afilter
(aqui equivalente a uma função) que recebe entrada$n
. Dentro de nós construir um intervalo de1
ao$n-1
, retirar aqueles que são divisores,-join
-los juntamente com+
e enviar paraInvoke-Expression
(semelhante aeval
).Finalmente, fora do filtro, simplesmente verificamos se a soma do divisor de uma entrada é igual à outra e vice-versa (e validação da entrada para garantir que não sejam iguais). Esse valor booleano é deixado no pipeline e a saída é implícita.
fonte
Pitão, 12 bytes
Leva a entrada como uma lista.
Experimente online
Explicação
fonte
05AB1E ,
87 bytesExperimente online!
fonte
üQ_sÑOüQ&
com certeza lol.Lote, 127 bytes
Saída
1
se os parâmetros forem amigáveis. Funciona subtraindo todos os fatores da soma dos números de entrada para cada número de entrada e, se os dois resultados forem zero, os números são amigáveis.fonte
APL (Dyalog Unicode) ,
45 38 44 36 3520 bytesExperimente online!
Infix Dfn, corrigido para o caso de entradas iguais.
Obrigado @Uriel por 8 bytes; @cole por 1 byte; @ Adám por 15 bytes.
Quão?
@ Adám também me ajudou com uma
função tácita de2220 bytes equivalente ao Dfn:Experimente online!
Quão?
fonte
each
es em vez de duplicar código{(⍺≠⍵)∧⍵⍺≡+/¨¯1↓¨(0=⍺⍵|⍨⍳¨⍺⍵)/¨⍳¨⍺⍵}
. Eu não tenho ido através da lógica aindaVermelho , 117 bytes
Experimente online!
fonte
Java (OpenJDK 9) , 87 bytes
Experimente online!
fonte
SNOBOL4 (CSNOBOL4) ,
153146 bytesExperimente online!
Define uma função
A
que calcula a compatibilidade de dois números, retornando1
para amigável e a sequência vazia para não. O algoritmo é o mesmo da minha resposta anterior, então deixo a explicação antiga abaixo.fonte
Pitão , 13 bytes
+4 bytes para verificar se os valores são distintos, acho que isso não deveria fazer parte do desafio ...
Quase certamente pode ser jogado muito
Experimente online!
fonte
APL + WIN,
4954414035 bytesReescrito para rejeitar entradas inteiras iguais
Solicita a entrada na tela de um vetor dos dois números inteiros.
fonte
NARS APL, 38 bytes, 18 caracteres
11π⍵ encontre a soma dos divisores de ⍵ em 1..⍵; note que a pergunta quer (11π⍵) -⍵ e no APLsm
o teste
fonte
Japt ,
71210 bytesRecebe a entrada como uma matriz de 2 números.
Tente
[6,11]
.fonte
Quarto (gforth) ,
9186 bytesExperimente online!
Quarto (gforth) Sem Locals, 94 bytes
Uma versão mais "digna de nota" que não usa variáveis locais
Experimente online!
fonte
Braquilog , 9 bytes
Experimente online!
Recebe as entradas como uma lista e as saídas por sucesso ou falha.
fonte
Quarto (gforth) , 80 bytes
Reformulado solução de reffu .
Experimente online!
Como funciona
fonte