Eine Harshad-Zahl ist eine Zahl, die durch die Summe ihrer Ziffern teilbar ist. Dies hängt offensichtlich davon ab, in welche Basis die Ganzzahl geschrieben ist. Basis 10 Harshad-Nummern sind die Sequenz A005349 im OEIS.
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, die bestimmt, ob eine bestimmte Ganzzahl eine Harshad-Zahl in einer bestimmten Basis ist.
Eingang:
Eine positive Ganzzahl <10 ^ 9 und eine Basis zwischen 2 und 36 ODER eine positive Ganzzahl in ihrer Basis, die Kleinbuchstaben für die Zahlen von 11-36 und eine Basis zwischen 2 und 36 verwendet. Sie müssen nur eine von behandeln diese Optionen.
Ausgabe:
Ein Wahrheits- / Falschwert, der angibt, ob die erste Eingabe eine Harshad-Zahl in der Basis der zweiten Eingabe ist.
Beispiele:
27,10 ----------> truthy
8,5 ------------> truthy
9,5 ------------> falsy
1a,12 OR 22,12 -> truthy
Wertung:
Dies ist Code-Golf , niedrigste Punktzahl in Bytes gewinnt.
Antworten:
Gelee , 4 Bytes
Probieren Sie es online aus!
Wie es funktioniert
quelle
b
konvertiert n in das Array seiner Basis- k- Ziffern undS
nimmt dann seine Summe.Python 2 , 46 Bytes
Probieren Sie es online aus!
quelle
Python 3 , 73 Bytes
Probieren Sie es online aus!
Ich bin wahr, weißt du?
quelle
Dyalog APL, 20 Bytes
Probieren Sie es online aus! [15 erste Zahlen in 15 ersten Basen]
Nimmt die Zahl als rechtes Argument und die Basis als linkes Argument, 0 ist wahr.
Wie?
⍺⊥⍣¯1⊢⍵
-⍵
in der Basis⍺
als Ziffernliste⍵|⍨
-⍵
Modulo ...+/
- die Summequelle
Python 2 ,
5447 BytesZeit- und Speicherkomplexität sind O (n) . Versuchen Sie es also nicht mit 10 9 auf TIO.
Die Ausgabe erfolgt über den Exit-Code, also ist 0 wahr, 1 falsch. Wenn diese Ausgabemethode zulässig ist, kann ein weiteres Byte gespeichert werden, indem das Programm in eine Funktion umgewandelt wird.
Vielen Dank an @ musicman523 für den Vorschlag von Exit-Codes!
Probieren Sie es online aus!
quelle
exit(n%s)
wobei 0 wahr und alles andere falsch ist?Pyth,
127 BytesProbieren Sie es online aus!
Die Anzahl der Bytes ist jetzt niedriger, da unary nicht mehr benötigt wird.
Erläuterung
quelle
R ,
6460 Bytes(erfordert das
pryr
Paket)Dies ist eine anonyme Funktion, die zwei Argumente akzeptiert
b
undn
Folgendes auswertet (was sich in TIO befindet):Dabei wird
d
die Ziffernsumme für die erforderliche Basis berechnet.4 Bytes wurden gelöscht, sobald garantiert wurde, dass die Basis größer als 1 ist.
Probieren Sie es online aus!
quelle
Japt , 9 Bytes
Nimmt die Eingabe als zwei Ganzzahlen auf.
Probieren Sie es online aus!
quelle
Javascript (ES6),
6867 BytesBeachten Sie, dass wir immer eine Basis-10-Ganzzahl annehmen , da wir nur entweder Basis- k- oder Basis-10-Zahlen verarbeiten müssen .
n
n
-1 Byte, dank TheLethalCoder!
Wie es funktioniert:
Probieren Sie es online aus!
quelle
n=>k=>...
würde wie(345)(10)
Javascript ES6, 62 Bytes
quelle
Perl 6 , 40 Bytes
Probier es aus
Erweitert:
quelle
Mathematica, 30 Bytes
Reine Funktion, die zwei Argumente verwendet, die Ganzzahl und die Basis (in dieser Reihenfolge) und
True
oder zurückgibtFalse
. Achtung: Die ersten beiden|
s sind nur das normale ASCII-Zeichen, während das letzte∣
U + 2223 ist.#2<2
befasst sich mit dem Sonderfall der Basis 1. AndernfallsTr@IntegerDigits@##
wird die Summe der Ziffern des ersten Arguments erzeugt, wenn es in die Basis des zweiten Arguments geschrieben wird, und es wird...∣#
geprüft, ob diese Summe das erste Argument teilt.quelle
Stapel, 119 Bytes
Gibt 1 für Harshad-Nummern aus.
quelle
Python 3 , 45 Bytes
Probieren Sie es online aus!
Basierend auf den aktualisierten Formaten für die Eingabe.
quelle
C (gcc) , 57 Bytes
Probieren Sie es online aus!
quelle
Pari / GP , 25 Bytes
Probieren Sie es online aus!
quelle
Java (OpenJDK 8) , 54 Bytes
Probieren Sie es online aus!
quelle