Geben Sie bei einer Ganzzahl N
die N
dritte positive Zahl K
mit der folgenden Eigenschaft in Dezimalbasis aus:
Für jede Ziffer I
an der Position P
von K
ist die K
durch Entfernen der P
dritten Ziffer (dh I
) gebildete Zahl durch teilbar I
.
Beispiel und Bemerkungen
324
ist eine solche Zahl:
3
teilt24
2
teilt34
4
teilt32
Anmerkung 1: Wir gehen davon aus, dass die leere Zahl durch irgendetwas teilbar ist, wie z 0
. Daher 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
und 9
gültig sind.
Hinweis 2: K
Kann die Ziffer nicht enthalten 0
, da Sie nicht durch dividieren können 0
.
Eingänge und Ausgänge
- Sie können die Eingabe als Funktionsargument
STDIN
usw. verwenden. - Sie können die Ausgabe von einer Funktion über
STDOUT
usw. zurückgeben. - Sie können diese Zahlen ab
0
(in welchem FallN >= 0
) oder ab1
(in welchem FallN > 0
) indizieren , je nachdem, was für Sie am besten geeignet ist.
Testfälle
Diese Beispiele werden von indiziert. 0
Wenn Sie also von indiziert haben 1
, fügen Sie sie 1
zu den Zahlen in der N
Spalte hinzu.
N Output
0 1
4 5
8 9
15 77
16 88
23 155
42 742
47 1113
121 4244
144 6888
164 9999
Wertung
Dies ist Code-Golf , daher gewinnt die kürzeste Antwort in Bytes.
code-golf
number
arithmetic
integer
Fatalisieren
quelle
quelle
10000
ausschließbaren Zahlen .100000
(1e5
) ausschließbaren Zahlen .Antworten:
Gelee ,
2119 BytesDie Eingabe ist 1-indiziert. Probieren Sie es online aus!
Wie es funktioniert
quelle
Pyth, 20
Probieren Sie es hier aus oder führen Sie die Test Suite aus
N ist für diese Antwort 1-indiziert.
Verwendet weitgehend die gleiche Logik wie mein Python-Skript. Bemerkenswerte Unterschiede bestehen darin
.D
, die Ziffer während des Tests aus der Zeichenfolge zu löschen und die Ausnahmebehandlung zu verwenden, um mit Nullstellen umzugehen.quelle
Pyth, 26 Bytes
Testsuite.
quelle
Python 2, 93 Bytes
Sehr ineffizient. Die Eingabe ist 1-indiziert. Testen Sie es auf Ideone .
Alternative Version, 100 Bytes
Der obige Code führt ungefähr 10 x Teilbarkeitstests durch, bei denen nur x erforderlich sind. Auf Kosten von nur 7 zusätzlichen Bytes , kann die Effizienz erheblich verbessert werden, entweder durch Ersetzen
*r
mit*len(`r`)
oder durch den Code Refactoring wie folgt.Dies behandelt alle Testfälle problemlos , auch auf Ideone .
quelle
JavaScript (ES6),
827876 ByteDie Eingabe ist 1-indiziert. Baut auf, indem eine Zeichenfolge des Formulars erstellt
false|'24'%3|'34'%2|'32'%4
und ausgewertet wird. Zeichenfolgen werden verwendet, da sie im einstelligen Fall noch syntaktisch gültig sind.Die Rekursion begrenzt dies auf ungefähr n = 119. Iterative Version für
888482 Bytes:Bearbeiten: 2 Bytes dank @ Dennis ♦ gespeichert.
quelle
"|'$`$''%$&"
spart zwei Bytes.Ruby, 90
Ähnliche Herangehensweise an Neils Javascript-Antwort, jedoch aufgrund längerer impliziter Typkonvertierung erheblich länger (außer dass Boolesche Werte von durch in Zeichenfolgen konvertiert werden
gsub
, was sehr schön ist).quelle
Ruby, 109 Bytes
quelle
Hoon , 246 Bytes
Ungolfed:
Das ... ist wirklich schrecklich. Ich fühle mich schmutzig, weil ich das gepostet habe.
Stellen Sie
k
die Zeichenfolgenform der aktuellen Nummer ein und ordnen Sie sie der Liste zu[0...(length k)-1]
, die die Zeichenfolge an diesem Index aufteilt (a
). Holen Sie sich dasa
Zeichen, analysieren Sie es auf eine Zahl, und wenn es0
Nein zurückgibt . Holen Sie sich das Präfix vona
und schweißen Sie es an die andere Hälfte der Teilung, analysieren Sie eine Zahl und prüfen Sie, ob der Index sie gleichmäßig teilt.++levy
gibt yes zurück, wenn der Aufruf der Funktion für alle Elemente der Liste ebenfalls yes ist. In diesem Fall ist die Funktion++test
mit yes verknüpft, sodass überprüft wird, ob alle Zeichenk
funktionieren.Wenn wir den 0. Wert haben, geben wir die aktuelle Zahl zurück, oder wir wiederholen mit n dekrementiert (und inkrementiert
x
).quelle