若几个理想水池共享同一水平水面,而池底高低和横截面积不同,给每池平均分配体积通常无法得到相同水位。应先确定哪些池底已经被水面覆盖,再计算增加水位需要多少体积。
本例采用的规则
本例池壁竖直、面积固定,水可在所有低于共同水面的池中自由交换。某池水深为共同水位减池底高度与零中的较大者,体积为水深乘面积。给定总水量后,按池底高度依次增加参与的池面积,求体积守恒的共同水位。
独立输入与结果
四池底高[0, 6, 8, 6],横截面积[1, 2, 5, 2],总水量88。
当前水位 | 下一池底 | 已参与面积 | 抬升所需水量 | 当前剩余量 0 | 6 | 1 | 6 | 88 6 | 8 | 5 | 10 | 82 共同水位76/5。 池号 | 底高 | 面积 | 水深 | 水体积 0 | 0 | 1 | 76/5 | 76/5 1 | 6 | 2 | 46/5 | 92/5 2 | 8 | 5 | 36/5 | 36 3 | 6 | 2 | 46/5 | 92/5
表中的编号仅用于区分当前案例里的对象,不能与数值大小或另一份记录中的身份混淆。先核对输入、单位和边界约定,再跟随过程检查输出。空列表、不存在和数值零各有不同含义,分数则保留精确形式便于复算。
检查与练习
低于水面的池有正水深,高于或等于水面的池深为零。各池体积之和必须等于输入总量,不能把底更高的池也从最低水位起一直计入面积。总水量为正时,水位高于最低池底。
先把池底排序,检查当前水量是否足以把水位抬到下一层池底;不足时在当前总面积上直接求余量对应的高度。刚好到达某一池底时,该池水深仍为零,但继续加水后它的面积就会参与,边界不能漏算。
结论适用范围
这里直接假设可自由交换,不模拟管道高度、阀门、气压、流速或暂态。若实际机关连接存在阻挡或只能单向流动,不一定形成共同水位,需要按真实连接规则另建模型。
这是一份可重复演算的游戏知识记录,结论只对写明的输入与规则成立。练习时可以先改变一个条件,再对照中间记录寻找变化从哪一步开始。若结果不同,应先确认操作顺序和边界定义,而不是只改最后一个数字;原始输入与完整过程应一起保留。
