回答編集履歴

2

追記

2018/12/20 05:39

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -91,3 +91,57 @@
91
91
  8/3,4,16/3,20/3,8,28/3,32/3,12
92
92
 
93
93
  ```
94
+
95
+
96
+
97
+ おまけ
98
+
99
+ ---
100
+
101
+ 無駄に技量的に書くとこんな感じ。
102
+
103
+ ```Python
104
+
105
+ from itertools import starmap
106
+
107
+ from fractions import Fraction
108
+
109
+
110
+
111
+ import operator as op
112
+
113
+
114
+
115
+
116
+
117
+ src = range(1, 11)
118
+
119
+ kernel = [
120
+
121
+ Fraction(1, 3), Fraction(2, 3), Fraction(1, 3)
122
+
123
+ ]
124
+
125
+
126
+
127
+ dst = [
128
+
129
+ sum(
130
+
131
+ starmap(op.mul, zip(elems, kernel))
132
+
133
+ )
134
+
135
+ for elems
136
+
137
+ in zip(*(
138
+
139
+ src[off:] for off in range(len(kernel))
140
+
141
+ ))
142
+
143
+ ]
144
+
145
+ print(*dst, sep=',')
146
+
147
+ ```

1

追記

2018/12/20 05:39

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -49,3 +49,45 @@
49
49
 
50
50
 
51
51
  分数を取り扱いたい場合は、[fractionsモジュール](https://docs.python.jp/3/library/fractions.html)の利用を検討します。
52
+
53
+ ```Python
54
+
55
+ from fractions import Fraction
56
+
57
+
58
+
59
+ src = range(1, 11)
60
+
61
+ kernel = [
62
+
63
+ Fraction(1, 3), Fraction(2, 3), Fraction(1, 3)
64
+
65
+ ]
66
+
67
+
68
+
69
+ dst = []
70
+
71
+ for elems in zip(src, src[1:], src[2:]):
72
+
73
+ dst.append(0)
74
+
75
+ for e, k in zip(elems, kernel):
76
+
77
+ dst[-1] += e * k
78
+
79
+
80
+
81
+ print(*dst, sep=',')
82
+
83
+ ```
84
+
85
+
86
+
87
+ **実行結果** [Wandbox](https://wandbox.org/permlink/TGX3kOsbJefT8iyR)
88
+
89
+ ```
90
+
91
+ 8/3,4,16/3,20/3,8,28/3,32/3,12
92
+
93
+ ```