금지 문자 목록 대신 허용 문자 목록을 사용한다. word에서 이용할 수 없는 문자를 발견하면 False를 반환한다.
uses_all은 단어와 문자들로 된 문자열의 역할을 거꾸로 한다는 점만 제외하면 비슷하다.
def uses_all(word, required):
for letter in required:
if letter not in word:
return False
return True
루프는 word의 문자들을 순회하지 않고, 필수 문자들을 순회한다. 필수 문자가 단어에 없다면 False를 반환한다.
정말 컴퓨터 과학자처럼 생각하고 싶다면 uses_all이 앞서 해결한 문제들의 한 가지 예에 불과하다는 점을 알아챘어야 하며 다음과 같이 작성할 수도 있어야 한다.
def uses_all(word, required):
return uses_only(required, word)
이 예는 프로그램 개발 계획에서 이전에 해결한 문제를 개선하기라고 하는 것이다. 작업 중인 문제를 해결된 문제의 한 예로 인식하고 기존 해법을 적용하는 것이다.