私は比較的新しいコーディングですが、フィボナッチシーケンスのモジュラスの特定の反復パターンを使用して結果の数値にトーンを割り当てたところ、episode of Numberphileがありました。私の知識を上手く試すには、ちょっとした実験ですね!リスト内のパターンの期間を見つける
私は単純なループを作成してフィボナッチシーケンスのリストを作成し、生成したシーケンスの残りの部分をnで除算して計算する別の関数を作成することができました。しかし、そのモジュラスリストのパターンの期間を見つけることは困難であることが判明しています。
は、ここで私がこれまで持っているものです。
#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)
私は常に返し
def principal_period(modlist):
a = str(modlist)
i = (a+a).find(a, 1, -1)
return None if i == -1 else n[:i]
で失敗だ一部「なし」私は答えに関するスレッドover hereからこれを得ました。私は正直なところ、この答えをよく理解しておらず、私には望みの結果を与えていません。
指定されたリストの繰り返しパターンの期間を計算するための提案がありますか?
これは私のために働かなくなった。私はあなたが示唆したようにコードを変更しましたが、依然としてこの期間にNoneレスポンスを得ました。 – Tupperward
これはいくつの用語でも機能しません。 9と99を試しましたか? –
これは9と99で動作しましたが、すべての期間にわたって機能していません。また、パターンが繰り返される前にlen(principal_period(modlist))を見つけてmodlist内の用語の数を取得することもできました。これは私が探していた期間でした。しかし、私が12のような言葉を使うと、len(None)のTraceBackを与えてNoneを与えてくれます。さらに、この解決策は、modx = 2のときのみ機能します。 – Tupperward