Pythonのコラッツシーケンス
正の整数nがあるとすると、そのCollatzシーケンスの長さを見つける必要があります。ご存知のように、Collatzシーケンスは、nがn =3n+1の場合でもn=n/2の場合に順次生成されます。このシーケンスはn=1の場合に終了します。
したがって、入力がn =13の場合、出力は10になります。[13、40、20、10、5、16、8、4、2、1]これらはシーケンスです。
これを解決するには、次の手順に従います-
- numが0と同じ場合、
- 0を返す
- 長さ:=1
- numは1と同じではありませんが、do
- num:=(num / 2)num mod 2が0の場合、それ以外の場合(3 * num + 1)
- 長さ:=長さ+ 1
- 戻りの長さ
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, num): if num == 0: return 0 length = 1 while num != 1: num = (num / 2) if num % 2 == 0 else (3 * num + 1) length += 1 return length ob = Solution() print(ob.solve(13))
入力
13
出力
10
-
Pythonでシーケンスインデックスによって反復する方法は?
Pythonのシーケンスオブジェクトは、順序付けられたアイテムのコレクションです。シーケンス内の各アイテム(リスト、タプル、文字列)には、0から始まるインデックスでアクセスできます。 リスト内の要素をトラバースするには >>> L1=[10,20,30,40,50] >>> for i in range(len(L1)): print (L1[i]) 10 20 30 40 50 文字列から一度に1文字をスライスするには >>> string ='TutorialsPoint' >>> for i in
-
コロン':'演算子はPythonで何をしますか?
:記号はPythonで複数の目的に使用されます シーケンスのスライス演算子として- −演算子は、リスト、タプル、文字列などのシーケンスオブジェクトからパーツをスライスします。 2つの引数が必要です。 1つ目はスライスの開始のインデックスで、2つ目はスライスの終了のインデックスです。両方のオペランドはオプションです。最初のオペランドを省略した場合、デフォルトでは0になります。 2番目を省略すると、シーケンスの終わりに設定されます。 >>> a=[1,2,3,4,5] >>> a[1:3] [2, 3] >>> a[:3] [1, 2, 3]