Einführung
In der seltsamen Welt der Ganzzahlen sind Divisoren wie Assets und sie bezeichnen Zahlen mit mehr Divisoren als deren Umkehrung als "reich", während sie Zahlen mit weniger Divisoren als deren Umkehrung als "arm" bezeichnen.
Zum Beispiel hat die Zahl fünf Teiler: , während die Umkehrung nur vier hat: .
So wird eine reiche Zahl genannt, während eine arme Zahl ist.
Aufgrund dieser Definition können wir die folgenden zwei ganzzahligen Folgen von reichen und armen Zahlen erstellen:
(here we list the first 25 elements of the sequences)
Index | Poor | Rich
-------|------|-------
1 | 19 | 10
2 | 21 | 12
3 | 23 | 14
4 | 25 | 16
5 | 27 | 18
6 | 29 | 20
7 | 41 | 28
8 | 43 | 30
9 | 45 | 32
10 | 46 | 34
11 | 47 | 35
12 | 48 | 36
13 | 49 | 38
14 | 53 | 40
15 | 57 | 50
16 | 59 | 52
17 | 61 | 54
18 | 63 | 56
19 | 65 | 60
20 | 67 | 64
21 | 69 | 68
22 | 81 | 70
23 | 82 | 72
24 | 83 | 74
25 | 86 | 75
... | ... | ...
Anmerkungen :
- als "Umkehrung" einer Zahl meinen wir die digitale Umkehrung , dh die Umkehrung der Ziffern in der Basis 10. Dies bedeutet , dass Zahlen mit einem oder mehreren Nullen enden wird eine „kürzere“ Umkehrung: zB die Umkehrung
1900
ist0091
daher91
- Wir schließen absichtlich die ganzzahligen Zahlen mit der gleichen Anzahl von Teilern wie deren Umkehrung aus, dh diejenigen, die zu OEIS gehören: A062895
Herausforderung
Unter Berücksichtigung der beiden oben definierten Sequenzen besteht Ihre Aufgabe darin, ein Programm oder eine Funktion zu schreiben, die bei einer Ganzzahl n
(Sie können zwischen 0 und 1 wählen) die n-te arme und n-te reiche Zahl zurückgibt.
Eingang
- Eine Ganzzahl (
>= 0
wenn 0-indiziert oder>= 1
1-indiziert)
Ausgabe
- 2 ganze Zahlen, eine für die arme und eine für die reiche Sequenz, in der Reihenfolge, die Sie bevorzugen, solange sie konsistent sind
Beispiele:
INPUT | OUTPUT
----------------------------------
n (1-indexed) | poor rich
----------------------------------
1 | 19 10
18 | 63 56
44 | 213 112
95 | 298 208
4542 | 16803 10282
11866 | 36923 25272
17128 | 48453 36466
22867 | 61431 51794
35842 | 99998 81888
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
2
. Siehe hierzu Corollary 1.4 am Ende des folgenden Papier, mitn
gleich19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/...Antworten:
05AB1E , 16 Bytes
Probieren Sie es online!
0-indiziert [reich, arm]:
Vielleicht kann jemand erklären, warum diese Version nicht zu terminieren scheint, aber wenn ich bei TIO auf "Ausführung abbrechen" klicke, endet sie mit der richtigen Antwort, oder wenn Sie 60 Sekunden warten, erhalten Sie die richtige Antwort. Für eine Version, die "korrekt" endet, können Sie Folgendes verwenden:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 Bytesquelle
∞n5è
würde nur die ersten 6 Zahlen berechnen. Ich denke, wenn diese Arten von Konstrukten zum Schleifen, Gruppieren und Teilen zum Einsatz kommen, schlägt die verzögerte Auswertung fehl und versucht, alle Elemente zu berechnen, bevor sie zurückgegeben werden.€g
. Ich habe es so oft benutzt. Hätte hier mit der (jetzt gleichen Byte) Alternative ein Byte gespeichert‚рgÆ.±
. Gute Antwort! Großartige Nutzung von.¡
!δg
lol.JavaScript (ES6),
121 115 113111 ByteDie Eingabe ist 1-indiziert. Ausgänge als
[poor, rich]
.Probieren Sie es online!
Kommentiert
Hilfsfunktion
Main
quelle
Jelly , 22 Bytes
Probieren Sie es online!
Erläuterung
quelle
Wolfram Language (Mathematica) , 152 Byte
Probieren Sie es online!
Wenn die Vermutung wahr ist, funktioniert diese 140-Byte- Lösung ebenfalls
Probieren Sie es online!
Hier ist arm gegen reich Handlung
quelle
a(27635)= {70003, 65892}
Perl 6 , 81 Bytes
Probieren Sie es online!
* > *
ist eine anonyme Funktion, die true zurückgibt, wenn das erste Argument größer als das zweite ist. Ähnliches gilt für* < *
. Ersteres wählt die Nummern aus, die zur fetten Sequenz gehören, letzteres wählt die Nummern aus, die zur schlechten Sequenz gehören.(* > *, * < *).map(-> &c { ... })
erzeugt ein Paar unendlicher Folgen, die jeweils auf einer der Komparatorfunktionen basieren: der reichen Folge und der schlechten Folge, in dieser Reihenfolge.»[$_]
Indiziert beide dieser Sequenzen mit$_
dem Argument für die Funktion der obersten Ebene und gibt eine Liste mit zwei Elementen zurück, die das$_
dritte Mitglied der reichen Sequenz und das$_
dritte Mitglied der schlechten Sequenz enthält.grep $_ %% *, 1..$_
erstellt eine Liste der Teiler von$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
Erzeugt eine aus zwei Elementen bestehende Liste der Teiler von$_
und der Teiler von$_
mit umgekehrten Ziffern ("gespiegelt").[[&c]]
reduziert die Liste mit zwei Elementen mit der Komparatorfunktion&c
(entweder größer als oder kleiner als) und erzeugt einen Booleschen Wert, der angibt, ob diese Zahl zur fetten Sequenz der schlechten Sequenz gehört.quelle
1..$_
kann sein^$_
. Sie können das[$_]
Symbol auch in die Kartenfunktion verschieben. 78 BytesPython 2 ,
142141 BytesProbieren Sie es online!
Nicht-rekursive Alternative (sehr ähnlich zu den anderen Python-Antworten)
Python 2 , 143 Bytes
Probieren Sie es online!
quelle
Python 2 ,
158153 Bytes-2 Bytes dank shooqie
Probieren Sie es online!
Eingang ist 0-indiziert. Ausgänge als
poor rich
.quelle
+=[c]
anstatt zu.append(c)
arbeiten?Ruby , 128 Bytes
Die Eingabe ist nullindexiert . Ausgabe als [arm, reich].
Erläuterung
Probieren Sie es online!
quelle
Perl 6 , 76 Bytes
Probieren Sie es online!
Ich habe Seans Perl 6-Antwort nicht gesehen , aber das funktioniert auf andere Weise. Beachten Sie, dass ich den oberen Rand als hardcodiert habe
n*3+99
, was wahrscheinlich nicht unbedingt korrekt ist. Allerdings konnte ich die ersetzen*3
mit³
ohne zusätzliches Bytes, das das Programm weit weniger effizient machen würde, wenn mehr richtig.quelle
Python 2 , 152 Bytes
Probieren Sie es online!
Endet ziemlich ähnlich zu Rods Antwort . Gibt das
n
arme, reiche Tupel mit dem Index Null zurück .quelle
Icon ,
180175 BytesProbieren Sie es online!
quelle
APL (Dyalog Unicode) , 34 Byte
Probieren Sie es online!
Vielen Dank an Adám und ngn, die mir beim Golfspielen geholfen haben.
TIO hat eine Zeitüberschreitung für die größeren Indizes (die
⍳1e5
oder erfordern⍳1e6
), aber wenn genügend Zeit und Speicher zur Verfügung stehen, wird die Funktion ordnungsgemäß beendet.quelle
R ,
152137 Bytes-12 Bytes dank Giuseppe -3 Bytes dank digEmAll
Probieren Sie es online!
T
ist die Ganzzahl, die gerade ausprobiert wird; Die neuesten armen und reichen Zahlen werden im Vektor gespeichertF
.Der kürzeste Weg, eine Ganzzahl umzukehren, bestand darin, sie mit modularer Arithmetik in Ziffern zur Basis 10 umzuwandeln und dann mit Potenzen von 10 invertiert zurückzuwandeln.
Erklärung (der vorherigen, ähnlichen Version):
quelle
nchar
.log10
!JavaScript (Node.js) ,
190180 BytesAusgänge als
[poor, rich]
.Probieren Sie es online!
Erläuterung
d(n)
FunktionDieser Helfer ermittelt die Anzahl der Faktoren, die eine Zahl hat.
Hauptfunktion
quelle
C # (Visual C # Interactive Compiler) , 221 Byte
Probieren Sie es online!
quelle