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

Pythonで0と1が交互になっているバイナリ文字列を再配置できるかどうかを確認します


長さが2以上のバイナリ文字列sがあるとします。 0と1が交互になるようにsを再配置できるかどうかを確認する必要があります。

したがって、入力がs ="1000111"の場合、sから "1010101"を形成できるため、出力はTrueになります。

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

  • one_count:=バイナリ文字列の1のカウント
  • zero_count:=バイナリ文字列の0のカウント
  • sのサイズが偶数の場合、
    • one_countがzero_countと同じ場合はtrueを返し、それ以外の場合はfalseを返します
  • | one_count--zero_count|の場合にtrueを返します1と同じです。それ以外の場合はfalse

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

def solve(s):
   one_count = s.count('1')
   zero_count = s.count('0')
   if len(s) % 2 == 0 :
      return (one_count == zero_count)
   return abs(one_count - zero_count) == 1
s = "1000111"
print(solve(s))

入力

"1000111"

出力

True

  1. PythonでベクトルAを回転させ、それにベクトルCを追加することで、ベクトルBに到達できるかどうかを確認します。

    2D平面に3つのベクトルx、y、zがあるとします。ベクトルxからベクトルyを90度(時計回り)回転させるか、必要に応じて何度でもzを追加して、ベクトルyを取得できるかどうかを確認する必要があります。 したがって、入力がx =(-4、-2)y =(-1、2)z =(-2、-1)のような場合、位置を取得するためにxにzを追加できるため、出力はTrueになります。 (-2、-1)、次に時計回りに90°回転して(-1、2)を取得します。 これを解決するには、次の手順に従います- 関数util()を定義します。これにはp、q、r、sが必要です d:=r * r + s * s dが0

  2. PythonでDFAを使用して、バイナリ文字列が3の倍数であるかどうかを確認します

    任意の数のバイナリ表現を表す配列nがあるとします。 Deterministic Finite Automata DFAを使用して、そのバイナリ表現が3で割り切れるかどうかを確認する必要があります。 したがって、入力がn =[1、1、0、0](12のバイナリ)のような場合、出力はTrueになります。 これを解決するために、以下のようにDFAを構築できます- 数値が3で割り切れる場合、余りは0になり、そうでない場合、余りは1または2になります。これらの3つの余りには、3つの状態があります。余りが0の場合、数値が除算可能であることを意味するため、初期状態も最終状態です。 これを解決する