0

質問が不明確になる可能性があることは承知しています。説明してみます。

シーケンスを生成するシステムがあまり正確ではないことだけを確認する必要があるシナリオがあります。5,10,15,20....,値を見逃すか、いくつかの値を繰り返すことがあります5, 10,10,20,25,30,40.

ご覧のとおり、 の許容誤差があり5-10ます。

これは大丈夫です。シーケンスが次のように逆行しないことを確認する必要があります5,10,15,10.. or 5,10,9,....

時折のミスまたは繰り返しで単調に増加するシーケンスが見られる場合は合格し、値が逆行するか、値が 100 を超えて異なる場合は失敗するロジックを使用してPASS FAIL条件を記述する必要があります。10 (like 5, 20, 15...)

誰かがこれの正しいロジックを特定するのを手伝ってくれますか

4

3 に答える 3

1

一発ギャグ:

def validate(li):
    return all(x==y or 5<=(y-x)<=10 for x,y in zip(li,li[1:]))

データが 5 ずつ単調増加するソースに由来することを本当に主張したい場合は、シーケンス ( li[-1]) の最大値が約であるというロジックを追加することもできます5*len(li) + li[0]

于 2014-02-26T06:18:31.803 に答える
0

簡単な方法はどうですか:

previousVal = ###
actualVal = ###

difference = actualVal - previousVal

if 0 <= difference <= 10  ## Change acc. to your requirement. Unclear if its 5-10 or 0-10
    #PASS
else:
    #FAIL!

入力として取得するリストの場合は、元のリストを 1 ずつシフトしたリストで圧縮し、タプルを反復処理できます。

于 2014-02-26T06:18:22.020 に答える
0

シーケンスがリストの場合、lこれを使用できます。

'FAIL' if any(l[i]<l[i-1] or l[i]-l[i-1]>10 for i in xrange(1,len(l))) else 'PASS'
于 2014-02-26T06:20:15.147 に答える