急勾配の判定
Posted feedbacks - HSP
後ろから反復してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #module
#define true 1
#define false 0
#defcfunc IsSteepSlope array arr, \
local size, local nowSum, local bResult
size = length(arr)
nowSum = 0
bResult = true
repeat size, 1
if ( cnt == 1 || nowSum < arr(size - cnt) ) {
nowSum += arr(size - cnt)
} else {
bResult = false
break
}
loop
return bResult
#global
list = 128, 64, 32, 16, 8, 4
mes IsSteepSlope(list)
stop
|


nobsun
#8891()
Rating1/1=1.00
有限の長さの数列で,各要素の値が,その要素の後ろにある残りの列に含まれるすべての要素の和よりも大きい列を「急勾配の列」ということにします(空列の和は0とします).
任意の長さ(ただし有限の長さの)数列を与えられたとき,それが「急勾配の列」であるかどうかを判定する述語関数を定義してください.
必須ではありませんが,効率についてコメントがあれば面白いかもしれませんね.
[ reply ]