Die ersten beiden MU-Nummern sind 2 und 3. Jede andere MU-Nummer ist die kleinste noch nicht aufgetauchte Zahl, die auf genau eine Weise als Produkt zweier früherer eindeutiger MU-Nummern ausgedrückt werden kann.
Hier sind die ersten 10
2, 3, 6, 12, 18, 24, 48, 54, 96, 162
Aufgabe
Bei einer positiven Zahl wird die n- te ME-Zahl berechnet und ausgegeben .
Da dies ein Code-Golf- Wettbewerb ist, sollten Sie versuchen, Ihren Quellcode so klein wie möglich zu halten.
Antworten:
Pyth,
2221 BytesProbieren Sie es online aus. Testsuite.
0-indiziert.
Erläuterung
quelle
@
Vorzeichen in der letzten Zeile ist falsch ausgerichtet. Ich kann keine vorgeschlagene Änderung vornehmen, da es sich um eine Änderung mit zwei Zeichen handelt.Haskell,
8077 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Jelly , 22 Bytes
Ein monadischer Link, 1-indiziert.
Probieren Sie es online!
Wie?
quelle
R ,
1271181111081051009890 Bytes8 Bytes dank Giuseppe.
Probieren Sie es online!
quelle
<
eine niedrigere Priorität hat, als+
dies. Ich konnte nicht herausfinden, was zum Teufel+g%in%r<3
war, und während ich das tat, haben Sie die beiden Teile, die ich vorschlagen wollte, golfen ... +1n=scan()
anstelle einer Funktionsdefinition verwenden, um von stdin zu lesen; das0
CJam (32 Bytes)
Online-Demo mit 0-Indexierung.
Ich bin mir nicht sicher, ob es über eine triviale Übersetzung der Spezifikation hinaus noch viel zu tun gibt, mit einer Ausnahme: Wenn ich mit einer Liste von
[0 1 2 3]
(anstelle von[2, 3]
) beginne, spare ich ein Byte sofort bei der Initialisierung und zwei weitere, indem ich in der Lage bin, dies zu tun0=|
(indem ich nur das hinzufüge) neues Element, weil seine Häufigkeit1
in der Liste ist und bereits vorhanden ist), aber füge keine falschen Elemente ein, weil für jedesx
in der Liste0*x
und1*x
bereits in der Liste.quelle
Python 2 ,
127118 BytesProbieren Sie es online!
quelle
Mathematica, 154 Bytes
einfache änderung des codes unter oeis link
quelle
PHP , 130 Bytes
0-indiziert
Probieren Sie es online!
Erweitert
PHP , 159 Bytes
0-indiziert
Probieren Sie es online!
PHP , 161 Bytes
0-indiziert
Probieren Sie es online!
quelle
Mathematica, 140 Bytes
quelle
MATL , 25 Bytes
Probieren Sie es online!
Erläuterung
quelle
Perl 6 , 96 Bytes
Probieren Sie es online!
2, 3, { ... } ... *
ist eine unendliche Folge, bei der jedes Element, das mit dem dritten beginnt, vom durch geschweifte Klammern getrennten Codeblock berechnet wird. Da der Codeblock seine Argumente über das Slurpy-@_
Array erhält, erhält er die gesamte aktuelle Sequenz in diesem Array.@_.combinations(2)
ist eine Folge aller 2-Element-Kombinationen von@_
..classify({ [*] $_ })
klassifiziert jedes 2-Tupel nach seinem Produkt und erzeugt einen Hash, in dem die Produkte die Schlüssel und die Werte die Liste der 2-Tupel sind, die dieses Produkt enthalten..grep(*.value == 1)
wählt die Schlüssel-Wert-Paare aus dem Hash aus, bei denen der Wert (dh die Liste der Paare mit diesem Schlüssel als Produkt) eine Größe von 1 hat.».key
Wählt nur die Schlüssel eines jeden Paares aus. Dies ist die Liste der Produkte, die sich aus nur einer Kombination von Faktoren der aktuellen Sequenz ergeben..sort
sortiert die Produkte numerisch.first * ∉ @_, ...
findet das erste dieser Produkte, das noch nicht in der Sequenz vorkommt.quelle
JavaScript (ES6),
119118117 ByteEine rekursive Funktion, die einen 0-basierten Index annimmt.
Wie?
Bei jeder Iteration von f () verwenden wir den letzten Term m der Sequenz und ein anfänglich leeres Array b , um den nächsten Term zu identifizieren. Für jedes Produkt d> m zweier früherer eindeutiger MU-Nummern führen wir Folgendes aus:
und behalten Sie dann den Mindestwert von b .
Der obige Ausdruck wird wie folgt bewertet:
Dies garantiert, dass Produkte, die auf mehr als eine Weise ausgedrückt werden können, niemals ausgewählt werden.
Formatiert und kommentiert
Demo
Code-Snippet anzeigen
quelle
Haskell ,
117115113 BytesProbieren Sie es online!
quelle
n x=(*)<$>x<*>1:x
Python
32 ,167139136133123121120118 BytesProbieren Sie es online!
Danke an @ Mr.Xcoder und @LeakyNun für die Verbesserungen!
quelle
p.count(q)==1
zup.count(q)>0
gültig ist, da dies der Code ist, der den "in genau einer Richtung" -Zustand der Herausforderung sicherstellt.p.count(q)-~(q in a)<=3
entsprichtp.count(q)+(q in a)<3