0단계, 1단계

Barbara Streisand
풀어 주다: 2025-01-02 21:54:38
원래의
803명이 탐색했습니다.

Step zero, step one

주간 챌린지 302

매주 Mohammad S. Anwar는 우리 모두가 두 가지 주간 작업에 대한 해결책을 생각해 낼 수 있는 주간 챌린지를 보냅니다. 내 솔루션은 먼저 Python으로 작성된 다음 Perl로 변환되었습니다. 이는 우리 모두가 코딩을 연습할 수 있는 좋은 방법입니다.

도전, 나의 솔루션

작업 1: 1과 0

이진 문자열 @str과 두 개의 정수 $x 및 $y의 배열이 제공됩니다.

하위 집합에 최대 $x 0과 $y 1이 있도록 @str의 가장 큰 하위 집합의 크기를 반환하는 스크립트를 작성하세요.

m의 모든 요소가 n의 요소이기도 하면 집합 m은 n의 부분 집합입니다.

내 솔루션

변수 x와 y를 호출하는 것보다 더 의미가 있기 때문에 max_zeros 및 max_ones라는 이름을 지정했습니다. 명령줄의 경우 마지막 두 값을 max_zeros 및 max_ones로 사용하고 나머지 값은 s 배열에 넣습니다.

이 작업을 위해 s의 항목 수부터 시작하여 1까지의 가변 길이를 사용합니다. 그런 다음 각 길이에 대해 itertool의 조합 기능을 사용하여 길이 항목의 모든 고유한 조합을 계산하고 이를 하위 집합 변수에 저장합니다.

각 하위 집합에 대해 모든 문자열을 함께 결합하고 0과 1의 수를 세고 각각 max_zeros 및 max_ones보다 작거나 같은지 확인합니다. 그렇다면 길이 변수를 반환합니다. 아무 것도 발견되지 않으면 0을 반환합니다.

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: 단계별

정수 배열 @int가 제공됩니다.

단계별 합계가 1보다 작지 않도록 최소 양의 시작 값을 찾는 스크립트를 작성하세요.

내 솔루션

정말 현명하게 말하면 양의 정수 목록에 대한 "최소 양의 시작 값"은 0.000...01입니다. 그러나 두 번째 예는 이 숫자가 실제로 정수임을 암시하는 것 같습니다.

이 작업에서는 int 목록의 첫 번째 값으로 설정된 min_value와 0인 value라는 두 개의 변수로 시작합니다. 그런 다음 ints 목록을 반복하고 해당 숫자를 값 변수에 추가합니다. 값이 min_value보다 작으면 min_value 변수를 업데이트합니다.

min_value가 0보다 크거나 같으면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿