開発環境
- 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 コメント:
コメントを投稿