파이썬 학습에 대한 제 여행의 일부로 불스와 소를 구현하고 있습니다.
목록 작성을 사용하는 작업 구현이 있지만 생성자와 reduce()
- 최종 결과 -를 사용하여이를 해결하는 좋은 해결책이 될 수 있다고 생각했습니다.튜플 목록 축소
그래서 난 내 발전기가 :
def bullsandcows(given, number):
for i in range(given.__len__()):
if given[i] == number[i]:
yield (given[i], None)
elif given[i] in number:
yield (None, given[i])
을 그리고 내 줄일 구현 : given
은 사용자 입력 및 number
사용자가 추측하기 무작위로 생성 된 번호입니다
(bulls, cows) = reduce(\
lambda (bull, cow), (b, c): \
(bull + 1, cow + 1), bullsandcows(given, number), (0, 0))
.
여기서 알 수 있듯이, 이것은 정확히 작동하는 구현은 아니며, yield
ed 튜플의 개수를 반환합니다.
내가 필요한 것은 (bull + 1, cow + 1)
의 대체품이며, 어떻게 구성해야할지 모르겠다.
number
는 임의로 생성 된 번호라고되어1234
given
는 사용자에 의해 입력되고, 말 :8241
- 가
bullsandcows(given, number)
의 결과가 될 것이다 :[('2', None), (None, '4'), (None, '1']
는 reduce
결과이어야 :(1, 2)
, 이는 첫 번째 요소의 모든 비 -None
값의 수이고 두 번째 요소의 모든 비 -None
값의 수입니다. 내가 제대로 과정을 이해하면 63,210
은'사용하지 마십시오 .__ 렌()'(주어)'명확 __ 대신'zip()'을 사용할 수있을 때'range()'를 사용하지 마십시오. –
맞습니다. '황소 새끼 '의 생산량을 무시하는 것처럼 보이지 않습니다. 결과는 항상 생성자의 결과 수를 포함하는 두 요소 튜플입니다. –
람다에서'(b, c) '튜플을 무시하고 있습니다. –