回答編集履歴
3
コード修正
answer
CHANGED
@@ -10,13 +10,11 @@
|
|
10
10
|
``` python
|
11
11
|
def checkio(text):
|
12
12
|
abc = 'abcdefghijklmnopqrstuvwxyz'
|
13
|
-
# 解析したいtextを小文字abc順にcount
|
14
13
|
text_lower = text.lower()
|
15
14
|
counts = [text_lower.count(c) for c in abc]
|
16
|
-
# 最頻値のindexの文字を返す
|
17
15
|
return abc[counts.index(max(counts))]
|
18
16
|
|
19
|
-
|
17
|
+
'''
|
20
18
|
# --- TEST ---
|
21
19
|
print('\n'.join(map(str, [
|
22
20
|
checkio("Hello World!") == "l",
|
@@ -29,11 +27,27 @@
|
|
29
27
|
])))
|
30
28
|
'''
|
31
29
|
import random
|
30
|
+
import string
|
32
31
|
import time
|
32
|
+
|
33
|
+
|
33
|
-
|
34
|
+
def check_solve_time(N=1):
|
34
|
-
random_text = ''.join(random.
|
35
|
+
random_text = ''.join(random.choices(string.ascii_letters, k=10 ** N))
|
35
|
-
start = time.time()
|
36
|
+
start = time.time()
|
36
|
-
|
37
|
+
checkio(random_text)
|
38
|
+
elapsed_time = time.time() - start
|
39
|
+
return 'O(10 ** {}): {:.8f}sec'.format(N, elapsed_time)
|
40
|
+
|
37
|
-
print('
|
41
|
+
print('\n'.join(map(check_solve_time, range(1, 9))))
|
42
|
+
''' output
|
43
|
+
|
44
|
+
O(10 ** 1): 0.00002789sec
|
45
|
+
O(10 ** 2): 0.00002408sec
|
46
|
+
O(10 ** 3): 0.00008702sec
|
47
|
+
O(10 ** 4): 0.00072193sec
|
48
|
+
O(10 ** 5): 0.00718522sec
|
49
|
+
O(10 ** 6): 0.07049918sec
|
50
|
+
O(10 ** 7): 0.72828794sec
|
51
|
+
O(10 ** 8): 7.26664400sec
|
38
52
|
'''
|
39
53
|
```
|
2
コード修正
answer
CHANGED
@@ -30,7 +30,8 @@
|
|
30
30
|
'''
|
31
31
|
import random
|
32
32
|
import time
|
33
|
+
abc = 'abcdefghijklmnopqrstuvwxyz'
|
33
|
-
random_text = ''.join(random.choice(
|
34
|
+
random_text = ''.join(random.choice(abc) for _ in range(10 ** 6))
|
34
35
|
start = time.time()
|
35
36
|
print(checkio(random_text))
|
36
37
|
print('{}sec'.format(time.time() - start))
|
1
追記
answer
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
別解として、参考にしてください。
|
2
|
+
|
3
|
+
--
|
4
|
+
|
1
5
|
命題に対してcollectionsのCounterだと思うように効果を発揮しないように感じます。
|
2
6
|
|
3
7
|
私なら以下のように解きます。
|