Ich bin relativ neu in der Codierung, aber ich sah eine große episode of Numberphile, wo sie ein bestimmtes sich wiederholendes Muster des Moduls der Fibonacci-Sequenz verwenden, um Töne zu der resultierenden Zahl zuzuweisen. Was für ein großartiges kleines Experiment, um mein Wissen zu testen!Finden der Periode eines Musters in einer Liste
So konnte ich eine einfache Schleife erstellen, um eine Liste der Fibonacci-Sequenz und eine andere Funktion zu erstellen, um den Rest der generierten Sequenz nach dem Dividieren durch n zu berechnen. Aber es ist schwierig, die Periode des Musters in dieser Modulliste zu finden.
Hier ist, was ich bisher:
#Fibonacci.py
#Basic terms
fiblist = list()
inp = "> "
n=None
#Calculates the FIbonacci sequence
def fib(n):
a,b = 0,1
while True:
try:
print "How many terms? "
n = int(raw_input(inp))
if n <= 0:
print "Please enter a positive integer."
continue
else:
for i in range(0,n):
a,b = b, a + b
fiblist.append(a)
break
except ValueError:
print "Please enter a positive integer, not a letter or symbol"
continue
return fiblist
#Calculates the modulo of each integer in fiblist
def modulo(n):
print """
Do you want to find the modulo?
1. Yes
2. No"""
choice = raw_input(inp)
if choice =="1":
modlist = list()
print "What modulo do you want to use?"
modx = int(raw_input(inp))
modlist = [x % modx for x in fiblist]
print modlist
print "The period of the pattern is ", principal_period(modlist)
print "Goodbye!"
else:
print "Goodbye!"
#Calculates the period of the modulo pattern of the Fibonacci sequence
def principal_period(modlist):
a = str(modlist)
i = (a+a).find(a, 1, -1)
return None if i == -1 else n[:i]
print fib(n)
modulo(n)
Der Teil, der mich hat versagt ist
def principal_period(modlist):
a = str(modlist)
i = (a+a).find(a, 1, -1)
return None if i == -1 else n[:i]
die „None“ Ich habe dies aus dem Thread over here in Bezug auf die Antwort immer wieder. Ich verstehe diese Antwort wirklich nicht sehr gut und es gibt mir nicht das gewünschte Ergebnis.
Haben Sie Vorschläge zur Berechnung der Periode eines sich wiederholenden Musters in einer gegebenen Liste?
Dies endete für mich nicht funktioniert. Ich habe den Code so geändert, wie Sie es vorgeschlagen haben, aber ich habe immer noch keine Antwort auf diesen Zeitraum erhalten. – Tupperward
Es funktioniert nicht mit einer beliebigen Anzahl von Begriffen. Hast du 9 und 99 probiert? –
Das hat mit 9 und 99 funktioniert, aber es funktioniert nicht für alle Längen von Begriffen. Ich konnte auch die len (principal_period (modlist)) finden, um die Anzahl der Begriffe in modlist zu erhalten, bevor das Muster wiederholt wird. Das war die Zeit, nach der ich gesucht habe. Wenn ich jedoch einen Begriff wie 12 verwende, liefert er mir eine None, die ein TraceBack für len (None) gibt. Außerdem scheint diese Lösung nur zu funktionieren, wenn modx = 2 ist. – Tupperward