開発環境
- macOS Mojave - Apple
- Emacs (Text Editor)
- Python 3.7 (プログラミング言語)
問題解決のPythonプログラミング ―数学パズルで鍛えるアルゴリズム的思考 (Srini Devadas (著)、黒川 利明 (翻訳)、オライリージャパン)の3章(心を読む(準備をしてから))、練習問題(問題1)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
''' 問題 '''
deck = [f'{num}_{suit}'
for num in ['A'] + list(range(2, 11)) + ['J', 'Q', 'K']
for suit in ['C', 'D', 'H', 'S']]
print('deck')
for i, card in enumerate(deck):
print(card, end=' ')
if i % 4 == 3:
print()
def check(cards):
for i, card1 in enumerate(cards):
for card2 in cards[i + 1:]:
if card1 == card2:
return False
return True
def computer_assistant(number):
# number = int(input('Please give random number of at least 6 digits: '))
'''
>>> check(computer_assistant(888888))
True
'''
cards = []
i = 0
while len(cards) < 5:
number = number * (i + 1) // (i + 2)
n = number % 52
card_new = deck[n]
if card_new not in cards:
cards.append(card_new)
i += 1
return cards
if __name__ == '__main__':
import doctest
doctest.testmod()
入出力結果(Terminal, Jupyter(IPython))
$ ./sample1.py
deck
A_C A_D A_H A_S
2_C 2_D 2_H 2_S
3_C 3_D 3_H 3_S
4_C 4_D 4_H 4_S
5_C 5_D 5_H 5_S
6_C 6_D 6_H 6_S
7_C 7_D 7_H 7_S
8_C 8_D 8_H 8_S
9_C 9_D 9_H 9_S
10_C 10_D 10_H 10_S
J_C J_D J_H J_S
Q_C Q_D Q_H Q_S
K_C K_D K_H K_S
Trying:
check(computer_assistant(888888))
Expecting:
True
ok
2 items had no tests:
__main__
__main__.check
1 items passed all tests:
1 tests in __main__.computer_assistant
1 tests in 3 items.
1 passed and 0 failed.
Test passed.
$
0 コメント:
コメントを投稿