Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのハッピー数


数nがあるとします。ハッピー数が1つかどうかを確認します。ご存知のように、ハッピー数は数値であり、正の整数で始まり、数値をその桁の2乗の合計で置き換えます。このプロセスは、1になるまで繰り返されます。それ以外の場合は、サイクルで無限にループします。これらの数字は、1が見つかったときに、幸せな数字になります。

したがって、入力は19のようになり、数値はハッピー数であるため、出力はtrueになります。 19からわかるように、次のようになります

1 2 + 9 2 =82

8 2 + 2 2 =68

6 2 + 8 2 =100

1 2 + 0 2 + 0 2 =1

これを解決するには、次の手順に従います-

  • ここでは、動的計画法のアプローチを使用し、再帰を使用してこれを解決します
  • 基本的なケースは、n =1の場合、trueを返します
  • nがすでにアクセスされている場合は、falseを返します
  • 訪問済みとしてnをマーク
  • n:=nを文字列として、l:=nのすべての数字のリスト
  • temp:=すべての桁の合計の2乗
  • パラメータtempと訪問先リストを使用して関数を再帰的に返す

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def isHappy(self, n):
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
         visited[n]= 1
         n = str(n)
         l = list(n)
         l = list(map(int,l))
         temp = 0
         for i in l:
            temp += (i**2)
         return self.solve(temp,visited)
ob = Solution()
print(ob.isHappy(19))

入力

19

出力

True

  1. Pythonで浮動小数点数をクランプする方法は?

    クランプ機能は、値を特定の範囲に制限します。 Pythonにはそのような関数が組み込まれていません。この関数は次のように作成できます def clamp(num, min_value, max_value):    return max(min(num, max_value), min_value) print(clamp(5, 1, 20)) print(clamp(1, 10, 20)) print(clamp(20, 1, 10)) これにより、出力が得られます 5 10 10

  2. Pythonで数値を比較する方法は?

    Pythonで関係演算子を使用して、Pythonの数値(floatとintの両方)を比較できます。これらの演算子は、それらの両側の値を比較し、それらの間の関係を決定します。変数aが10を保持し、変数bが20を保持すると仮定すると、 演算子 例 == (a ==b)は正しくありません。 != (a!=b)は真です。 b)は正しくありません。 (a