回答編集履歴
2
Pythonでのコード例を追記
answer
CHANGED
|
@@ -260,8 +260,6 @@
|
|
|
260
260
|
}
|
|
261
261
|
```
|
|
262
262
|
|
|
263
|
-
ランキング機能を付けると、ファイル入出力が絡むだけもっと複雑になります。
|
|
264
|
-
|
|
265
263
|
---
|
|
266
264
|
**実行例**
|
|
267
265
|
```
|
|
@@ -282,4 +280,137 @@
|
|
|
282
280
|
Correct.
|
|
283
281
|
|
|
284
282
|
2017/09/14 12:01:40 : SCORE 7.6
|
|
285
|
-
```
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
ランキング機能を付けると、ファイル入出力が絡むだけもっと複雑になります。
|
|
286
|
+
|
|
287
|
+
追記
|
|
288
|
+
---
|
|
289
|
+
だいたい同じようなゲームを、Pythonでも実装してみました。
|
|
290
|
+
```Python
|
|
291
|
+
# main.py
|
|
292
|
+
|
|
293
|
+
from score_datum import ScoreDatum
|
|
294
|
+
from training import do_training
|
|
295
|
+
|
|
296
|
+
def main():
|
|
297
|
+
now_score_datum = do_training()
|
|
298
|
+
now_score_datum.print_info()
|
|
299
|
+
|
|
300
|
+
if __name__ == '__main__':
|
|
301
|
+
main()
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
```Python
|
|
305
|
+
# score_datum.py
|
|
306
|
+
|
|
307
|
+
import datetime
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
class ScoreDatum():
|
|
311
|
+
def __init__(self, score: float):
|
|
312
|
+
self._time_datum = datetime.datetime.today()
|
|
313
|
+
self._score = score
|
|
314
|
+
|
|
315
|
+
@property
|
|
316
|
+
def time_datum(self) -> datetime.datetime:
|
|
317
|
+
return self._time_datum
|
|
318
|
+
|
|
319
|
+
@property
|
|
320
|
+
def score(self) -> float:
|
|
321
|
+
return self._score
|
|
322
|
+
|
|
323
|
+
def print_info(self) -> None:
|
|
324
|
+
print(self.time_datum.ctime(), round(self.score, ndigits=1))
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
```Python
|
|
328
|
+
# training.py
|
|
329
|
+
|
|
330
|
+
from score_datum import ScoreDatum
|
|
331
|
+
from my_util import wait_key_input
|
|
332
|
+
import random
|
|
333
|
+
import time
|
|
334
|
+
|
|
335
|
+
NUM_LENGTH = 9
|
|
336
|
+
|
|
337
|
+
def do_training(stage_num: int = 3):
|
|
338
|
+
print()
|
|
339
|
+
print('Input lacked number.')
|
|
340
|
+
print('Press space key to start game.')
|
|
341
|
+
wait_key_input(' ')
|
|
342
|
+
|
|
343
|
+
start_time = time.time()
|
|
344
|
+
for _ in range(stage_num):
|
|
345
|
+
do_one_stage()
|
|
346
|
+
|
|
347
|
+
elapsed_time = time.time() - start_time
|
|
348
|
+
return ScoreDatum(elapsed_time)
|
|
349
|
+
|
|
350
|
+
def do_one_stage() -> None:
|
|
351
|
+
complete_list = list(range(NUM_LENGTH + 1))[1:]
|
|
352
|
+
|
|
353
|
+
lacked_number = random.randint(1, NUM_LENGTH)
|
|
354
|
+
lacked_list = _make_lack_list(complete_list, lacked_number)
|
|
355
|
+
|
|
356
|
+
print(lacked_list)
|
|
357
|
+
while True:
|
|
358
|
+
try:
|
|
359
|
+
input_num = int(input())
|
|
360
|
+
except:
|
|
361
|
+
continue
|
|
362
|
+
|
|
363
|
+
if input_num == lacked_number:
|
|
364
|
+
break
|
|
365
|
+
|
|
366
|
+
print('Correct.')
|
|
367
|
+
print()
|
|
368
|
+
|
|
369
|
+
def _count_num_in_list(src_list: list, num: int) -> int:
|
|
370
|
+
return src_list.count(num)
|
|
371
|
+
|
|
372
|
+
def _make_lack_list(src_list: list, lack_num: int) -> list:
|
|
373
|
+
if _count_num_in_list(src_list, lack_num) != 1:
|
|
374
|
+
return None
|
|
375
|
+
|
|
376
|
+
src_list.remove(lack_num)
|
|
377
|
+
return src_list
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
```Python
|
|
381
|
+
# my_util.py
|
|
382
|
+
|
|
383
|
+
def wait_key_input(key: str = None) -> None:
|
|
384
|
+
if key is None:
|
|
385
|
+
input()
|
|
386
|
+
return
|
|
387
|
+
|
|
388
|
+
while input() != key:
|
|
389
|
+
pass
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
**実行例**
|
|
395
|
+
```
|
|
396
|
+
Input lacked number.
|
|
397
|
+
Press space key to start game.
|
|
398
|
+
|
|
399
|
+
[1, 2, 4, 5, 6, 7, 8, 9]
|
|
400
|
+
3
|
|
401
|
+
Correct.
|
|
402
|
+
|
|
403
|
+
[1, 2, 3, 4, 5, 7, 8, 9]
|
|
404
|
+
6
|
|
405
|
+
Correct.
|
|
406
|
+
|
|
407
|
+
[1, 2, 3, 4, 5, 6, 8, 9]
|
|
408
|
+
6
|
|
409
|
+
7
|
|
410
|
+
Correct.
|
|
411
|
+
|
|
412
|
+
Thu Sep 14 13:39:56 2017 5.6
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
リスト処理が楽なのは嬉しいですね。
|
|
416
|
+
文字数でカウントすると、Cの場合の約40%で実装出来ました。
|
1
Pythonno
answer
CHANGED
|
File without changes
|