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

Pythonで2進数にK個の連続した「1」が含まれているかチェックする方法

この記事では、Pythonを使って2進数の中に指定した個数(K個)の連続した「1」が含まれているかどうかを判定するプログラムを紹介します。

まず、ユーザーから「1」と「0」の組み合わせで構成される文字列を入力として受け取ります。次に、p個の「1」で構成される新しい文字列を作成し、元の文字列の中にp個の連続した「1」が存在するかどうかを確認します。存在する場合は「FOUND(見つかった)」と表示し、存在しない場合は「NOT FOUND(見つからない)」と表示します。

実行例

Binary number ::1111001111
Enter consecutive 1's :3
Consecutive 1's is Found

アルゴリズム

Step 1: 「1」と「0」の組み合わせからなる文字列を入力し、変数Xに格納します。
        pは2進数における連続した「1」の個数です。
Step 2: p個の「1」からなる新しい文字列を作成します。
        newstring = "1" * p
Step 3: 文字列の任意の位置にp個の「1」が存在するかどうかを確認します。
        If newstring in X
            「FOUND」と表示
        Else
            「NOT FOUND」と表示
        End if

ポイント解説

このアルゴリズムの鍵となるのは、Pythonのin演算子です。in演算子は文字列に対して使うことで、部分文字列が含まれているかどうかを簡単に判定できます。ここでは「"1" * p」という文字列の繰り返し機能を利用して、p個の「1」からなるパターン文字列を生成し、それが入力された2進数の文字列内に存在するかをチェックしています。この方法なら、ループ処理を書く必要がなく、非常にシンプルで可読性の高いコードになります。

サンプルコード

# 2進数にk個の連続した1があるかどうかをチェックする
def binaryno_ones(n, p):
    # k個の1からなる新しい文字列を作成
    newstr = "1" * p

    # 任意の位置にk個の1が存在する場合
    if newstr in n:
        print("Consecutive 1's is Found")
    else:
        print("Consecutive 1's is Not Found")

# ドライバーコード
n = input("Enter Binary number ::")
p = int(input("Enter consecutive 1's ::"))
binaryno_ones(n, p)

出力結果

Enter Binary number ::1111001111
Enter consecutive 1's ::3
Consecutive 1's is Found

上記の例では、入力された2進数「1111001111」の中に3個以上の連続した「1」(たとえば先頭の「111」や末尾の「1111」)が存在するため、「Found」と表示されています。もし連続する「1」の個数が指定値に満たない場合は、「Not Found」と表示されます。

  1. 連続する「1」を含まないバイナリ文字列の数を数えるPythonプログラム

    この記事では、「連続する1が存在しないバイナリ文字列の総数を求める」という問題の解き方について、Pythonでの実装例を交えながら詳しく解説します。 問題文 問題: 正の整数 N が与えられます。このとき、長さ N のバイナリ文字列(0と1のみで構成される文字列)のうち、連続する「1」が一切含まれないものの総数を求めてください。 例えば N = 3 の場合、有効な文字列は「000」「001」「010」「100」「101」の5つとなり、「011」「110」「111」は連続する1を含むため除外されます。 アプローチ:動的計画法 この問題は動的計画法(DP)を使うことで効率的に解けます。各桁の状態を

  2. Pythonでアームストロング数を判定するプログラムの書き方

    この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す