3.7 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 5ea2815a8640bcc6cb7dab3c | Lychrel-Zahlen | 1 | 385287 | lychrel-numbers |
--description--
- Take an integer
n₀, greater than zero. - Bilde die nächste Zahl
nder Reihe, indem dun₀umdrehst und zun₀hinzufügst - Stopp, wenn
nes palindromisch wird - d.h. die Ziffern vonnin ==n.
The above recurrence relation when applied to most starting numbers n = 1, 2, ... terminates in a palindrome quite quickly.
Zum Beispiel, wenn n₀ = 12 erhalten wir:
12
12 + 21 = 33, a palindrome!
Und wenn n₀ = 55 erhalten wir:
55
55 + 55 = 110
110 + 011 = 121, a palindrome!
Beachte, dass die Prüfung auf ein Palindrom nach einer Addition erfolgt.
Einige Anfangszahlen scheinen ewig zu dauern; die Rekursionsbeziehung für 196 wurde für Millionen von Wiederholungen berechnet, die Zahlen mit Millionen von Ziffern bilden, ohne ein Palindrom zu bilden. Diese Zahlen, die nicht mit einem Palindrom enden, werden Lychrel-Zahlen genannt.
Für die Zwecke dieser Aufgabe ist eine Lychrel-Zahl eine beliebige Ausgangszahl, die nicht innerhalb von 500 (oder mehr) Iterationen ein Palindrom bildet.
Saatgut und verwandte Lychrel-Nummern:
Jede Ganzzahl, die in der Folge einer Lychrel-Zahl entsteht, ist auch eine Lynchrel-Zahl.
Im Allgemeinen kann jede Sequenz von einer Lychrel-Zahl konvergieren, um der Sequenz von einem vorherigen Lychrel-Zahlen-Kandidaten beizutreten; die Sequenzen für die Zahlen 196 und dann 689 beginnen zum Beispiel wie folgt:
196
196 + 691 = 887
887 + 788 = 1675
1675 + 5761 = 7436
7436 + 6347 = 13783
13783 + 38731 = 52514
52514 + 41525 = 94039
...
689
689 + 986 = 1675
1675 + 5761 = 7436
...
Wir sehen also, dass die Folge, die mit 689 beginnt, zu denselben Zahlen konvergiert wie die für 196 und mit ihnen fortfährt.
Aus diesem Grund können wir die Lychrel-Zahlen weiter unterteilen in echte Saat Lychrel-Zahlenkandidaten und Verwandte Zahlen, die keine Palindrome erzeugen, aber ganze Zahlen in ihrer Sequenz haben, die als Teil der aus einer niedrigeren Lychrel-Zahl erzeugten Sequenz angesehen werden.
--instructions--
Schreibe eine Funktion, die eine Zahl als Parameter annimmt. True wird zurückgegeben, wenn die Zahl eine Lynchrel-Zahl ist. Andernfalls wird false zurückgegeben. Denke daran, dass die Iterationsgrenze bei 500 liegt.
--hints--
isLychrel sollte eine Funktion sein.
assert(typeof isLychrel === 'function');
isLychrel(12) sollte einen Boolean zurückgeben.
assert(typeof isLychrel(12) === 'boolean');
isLychrel(12) sollte false zurückgeben.
assert.equal(isLychrel(12), false);
isLychrel(55) sollte false zurückgeben.
assert.equal(isLychrel(55), false);
isLychrel(196) sollte true zurückgeben.
assert.equal(isLychrel(196), true);
isLychrel(879) sollte true zurückgeben.
assert.equal(isLychrel(879), true);
isLychrel(44987) sollte false zurückgeben.
assert.equal(isLychrel(44987), false);
isLychrel(7059) sollte true zurückgeben.
assert.equal(isLychrel(7059), true);
--seed--
--seed-contents--
function isLychrel(n) {
}
--solutions--
function isLychrel(n) {
function reverse(num) {
return parseInt(
num
.toString()
.split('')
.reverse()
.join('')
);
}
var i;
for (i = 0; i < 500; i++) {
n = n + reverse(n);
if (n == reverse(n)) break;
}
return i == 500;
}