回答編集履歴

2

コード修正

2016/11/08 15:08

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -22,7 +22,11 @@
22
22
 
23
23
  # 1.まだ座られていない座席番号リスト
24
24
 
25
+ A = 6
26
+
25
- remaining_seats = [1,2,3,4,5,6]
27
+ remaining_seats = [(i+1) for i in range(A)]
28
+
29
+
26
30
 
27
31
  # 2.各グループの着席開始番号と個数のリスト
28
32
 
@@ -138,7 +142,9 @@
138
142
 
139
143
  # 1.まだ座られていない座席番号リスト
140
144
 
145
+ A = 6
146
+
141
- remaining_seats = [1,2,3,4,5,6]
147
+ remaining_seats = [(i+1) for i in range(A)]
142
148
 
143
149
 
144
150
 

1

コード修正

2016/11/08 15:08

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -113,3 +113,101 @@
113
113
  以上、ご自身の書かれたコードのどこにバグがあるかを見つけ出す
114
114
 
115
115
  参考になれば幸いです。
116
+
117
+
118
+
119
+
120
+
121
+ ---
122
+
123
+ 【以下、追記】
124
+
125
+ 例外を使わずに以下でもOKでした。
126
+
127
+
128
+
129
+ ```Python
130
+
131
+ #!/usr/bin/env python
132
+
133
+ # -*- coding: utf-8 -*-
134
+
135
+
136
+
137
+ # 初期設定:
138
+
139
+ # 1.まだ座られていない座席番号リスト
140
+
141
+ remaining_seats = [1,2,3,4,5,6]
142
+
143
+
144
+
145
+ # 2.各グループの着席開始番号と個数のリスト
146
+
147
+ groups = [
148
+
149
+ {'start':2, 'num':3},
150
+
151
+ {'start':6, 'num':1},
152
+
153
+ {'start':5, 'num':2} ]
154
+
155
+
156
+
157
+ # 関数 diff(a, b)
158
+
159
+ # リストaからリストbの要素を除去したリストを新たに生成して返す。
160
+
161
+ # ただし、bの要素でaに含まれないものがある場合、a を返す。
162
+
163
+ def diff(a, b):
164
+
165
+
166
+
167
+ a_copy = list(a)
168
+
169
+
170
+
171
+ for e in b:
172
+
173
+ if e in a:
174
+
175
+ a_copy.remove(e)
176
+
177
+ else:
178
+
179
+ return a
180
+
181
+
182
+
183
+ return a_copy
184
+
185
+
186
+
187
+
188
+
189
+ # メインの処理ループ
190
+
191
+ for g in groups:
192
+
193
+
194
+
195
+ # グループ g によって取られる席番号のリストを作成
196
+
197
+ assigned_seats = [(g['start'] + i) for i in range(g['num'])]
198
+
199
+
200
+
201
+ # 残っている座席から取られる座席を除去して、残っている座席を更新
202
+
203
+ remaining_seats = diff(remaining_seats, assigned_seats)
204
+
205
+
206
+
207
+
208
+
209
+ # 結果の表示
210
+
211
+ print(remaining_seats)
212
+
213
+ ```