Un número de Harshad es un número que es divisible por la suma de sus dígitos. Obviamente, esto depende de en qué base se escriba el número entero. Los números de Base 10 Harshad son la secuencia A005349 en el OEIS.
Tu tarea:
Escriba un programa o función que determine si un entero dado es un número Harshad en una base dada.
Entrada:
Un entero positivo <10 ^ 9, y una base entre 2 y 36, O, un entero positivo en su base, usando letras minúsculas para los números del 11-36 y una base entre 2 y 36. Solo debe manejar uno de Estas opciones.
Salida:
Un valor verdadero / falso que indica si la primera entrada es un número de Harshad en la base de la segunda entrada.
Ejemplos:
27,10 ----------> truthy
8,5 ------------> truthy
9,5 ------------> falsy
1a,12 OR 22,12 -> truthy
Puntuación:
Este es el código de golf , gana la puntuación más baja en bytes.
Respuestas:
Jalea , 4 bytes
Pruébalo en línea!
Cómo funciona
fuente
b
convierte n en la matriz de sus dígitos de base k , luegoS
toma su suma.Python 2 , 46 bytes
Pruébalo en línea!
fuente
Python 3 , 73 bytes
Pruébalo en línea!
1 es verdad, ya sabes.
fuente
Dyalog APL, 20 bytes
Pruébalo en línea! [15 primeros números en 15 primeras bases]
Toma el número como argumento derecho y la base como argumento izquierdo, 0 es verdadero.
¿Cómo?
⍺⊥⍣¯1⊢⍵
-⍵
en base⍺
como una lista de dígitos⍵|⍨
-⍵
módulo ...+/
- la sumafuente
Python 2 ,
5447 bytesEl tiempo y la complejidad de la memoria son O (n) , así que no intente 10 9 en TIO.
La salida es a través del código de salida, por lo que 0 es verdadero, 1 es falso. Si este método de salida termina siendo permitido, se puede guardar un byte adicional al convertir el programa en una función.
¡Gracias a @ musicman523 por sugerir códigos de salida!
Pruébalo en línea!
fuente
exit(n%s)
donde 0 es verdadero y cualquier otra cosa es falsa?Pyth,
127 bytesPruébalo en línea!
El recuento de bytes ahora es menor ya que ya no se requiere unario.
Explicación
fuente
R ,
6460 bytes(requiere el
pryr
paquete)Esta es una función anónima que toma dos argumentos
b
yn
que se evalúa en (que está en TIO):donde
d
calcula la suma de dígitos para la base requerida.Se descartaron 4 bytes una vez que se garantizó que la base era mayor que 1.
Pruébalo en línea!
fuente
Japt , 9 bytes
Toma la entrada como dos enteros.
Pruébalo en línea!
fuente
Javascript (ES6),
6867 bytesTenga en cuenta que dado que solo estamos obligados a manejar números base- k o base-10
n
, supongo que siempren
es un entero base-10.-1 byte, gracias a TheLethalCoder!
Cómo funciona:
Pruébalo en línea!
fuente
n=>k=>...
, es decir , se llamaría como(345)(10)
Javascript ES6, 62 bytes
fuente
Perl 6 , 40 bytes
Pruébalo
Expandido:
fuente
Mathematica, 30 bytes
Función pura que toma dos argumentos, el entero y la base (en ese orden), y devuelve
True
oFalse
. Cuidado: los primeros dos|
s son solo el carácter ASCII normal, mientras que el último∣
es U + 2223.#2<2
trata el caso especial de la base 1. De lo contrario,Tr@IntegerDigits@##
produce la suma de los dígitos del primer argumento cuando se escribe en la base del segundo argumento, y...∣#
prueba si esa suma divide el primer argumento.fuente
Lote, 119 bytes
Salidas 1 para números Harshad.
fuente
Python 3 , 45 bytes
Pruébalo en línea!
Basado en los formatos actualizados para entrada.
fuente
C (gcc) , 57 bytes
Pruébalo en línea!
fuente
Pari / GP , 25 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) , 54 bytes
Pruébalo en línea!
fuente