如何耗尽全局变量num-tourists?剩余不足15时取剩余值的实现
全局变量
num-tourists的动态处理实现 现有代码问题
你当前的代码固定按15名游客计算收入并扣除数量,会导致游客数为负的错误,也无法处理游客不足15的场景。
解决方案代码
修改后的代码会动态计算每个卖家实际可处理的游客数,确保逻辑正确:
; 先确保全局变量和海龟属性已声明 globals [ num-tourists ] turtles-own [ turism earnings ] ; 处理游客的核心逻辑 ask turtles with [turism = 1] [ ; 计算实际能处理的游客数:不超过卖家上限15,也不超过剩余游客数 let handled-tourists min (list 15 num-tourists) ; 根据实际处理量更新收入 set earnings earnings + (handled-tourists * 100000) ; 从全局游客数中扣除已处理的数量 set num-tourists num-tourists - handled-tourists ]
关键逻辑说明
let handled-tourists min (list 15 num-tourists):通过min函数取15和当前剩余游客数的较小值,既保证不超过卖家的处理上限,也避免游客数出现负数。- 收入计算和游客扣除都基于实际处理量,完全匹配剩余游客的动态变化。
- 若存在多个
turism=1的卖家,代码会依次处理:第一个卖家先取最多15名(或剩余全部),后续卖家继续处理剩余游客,直到全局游客数为0。
内容的提问来源于stack exchange,提问作者bksnlow
相关产品推荐
相关产品推荐

