回答編集履歴
2
Pythonでのコード例を追記
test
CHANGED
@@ -522,12 +522,268 @@
|
|
522
522
|
|
523
523
|
|
524
524
|
|
525
|
+
---
|
526
|
+
|
527
|
+
**実行例**
|
528
|
+
|
529
|
+
```
|
530
|
+
|
531
|
+
Input lacked number.
|
532
|
+
|
533
|
+
Press space key to start game.
|
534
|
+
|
535
|
+
|
536
|
+
|
537
|
+
1 2 3 4 5 7 8 9
|
538
|
+
|
539
|
+
6
|
540
|
+
|
541
|
+
Correct.
|
542
|
+
|
543
|
+
|
544
|
+
|
545
|
+
1 2 3 4 5 7 8 9
|
546
|
+
|
547
|
+
6
|
548
|
+
|
549
|
+
Correct.
|
550
|
+
|
551
|
+
|
552
|
+
|
553
|
+
1 2 3 4 5 6 7 9
|
554
|
+
|
555
|
+
9
|
556
|
+
|
557
|
+
8
|
558
|
+
|
559
|
+
Correct.
|
560
|
+
|
561
|
+
|
562
|
+
|
563
|
+
2017/09/14 12:01:40 : SCORE 7.6
|
564
|
+
|
565
|
+
```
|
566
|
+
|
567
|
+
|
568
|
+
|
525
569
|
ランキング機能を付けると、ファイル入出力が絡むだけもっと複雑になります。
|
526
570
|
|
527
571
|
|
528
572
|
|
573
|
+
追記
|
574
|
+
|
529
575
|
---
|
530
576
|
|
577
|
+
だいたい同じようなゲームを、Pythonでも実装してみました。
|
578
|
+
|
579
|
+
```Python
|
580
|
+
|
581
|
+
# main.py
|
582
|
+
|
583
|
+
|
584
|
+
|
585
|
+
from score_datum import ScoreDatum
|
586
|
+
|
587
|
+
from training import do_training
|
588
|
+
|
589
|
+
|
590
|
+
|
591
|
+
def main():
|
592
|
+
|
593
|
+
now_score_datum = do_training()
|
594
|
+
|
595
|
+
now_score_datum.print_info()
|
596
|
+
|
597
|
+
|
598
|
+
|
599
|
+
if __name__ == '__main__':
|
600
|
+
|
601
|
+
main()
|
602
|
+
|
603
|
+
```
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
```Python
|
608
|
+
|
609
|
+
# score_datum.py
|
610
|
+
|
611
|
+
|
612
|
+
|
613
|
+
import datetime
|
614
|
+
|
615
|
+
|
616
|
+
|
617
|
+
|
618
|
+
|
619
|
+
class ScoreDatum():
|
620
|
+
|
621
|
+
def __init__(self, score: float):
|
622
|
+
|
623
|
+
self._time_datum = datetime.datetime.today()
|
624
|
+
|
625
|
+
self._score = score
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
@property
|
630
|
+
|
631
|
+
def time_datum(self) -> datetime.datetime:
|
632
|
+
|
633
|
+
return self._time_datum
|
634
|
+
|
635
|
+
|
636
|
+
|
637
|
+
@property
|
638
|
+
|
639
|
+
def score(self) -> float:
|
640
|
+
|
641
|
+
return self._score
|
642
|
+
|
643
|
+
|
644
|
+
|
645
|
+
def print_info(self) -> None:
|
646
|
+
|
647
|
+
print(self.time_datum.ctime(), round(self.score, ndigits=1))
|
648
|
+
|
649
|
+
```
|
650
|
+
|
651
|
+
|
652
|
+
|
653
|
+
```Python
|
654
|
+
|
655
|
+
# training.py
|
656
|
+
|
657
|
+
|
658
|
+
|
659
|
+
from score_datum import ScoreDatum
|
660
|
+
|
661
|
+
from my_util import wait_key_input
|
662
|
+
|
663
|
+
import random
|
664
|
+
|
665
|
+
import time
|
666
|
+
|
667
|
+
|
668
|
+
|
669
|
+
NUM_LENGTH = 9
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
def do_training(stage_num: int = 3):
|
674
|
+
|
675
|
+
print()
|
676
|
+
|
677
|
+
print('Input lacked number.')
|
678
|
+
|
679
|
+
print('Press space key to start game.')
|
680
|
+
|
681
|
+
wait_key_input(' ')
|
682
|
+
|
683
|
+
|
684
|
+
|
685
|
+
start_time = time.time()
|
686
|
+
|
687
|
+
for _ in range(stage_num):
|
688
|
+
|
689
|
+
do_one_stage()
|
690
|
+
|
691
|
+
|
692
|
+
|
693
|
+
elapsed_time = time.time() - start_time
|
694
|
+
|
695
|
+
return ScoreDatum(elapsed_time)
|
696
|
+
|
697
|
+
|
698
|
+
|
699
|
+
def do_one_stage() -> None:
|
700
|
+
|
701
|
+
complete_list = list(range(NUM_LENGTH + 1))[1:]
|
702
|
+
|
703
|
+
|
704
|
+
|
705
|
+
lacked_number = random.randint(1, NUM_LENGTH)
|
706
|
+
|
707
|
+
lacked_list = _make_lack_list(complete_list, lacked_number)
|
708
|
+
|
709
|
+
|
710
|
+
|
711
|
+
print(lacked_list)
|
712
|
+
|
713
|
+
while True:
|
714
|
+
|
715
|
+
try:
|
716
|
+
|
717
|
+
input_num = int(input())
|
718
|
+
|
719
|
+
except:
|
720
|
+
|
721
|
+
continue
|
722
|
+
|
723
|
+
|
724
|
+
|
725
|
+
if input_num == lacked_number:
|
726
|
+
|
727
|
+
break
|
728
|
+
|
729
|
+
|
730
|
+
|
731
|
+
print('Correct.')
|
732
|
+
|
733
|
+
print()
|
734
|
+
|
735
|
+
|
736
|
+
|
737
|
+
def _count_num_in_list(src_list: list, num: int) -> int:
|
738
|
+
|
739
|
+
return src_list.count(num)
|
740
|
+
|
741
|
+
|
742
|
+
|
743
|
+
def _make_lack_list(src_list: list, lack_num: int) -> list:
|
744
|
+
|
745
|
+
if _count_num_in_list(src_list, lack_num) != 1:
|
746
|
+
|
747
|
+
return None
|
748
|
+
|
749
|
+
|
750
|
+
|
751
|
+
src_list.remove(lack_num)
|
752
|
+
|
753
|
+
return src_list
|
754
|
+
|
755
|
+
```
|
756
|
+
|
757
|
+
|
758
|
+
|
759
|
+
```Python
|
760
|
+
|
761
|
+
# my_util.py
|
762
|
+
|
763
|
+
|
764
|
+
|
765
|
+
def wait_key_input(key: str = None) -> None:
|
766
|
+
|
767
|
+
if key is None:
|
768
|
+
|
769
|
+
input()
|
770
|
+
|
771
|
+
return
|
772
|
+
|
773
|
+
|
774
|
+
|
775
|
+
while input() != key:
|
776
|
+
|
777
|
+
pass
|
778
|
+
|
779
|
+
|
780
|
+
|
781
|
+
```
|
782
|
+
|
783
|
+
|
784
|
+
|
785
|
+
---
|
786
|
+
|
531
787
|
**実行例**
|
532
788
|
|
533
789
|
```
|
@@ -538,7 +794,15 @@
|
|
538
794
|
|
539
795
|
|
540
796
|
|
797
|
+
[1, 2, 4, 5, 6, 7, 8, 9]
|
798
|
+
|
799
|
+
3
|
800
|
+
|
801
|
+
Correct.
|
802
|
+
|
803
|
+
|
804
|
+
|
541
|
-
1 2 3 4 5 7 8 9
|
805
|
+
[1, 2, 3, 4, 5, 7, 8, 9]
|
542
806
|
|
543
807
|
6
|
544
808
|
|
@@ -546,24 +810,22 @@
|
|
546
810
|
|
547
811
|
|
548
812
|
|
549
|
-
1 2 3 4 5
|
813
|
+
[1, 2, 3, 4, 5, 6, 8, 9]
|
550
814
|
|
551
815
|
6
|
552
816
|
|
817
|
+
7
|
818
|
+
|
553
819
|
Correct.
|
554
820
|
|
555
821
|
|
556
822
|
|
557
|
-
1 2 3 4 5 6 7 9
|
558
|
-
|
559
|
-
9
|
560
|
-
|
561
|
-
8
|
562
|
-
|
563
|
-
Correct.
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
823
|
+
Thu Sep 14 13:39:56 2017 5.6
|
568
|
-
|
824
|
+
|
569
|
-
```
|
825
|
+
```
|
826
|
+
|
827
|
+
|
828
|
+
|
829
|
+
リスト処理が楽なのは嬉しいですね。
|
830
|
+
|
831
|
+
文字数でカウントすると、Cの場合の約40%で実装出来ました。
|
1
Pythonno
test
CHANGED
File without changes
|