回答編集履歴

3

コード修正

2018/04/08 10:03

投稿

arch_
arch_

スコア158

test CHANGED
@@ -22,19 +22,15 @@
22
22
 
23
23
  abc = 'abcdefghijklmnopqrstuvwxyz'
24
24
 
25
- # 解析したいtextを小文字abc順にcount
26
-
27
25
  text_lower = text.lower()
28
26
 
29
27
  counts = [text_lower.count(c) for c in abc]
30
-
31
- # 最頻値のindexの文字を返す
32
28
 
33
29
  return abc[counts.index(max(counts))]
34
30
 
35
31
 
36
32
 
37
-
33
+ '''
38
34
 
39
35
  # --- TEST ---
40
36
 
@@ -60,17 +56,49 @@
60
56
 
61
57
  import random
62
58
 
59
+ import string
60
+
63
61
  import time
64
62
 
65
- abc = 'abcdefghijklmnopqrstuvwxyz'
66
63
 
67
- random_text = ''.join(random.choice(abc) for _ in range(10 ** 6))
68
64
 
69
- start = time.time()
70
65
 
71
- print(checkio(random_text))
72
66
 
67
+ def check_solve_time(N=1):
68
+
69
+ random_text = ''.join(random.choices(string.ascii_letters, k=10 ** N))
70
+
71
+ start = time.time()
72
+
73
+ checkio(random_text)
74
+
75
+ elapsed_time = time.time() - start
76
+
77
+ return 'O(10 ** {}): {:.8f}sec'.format(N, elapsed_time)
78
+
79
+
80
+
73
- print('{}sec'.format(time.time() - start))
81
+ print('\n'.join(map(check_solve_time, range(1, 9))))
82
+
83
+ ''' output
84
+
85
+
86
+
87
+ O(10 ** 1): 0.00002789sec
88
+
89
+ O(10 ** 2): 0.00002408sec
90
+
91
+ O(10 ** 3): 0.00008702sec
92
+
93
+ O(10 ** 4): 0.00072193sec
94
+
95
+ O(10 ** 5): 0.00718522sec
96
+
97
+ O(10 ** 6): 0.07049918sec
98
+
99
+ O(10 ** 7): 0.72828794sec
100
+
101
+ O(10 ** 8): 7.26664400sec
74
102
 
75
103
  '''
76
104
 

2

コード修正

2018/04/08 10:03

投稿

arch_
arch_

スコア158

test CHANGED
@@ -62,7 +62,9 @@
62
62
 
63
63
  import time
64
64
 
65
+ abc = 'abcdefghijklmnopqrstuvwxyz'
66
+
65
- random_text = ''.join(random.choice(alphabets) for _ in range(10 ** 6))
67
+ random_text = ''.join(random.choice(abc) for _ in range(10 ** 6))
66
68
 
67
69
  start = time.time()
68
70
 

1

追記

2018/04/08 07:30

投稿

arch_
arch_

スコア158

test CHANGED
@@ -1,3 +1,11 @@
1
+ 別解として、参考にしてください。
2
+
3
+
4
+
5
+ --
6
+
7
+
8
+
1
9
  命題に対してcollectionsのCounterだと思うように効果を発揮しないように感じます。
2
10
 
3
11