teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2018/12/20 05:39

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -44,4 +44,31 @@
44
44
  **実行結果** [Wandbox](https://wandbox.org/permlink/TGX3kOsbJefT8iyR)
45
45
  ```
46
46
  8/3,4,16/3,20/3,8,28/3,32/3,12
47
+ ```
48
+
49
+ おまけ
50
+ ---
51
+ 無駄に技量的に書くとこんな感じ。
52
+ ```Python
53
+ from itertools import starmap
54
+ from fractions import Fraction
55
+
56
+ import operator as op
57
+
58
+
59
+ src = range(1, 11)
60
+ kernel = [
61
+ Fraction(1, 3), Fraction(2, 3), Fraction(1, 3)
62
+ ]
63
+
64
+ dst = [
65
+ sum(
66
+ starmap(op.mul, zip(elems, kernel))
67
+ )
68
+ for elems
69
+ in zip(*(
70
+ src[off:] for off in range(len(kernel))
71
+ ))
72
+ ]
73
+ print(*dst, sep=',')
47
74
  ```

1

追記

2018/12/20 05:39

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -23,4 +23,25 @@
23
23
  > つまり,最終アウトプットは
24
24
  8/3,4,16/3,20/3,8,......12という出力ファイルを作りたいです.
25
25
 
26
- 分数を取り扱いたい場合は、[fractionsモジュール](https://docs.python.jp/3/library/fractions.html)の利用を検討します。
26
+ 分数を取り扱いたい場合は、[fractionsモジュール](https://docs.python.jp/3/library/fractions.html)の利用を検討します。
27
+ ```Python
28
+ from fractions import Fraction
29
+
30
+ src = range(1, 11)
31
+ kernel = [
32
+ Fraction(1, 3), Fraction(2, 3), Fraction(1, 3)
33
+ ]
34
+
35
+ dst = []
36
+ for elems in zip(src, src[1:], src[2:]):
37
+ dst.append(0)
38
+ for e, k in zip(elems, kernel):
39
+ dst[-1] += e * k
40
+
41
+ print(*dst, sep=',')
42
+ ```
43
+
44
+ **実行結果** [Wandbox](https://wandbox.org/permlink/TGX3kOsbJefT8iyR)
45
+ ```
46
+ 8/3,4,16/3,20/3,8,28/3,32/3,12
47
+ ```