ステップ 0、ステップ 1

Barbara Streisand
リリース: 2025-01-02 21:54:38
オリジナル
803 人が閲覧しました

Step zero, step one

ウィークリーチャレンジ 302

Mohammad S. Anwar は毎週、毎週 2 つのタスクに対する解決策を全員が考え出すチャンスであるウィークリー チャレンジを送信します。私のソリューションは最初に Python で書かれ、次に Perl に変換されます。これは、私たち全員がコーディングを練習するのに最適な方法です。

挑戦、私の解決策

タスク 1: 1 と 0

タスク

バイナリ文字列の配列 @str と 2 つの整数 $x と $y が与えられます。

サブセット内に最大 $x 0 と $y 1 が存在するように、@str の最大サブセットのサイズを返すスクリプトを作成します。

m のすべての要素が n の要素でもある場合、集合 m は n の部分集合です。

私の解決策

変数 x と y を呼び出すのではなく、より意味のある max_zeros と max_ones という名前を付けました。コマンドラインでは、最後の 2 つの値を max_zeros と max_ones として取り、残りの値を s 配列に取り込みます。

このタスクでは、 s の項目数が 1 になるまでの可変長を使用しています。次に、各長さについて、itertool の結合関数を使用して長さ項目の一意の組み合わせをすべて計算し、これをサブセット変数に格納します。

各サブセットについて、すべての文字列を結合し、0 と 1 の数を数え、それらがそれぞれ max_zeros と max_ones 以下であるかどうかを確認します。そうであれば、長さ変数を返します。何も見つからない場合は、ゼロを返します。

def ones_and_zeros(s: list, max_zeros: int, max_ones: int) -> int:
    for length in range(len(s), 0, -1):
        for subset in combinations(s, length):
            bits = ''.join(subset)
            if bits.count('0') <= max_zeros and bits.count('1') <= max_ones:
                return length

    return 0
ログイン後にコピー

$ ./ch-1.py 10 0001 111001 1 0 5 3
4

$ ./ch-1.py 10 0001 10 1 0 1 1
2
ログイン後にコピー

タスク 2: ステップバイステップ

タスク

整数の配列 @ints が与えられます。

ステップごとの合計が 1 を下回らないように、正の最小開始値を見つけるスクリプトを作成します。

私の解決策

非常に衒学的になりますが、正の整数のリストの「正の最小開始値」は 0.000...01 です。ただし、2 番目の例は、この数値が実際には整数であることを暗示しているようです。

このタスクでは、2 つの変数、ints リストの最初の値として設定される min_value とゼロの value から始めます。次に、int リストを反復処理し、その数値を value 変数に追加します。 value が min_value より小さい場合、min_value 変数を更新します。

min_value がゼロ以上の場合は 1 を返します。そうでない場合は 1 - min_value を返します。

def step_by_step(ints: list) -> int:
    min_value = ints[0]
    value = 0

    for i in ints:
        value += i
        if min_value > value:
            min_value = value

    if min_value >= 0:
        return 1

    return 1 - min_value
ログイン後にコピー

$ ./ch-1.py 10 0001 111001 1 0 5 3
4

$ ./ch-1.py 10 0001 10 1 0 1 1
2

$ ./ch-2.py -3 2 -3 4 2
5

$ ./ch-2.py 1 2
1

$ ./ch-2.py 1 -2 -3
5
ログイン後にコピー

以上がステップ 0、ステップ 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート