fundo
O número 1729 é o número Hardy-Ramanujan. Uma propriedade incrível foi descoberta por S. Ramanujan (que é amplamente considerado o maior matemático indiano 1 ), quando GH Hardy o visitou em um hospital. Nas próprias palavras de Hardy:
Lembro-me de uma vez ir vê-lo quando estava doente em Putney. Eu tinha andado de táxi número 1729 e observei que o número me parecia um tanto monótono e que esperava que não fosse um presságio desfavorável. "Não", respondeu ele, "é um número muito interessante; é o menor número expressável como a soma de dois cubos de duas maneiras diferentes".
Além disso, possui muitas outras propriedades incríveis. Uma dessas propriedades é que é um número Harshad, ou seja, a soma de seus dígitos (1 + 7 + 2 + 9 = 19) é um fator disso. Isso também, um especial. Como Masahiko Fujiwara mostrou, 1729 é um número inteiro positivo que, quando seus dígitos são somados, produz uma soma que, quando multiplicada por sua reversão, produz o número original:
1 + 7 + 2 + 9 = 19
19 × 91 = 1729
Um número inteiro positivo tendo tal propriedade é o que eu defino como Hardy-Ramanujan- ish Harshad Número, para o propósito deste post. (Pode haver um termo técnico para ele, mas não consigo encontrá-lo, a menos que seja membro do A110921 )
A tarefa
Dado um número inteiro positivo n
como entrada, um valor de saída truthy ou Falsey com base em se a entrada n
é um equilíbrio de Hardy-Ramanujan- ish Número Harshad. Saída de verdade, se for. Caso contrário, falsey de saída.
Note-se que apenas quatro Hardy-Ramanujan- ish existe número harshad ( 1
, 81
, 1458
e 1729
), e você pode escrever código que verifica equivalência com eles. Mas não acho que isso seja divertido.
Entrada
Seu programa deve ter um número inteiro positivo (um número natural, em outras palavras). Pode levar de qualquer maneira, exceto assumindo que ele esteja presente em uma variável. A leitura da janela modal, caixa de entrada, linha de comando, arquivo etc. é permitida. Tomar entrada como argumento de função também é permitido.
Resultado
Seu programa deve gerar um valor de verdade ou falsey. Eles não precisam ser consistentes. Seu programa pode produzir de qualquer maneira, exceto gravar a saída em uma variável. É permitido escrever na tela, linha de comando, arquivo etc. A saída com função também return
é permitida.
Regras adicionais
Você não deve usar um built-in para realizar a tarefa (imagino que qualquer idioma tenha esse built-in, mas depois o Mathematica ... )
Aplicam-se brechas padrão .
Casos de teste
Input Output
1 Truthy (because 1 × 1 (reverse of 1) = 1)
2 Falsey
3 Falsey
4 Falsey
5 Falsey
81 Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458 Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729 Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730 Falsey
2017 Falsey
Critério vencedor
Isso é código-golfe , então o código mais curto em bytes vence!
1 Todos os anos, no dia 22 nd de dezembro, o aniversário de Srinivasa Ramanujan, Dia Nacional da Matemática é observado na Índia. Seus colegas, aqueles em Cambridge, o compararam a Jacobi, Euler e até Newton. Além de ser tão bom, ele quase não tinha treinamento formal em Matemática Pura , mas ainda assim, fez importantes contribuições à análise matemática , teoria dos números , séries infinitas e frações contínuas . Infelizmente, ele morreu aos 32 anos, com milhares de descobertas matemáticas em sua mente. Também foi feito um filme sobre ele, baseado em sua biografia ,O homem que conhecia o infinito .
fonte
Respostas:
Neim , 5 bytes
Explicação:
Tente!
fonte
ArnoldC, 888 bytes
Eu sei, apenas procuro igualdade, mas essa não deve ser a parte divertida do programa.
Gostam de ler. :)
Adicionadas algumas novas linhas para facilitar a leitura:
Experimente online
fonte
Montagem x86,
55353331 bytes:Assume uma ABI em que o valor de retorno está no EAX e os parâmetros são pressionados na pilha ... então quase todos eles.
fonte
Braquilog , 8 bytes
Experimente online!
fonte
Haskell ,
5655 bytesExperimente online!
Sem ponto: (56 bytes)
Experimente online!
Chato: (24 bytes)
Experimente online!
fonte
JavaScript ES6,
5957 bytesExperimente online!
Divide-se basicamente em uma matriz de dígitos e une-se a
+
e avalia essa expressão para somar basicamente os dígitos.string*string
converterá automaticamente as strings em ints. Recebe entrada como uma stringfonte
Mathematica, 42 bytes
fonte
Ruby, 69 bytes
Primeira tentativa, com número inteiro como entrada:
Segunda tentativa, com string como entrada:
fonte
.split('')
pode ser feito.chars
Lote, 164 bytes
Imprime 1 com sucesso, sem saída com falha.
fonte
JavaScript (ES6), 72 bytes
Este é um envio ES6 válido. Adicione
f=
no início e chame likef(arg)
.Snippet de teste:
fonte
Kotlin,
111108 bytesExperimente online!
Como é típico para soluções JVM compiladas estaticamente, muitos bytes são perdidos apenas na declaração da função principal e na chamada print (). A estrutura da função é de 60 bytes, o que não é ruim para uma linguagem de uso geral estaticamente tipada como o Kotlin.
Kotlin, solução chata, 69 bytes
Experimente online!
fonte
05AB1E , 5 bytes
Experimente online!
fonte
DSODR*Q
era o que eu tinha antes de olhar.D
.Python 2 , 55 bytes
Experimente online!
Explicação
Uma
eval()
solução é umpouco mais2 bytes ...Solução alternativa
(inválida?),4229 bytesEsta solução verifica a igualdade em relação a todos os números.
Experimente online!
fonte
[1,81,1458,1729].__contains__
Cheddar , 60 bytes
Experimente online!
fonte
NewStack , 16 bytes
O colapso:
Usando 1729 como exemplo
Imprime nada se falso, e a entrada original se verdadeira.
fonte
¹
, a pilha é composta[1]
. E como definimosf
ouf(x)
igualamos sua entrada, multiplicar todos os elementos da pilha pela funçãof
substitui essencialmente a1
entrada. (Porque[1] * f(x)
=[f]
)MATL , 11 bytes
Experimente online!
t
- pegue a entrada e dupliqueV!U
- divida-o em dígitos individuaiss
- somar esses dígitost
- duplicar essa somaVP
- transforme isso em uma corda, vire-a da esquerda para a direitaU
- transformar isso de volta em um número*
- multiplique os dois últimos valores (a soma dos dígitos e sua versão invertida da esquerda para a direita)=
- verifique se é igual à entrada original (que é o único outro valor na pilha)fonte
Japonês, 8 bytes
Execute on-line
fonte
Geléia , 8 bytes
Experimente online!
fonte
DS×Ṛ$Ḍ=
salva um byte.Perl 6 , 30 bytes
fonte
PHP , 52 bytes
Experimente online!
PHP , 36 bytes
Experimente online!
fonte
APL (Dyalog) , 18 bytes
Experimente online!
fonte
Pari / GP ,
5652 bytesExperimente online!
fonte
MathGolf , 5 bytes
Experimente online!
Praticamente o mesmo que o byte da solução Neim por byte.
fonte