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

Pythonで数字のペアと任意の数の数字のトリプレットを取得できるかどうかを確認するプログラム


数値文字列sがあるとします。同じ文字のペアを1つ持つことができ、文字列の残りの部分が同じ文字のトリプレットをいくつでも形成できる配置があるかどうかを確認する必要があります。

したがって、入力がs ="21133123"の場合、出力はTrueになります。これは、ペアとして「22」を形成し、2つのトリプレットとして「111」、「333」を形成する2が2つあるためです。

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

  • d:=s

    に存在する各要素の頻度を含むリスト
  • dのkごとに、実行します

    • d [k]:=d [k]-2

    • d [i] mod 3がdのすべてのiに対して0の場合、

      • Trueを返す

    • d [k]:=d [k] + 2

  • Falseを返す

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

from collections import Counter
def solve(s):
   d = Counter(s)
   for k in d:
      d[k] -= 2
      if all(d[i] % 3 == 0 for i in d):
         return True
      d[k] += 2
   return False

s = "21133123"
print(solve(s))

入力

"21133123"

出力

True

  1. Pythonでグローバル反転とローカル反転の数が同じかどうかを確認するプログラム

    nums[j]のようなインデックスi nums [i+1]のようなインデックスiとi+1がある場合です。グローバル反転の数がローカル反転の数と等しいかどうかを確認する必要があります。 したがって、入力がnums =[3、2、4]のような場合、インデックス0と1は両方ともグローバルとローカルの反転であるため、出力はTrueになります。 これを解決するには、次の手順に従います- l:=numsのサイズ 0〜l-3の範囲のiの場合、do i + 2からl-1の範囲のjについては、 nums [j]の場合、 Falseを返す Trueを返す 理解を深めるために、次の実装

  2. 数値をチェックするプログラムは、Pythonでは異なる階乗数値の合計として記述できます。

    正の数nがあるとすると、nが一意の正の階乗数の合計として記述できるかどうかを確認する必要があります。 したがって、入力がn =144のような場合、出力は4のようにTrueになります。 + 5! =24 + 120 =144 これを解決するには、次の手順に従います- 事実:=1 res:=新しいリスト x:=2 事実<=n、実行 resの最後にファクトを挿入 ファクト:=ファクト* x x:=x + 1 res -1から0の範囲サイズのiの場合、1ずつ減らします。 =res [i]の場合、 n:=n --res [i]