challenge 急勾配の判定

有限の長さの数列で,各要素の値が,その要素の後ろにある残りの列に含まれるすべての要素の和よりも大きい列を「急勾配の列」ということにします(空列の和は0とします).

任意の長さ(ただし有限の長さの)数列を与えられたとき,それが「急勾配の列」であるかどうかを判定する述語関数を定義してください.

必須ではありませんが,効率についてコメントがあれば面白いかもしれませんね.

Posted feedbacks - J

累積値のリストをつくって元のリストと比較しているので
効率は良くないと思います。
   ]data1=: 2^i._15
16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
   ]data2=: 100(0)}2^i._15
100 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
   f data1
1
   f data2
0
1
f=:*/@(>(-~+/\.))

Index

Feed

Other

Link

Pathtraq

loading...