Python 3.11恶意软件模拟函数求助:无法生成预期输出
修正恶意软件行为模拟代码的问题
你的代码核心问题是Tl和Tr的偏移计算错误,不符合题目中给定的窗口模式Tl, -, -, X, -, -, -, Tr,导致判断逻辑偏离规则。
问题分析
根据窗口结构:
- Tl位于X的左侧第3个位置(中间间隔2个元素),即若X的索引为
i,则Tl的索引是i - 3 - Tr位于X的右侧第4个位置(中间间隔3个元素),即Tr的索引是
i + 4
而你的代码错误使用了i-2作为Tl的偏移、i+3作为Tr的偏移,同时边界判断也对应出错,导致部分位置的判断逻辑失效。
修正后的代码
def simulate(entries): result = entries.copy() for i in range(len(entries)): X = entries[i] # 检查左侧的Tl:i-3 >=0 时存在 if i >= 3: Tl = entries[i - 3] if Tl >= X: result[i] = 0 # 检查右侧的Tr:i+4 < len(entries) 时存在 if i <= len(entries) - 5: Tr = entries[i + 4] if Tr >= X: result[i] = 0 return result # 测试用例 records = [1, 2, 0, 5, 0, 2, 4, 3, 3, 3] result = simulate(records) print(result) # 输出: [1, 0, 0, 5, 0, 0, 0, 3, 3, 0]
修正说明
- 偏移修正:将Tl的偏移从
i-2改为i-3,Tr的偏移从i+3改为i+4,完全匹配题目中的窗口位置关系 - 边界修正:
- Tl的存在条件改为
i >=3(确保i-3不小于0) - Tr的存在条件改为
i <= len(entries)-5(确保i+4不超过数组最大索引)
- Tl的存在条件改为
- 保留原始数组判断逻辑:所有比较都基于未修改的
entries,符合题目中"先确定所有需设0的位置,再统一替换"的规则
运行修正后的代码,即可得到预期输出。
内容的提问来源于stack exchange,提问作者Legion Marketing
相关产品推荐
相关产品推荐

