Um número Harshad é um número que é divisível pela soma dos seus dígitos. Obviamente, isso depende da base em que o número inteiro está escrito. Os números da Base 10 Harshad são a sequência A005349 no OEIS.
Sua tarefa:
Escreva um programa ou função que determine se um número inteiro é um número Harshad em uma determinada base.
Entrada:
Um número inteiro positivo <10 ^ 9 e uma base entre 2 e 36, OU, um número inteiro positivo em sua base, usando letras minúsculas para os números de 11 a 36 e uma base entre 2 e 36. Você só precisa manipular um dos essas opções.
Resultado:
Um valor verdade / falso indicando se a primeira entrada é um número Harshad na base da segunda entrada.
Exemplos:
27,10 ----------> truthy
8,5 ------------> truthy
9,5 ------------> falsy
1a,12 OR 22,12 -> truthy
Pontuação:
Isso é código-golfe , a menor pontuação em bytes ganha.
code-golf
number
decision-problem
Gryphon
fonte
fonte
Respostas:
Gelatina , 4 bytes
Experimente online!
Como funciona
fonte
b
convertidos n para a matriz de dos seus base- k dígitos, em seguidaS
leva a sua soma.Python 2 , 46 bytes
Experimente online!
fonte
Python 3 , 73 bytes
Experimente online!
1 é verdade, você sabe.
fonte
Dyalog APL, 20 bytes
Experimente online! [15 primeiros números nas 15 primeiras bases]
Pega o número como argumento da direita e a base como argumento da esquerda, 0 é verdade.
Quão?
⍺⊥⍣¯1⊢⍵
-⍵
na base⍺
como uma lista de dígitos⍵|⍨
-⍵
módulo ...+/
- a somafonte
Python 2 ,
5447 bytesO tempo e a complexidade da memória são O (n) , portanto, não tente 10 9 no TIO.
A saída é via código de saída; portanto, 0 é verdade e 1 é falso. Se esse método de saída acabar sendo permitido, um outro byte pode ser salvo ao transformar o programa em uma função.
Obrigado a @ musicman523 por sugerir códigos de saída!
Experimente online!
fonte
exit(n%s)
onde 0 é verdadeiro e qualquer outra coisa é falsa?Pitão,
127 bytesExperimente online!
A contagem de bytes agora está mais baixa, pois o unário não é mais necessário.
Explicação
fonte
R ,
64bytes 60(requer o
pryr
pacote)Essa é uma função anônima que recebe dois argumentos
b
en
avalia como (que está no TIO):Onde
d
calcula a soma dos dígitos para a base necessária.Eliminados 4 bytes assim que a base foi garantida como maior que 1.
Experimente online!
fonte
Japonês , 9 bytes
Aceita entrada como dois números inteiros.
Experimente online!
fonte
Javascript (ES6),
6867 bytesObserve que, como somos obrigados a lidar apenas com números de base- k ou base-10
n
, presumo quen
seja sempre um número inteiro de base-10.-1 byte, graças a TheLethalCoder!
Como funciona:
Experimente online!
fonte
n=>k=>...
, seria chamado como(345)(10)
Javascript ES6, 62 bytes
fonte
Perl 6 , 40 bytes
Teste-o
Expandido:
fonte
Mathematica, 30 bytes
Função pura usando dois argumentos, o inteiro e a base (nessa ordem) e retornando
True
ouFalse
. Cuidado: os dois primeiros|
s são apenas o caractere ASCII normal, enquanto o último∣
é U + 2223.#2<2
lida com o caso especial da base 1. Caso contrário,Tr@IntegerDigits@##
produz a soma dos dígitos do primeiro argumento quando escrito na base do segundo argumento e...∣#
testa se essa soma divide o primeiro argumento.fonte
Lote, 119 bytes
Saídas 1 para números Harshad.
fonte
Python 3 , 45 bytes
Experimente online!
Com base nos formatos atualizados para entrada.
fonte
C (gcc) , 57 bytes
Experimente online!
fonte
Pari / GP , 25 bytes
Experimente online!
fonte
Java (OpenJDK 8) , 54 bytes
Experimente online!
fonte