In dieser Herausforderung haben wir einen Weg gefunden, jede positive ganze Zahl mit Hilfe von Faktorbäumen zu codieren.
So funktioniert es:
Die leere Zeichenfolge hat den Wert 1.
(S)
WobeiS
jeder Ausdruck mit einem Wert von S als S- te Primzahl bewertet wird .AB
wobeiA
undB
willkürliche Ausdrücke mit Werten von A bzw. B den Wert A * B haben .
Wenn wir zum Beispiel 7 repräsentieren wollten, würden wir das tun
7 -> (4) -> (2*2) -> ((1)(1)) -> (()())
Es stellt sich heraus, dass wir mit dieser Methode jede ganze Zahl darstellen können. In der Tat können einige Zahlen auf verschiedene Arten dargestellt werden. Weil Multiplikation kommutativ ist, ist 10 beides
((()))()
und
()((()))
Gleichzeitig können einige Zahlen nur auf eine Art dargestellt werden. Nimm zum Beispiel 8. 8 kann nur dargestellt werden als
()()()
Und da alle unsere Atome gleich sind, können wir die Kommutivität nicht verwenden, um sie neu zu organisieren.
Die Frage lautet nun "Welche Zahlen können nur auf eine Art dargestellt werden?". Die erste Beobachtung habe ich gerade gemacht. Es scheint, dass perfekte Kräfte einige besondere Eigenschaften haben. Bei weiteren Untersuchungen können wir 36 finden, was 6 2 ist, eine perfekte Potenz, aber mehrere Darstellungen hat.
(())()(())()
(())()()(())
()(())()(())
()(())(())()
()()(())(())
Und das ist sinnvoll, weil 6 bereits umordnungsfähig ist. Jede Zahl, die wir aus 6 machen, muss also auch umordnungsfähig sein.
Nun haben wir also eine Regel:
- Eine Zahl hat eine eindeutige Darstellung, wenn es sich um eine perfekte Potenz einer Zahl mit einer eindeutigen Darstellung handelt.
Diese Regel kann uns helfen, die Feststellung, ob eine zusammengesetzte Zahl eindeutig ist, auf die Feststellung zu reduzieren, ob eine Primzahl eindeutig ist. Nun, da wir diese Regel haben, wollen wir herausfinden, was eine Primzahl einzigartig macht. Das ist eigentlich ziemlich selbstverständlich. Wenn wir eine eindeutige Zahl in Klammern setzen, muss das Ergebnis eindeutig sein. Wenn n mehrere Darstellungen enthält, muss die n- te Primzahl mehrere Darstellungen enthalten. Dies ergibt die zweite Regel:
- Die n- te Primzahl ist genau dann eindeutig, wenn n eindeutig ist.
Beide Regeln sind rekursiv, daher benötigen wir einen Basisfall. Was ist die kleinste eindeutige Nummer? Man könnte versucht sein, 2 zu sagen, weil es gerecht ist ()
, aber 1, die leere Zeichenfolge, ist noch kleiner und einzigartig.
- 1 ist einzigartig.
Mit diesen drei Regeln können wir bestimmen, ob eine Zahl einen eindeutigen Faktorbaum hat.
Aufgabe
Vielleicht haben Sie es kommen sehen, aber Ihre Aufgabe ist es, eine positive ganze Zahl zu nehmen und festzustellen, ob sie eindeutig ist. Sie sollten entweder ein Programm oder eine Funktion schreiben, die diese Berechnung durchführt. Sie sollten einen von zwei möglichen Werten ausgeben. Was diese Werte sind, liegt bei Ihnen, aber einer sollte "Ja" darstellen. Er wird ausgegeben, wenn die Eingabe eindeutig ist, und einer sollte "Nein" darstellen, wenn er ansonsten ausgegeben wird.
Ihre Antworten sollten in Bytes bewertet werden, wobei weniger Bytes besser sind.
Testfälle
Hier sind die ersten paar eindeutigen Zahlen:
1
2
3
4
5
7
8
9
11
16
17
19
23
25
27
31
Vorgeschlagene Testfälle
5381 -> Unique
Es scheint, dass OEIS A214577 in irgendeiner Weise verwandt ist. Wenn Sie also mehr Testfälle benötigen, versuchen Sie es dort, aber ich weiß nicht, dass sie gleich sind. Verwenden Sie sie daher auf Ihr eigenes Risiko.
Antworten:
Schale ,
11 bis10 BytesDank Zgarb ein Byte gespart!
Rückgabe
1
für Unikat,0
ansonstenProbieren Sie es online! Oder die ersten 50 zurückgeben
Erläuterung:
quelle
ȯp←
".ṁ¬
kann nur sein,¬
da die Liste in diesem Zweig nicht leer sein muss.Gelee , 10 Bytes
Nach vielem Herumspielen!
Ein monadischer Link, der eine positive Ganzzahl aufnimmt und zurückgibt,
1
ob er eindeutig ist oder0
nicht.Probieren Sie es online!
Wie?
Warten Sie, Logarithmus, was ?!
Lassen Sie uns einige Beispiele der Schleife durchgehen.
If
n=31
( 31 1 , elfte Primzahl):Wenn
n=625
( 5 4 ):If
n=225
( 5 2 × 3 2 ):quelle
APL (Dyalog) , 42 Bytes
Das Verwenden
⎕CY'dfns'
mitdfns
es ist auf tio nicht sehr durchführbar.quelle
Jelly , 11 Bytes
Probieren Sie es online!
-2 dank eines sehr genialen Tricks von Jonathan Allan .
Verwendung des H.PWiz Husk-Algorithmus.
quelle
None
können SieÆfẋE$ḢÆCµl¿
für 11 tun :)Pari / GP , 49 Bytes
Probieren Sie es online!
quelle