回答編集履歴

2

追記

2019/06/27 05:38

投稿

LouiS0616
LouiS0616

スコア35676

test CHANGED
@@ -111,3 +111,7 @@
111
111
  7萬 1筒 4筒 9筒 2索 3索 9索 東 東 西 白 白 中
112
112
 
113
113
  ```
114
+
115
+
116
+
117
+ 実際にはcollections.dequeあたりを使った方が牌の重複などトラブルは起きづらいでしょう。

1

追記

2019/06/27 05:38

投稿

LouiS0616
LouiS0616

スコア35676

test CHANGED
@@ -17,3 +17,97 @@
17
17
  yamahai[0,1]と書けば0番目と1番目を取り出せる...
18
18
 
19
19
  **なんて便利機能は無いからです。存在しない文法を使ってはいけません。**
20
+
21
+
22
+
23
+ おまけ
24
+
25
+ ---
26
+
27
+ すごく雑な実装でも良ければこんなふうにも書けます。
28
+
29
+ ```Python
30
+
31
+ import random
32
+
33
+
34
+
35
+
36
+
37
+ def make_pieces():
38
+
39
+ pieces = ['東', '南', '西', '北', '白', '發', '中']
40
+
41
+ pieces += [
42
+
43
+ '{}{}'.format(n, k)
44
+
45
+ for n in range(1, 10)
46
+
47
+ for k in ['萬', '筒', '索']
48
+
49
+ ]
50
+
51
+
52
+
53
+ return 4 * pieces
54
+
55
+
56
+
57
+
58
+
59
+ def key_for_piece(piece):
60
+
61
+ honors = ['東', '南', '西', '北', '白', '發', '中']
62
+
63
+ if piece in honors:
64
+
65
+ return 90 + honors.index(piece)
66
+
67
+
68
+
69
+ #
70
+
71
+ simples = ['萬', '筒', '索']
72
+
73
+ num, simple = piece
74
+
75
+
76
+
77
+ return simples.index(simple) * 10 + int(num)
78
+
79
+
80
+
81
+
82
+
83
+ def print_pieces(pieces):
84
+
85
+ pieces = sorted(pieces, key=key_for_piece)
86
+
87
+ print(*pieces)
88
+
89
+
90
+
91
+
92
+
93
+ pieces = make_pieces()
94
+
95
+ random.shuffle(pieces)
96
+
97
+
98
+
99
+ hand = pieces[:13]
100
+
101
+ print_pieces(hand)
102
+
103
+ ```
104
+
105
+
106
+
107
+ **実行結果** [Wandbox](https://wandbox.org/permlink/0D3yer2vY5ZmBopN)
108
+
109
+ ```plain
110
+
111
+ 7萬 1筒 4筒 9筒 2索 3索 9索 東 東 西 白 白 中
112
+
113
+ ```