抱歉这个问题描述不清楚,如果您有更好的问题,请告诉我。
我正在编写一些Perl代码来实现一个算法,但我的代码似乎有些问题。由于我没有计算机科学背景,所以我不太了解标准算法,但这似乎是一种可能的算法。
让我用比喻来描述一下我正在做的事情:
- 你有一条橙子传送带,橙子一个接一个地经过你。你还有一个无限供应的平板盒子。
- 对于每个橙子,请检查它。如果腐烂,请处理掉。
- 如果它很好,请将其放在盒子里。如果你没有盒子,请拿一个新的盒子并构造它。
- 如果盒子里有10个橙子,关闭它并将其放在托盘上。不要构造新的盒子。
- 重复此过程,直到没有橙子为止。
- 如果你有一个已经构造的盒子里面装有一些橙子,请封闭它并将其放在托盘上。
所以,我们有一个处理列表中项目的算法,如果它们符合某些条件,它们应该被添加到一个结构中,当它满足某些其他条件时,应该被“关闭”。此外,一旦列表已经被处理完,如果有一个“打开”的结构,也应该被“关闭”。
天真地,我假设算法由循环作用于列表、有一个条件判断是否将列表元素放入结构中和有一个条件判断是否需要“关闭”结构。循环外,还会有一个条件判断来关闭任何未完成的结构。
所以,这里是我的问题:
- 这是一个众所周知的算法吗?如果是,它有一个名字吗?
- 是否有一种有效的方法将“关闭盒子”活动合并到一个地方,而不是在循环内部和循环外部各一次?
我将这个标签为“Perl”,因为Perlish方法很有趣,但我也很想听听其他语言对这个问题的巧妙解决方案。
close_box()
的函数,并在两个地方调用它。这就是函数的作用,这样做没有任何道德问题 :)continue
块附加到循环末尾 - 你可以在里面调用if ($n == 10 || $no_more_oranges) { close_box() }
一次。但是,continue
是一个很少使用的结构,我猜更容易混淆未来的维护者,而不是调用函数两次。 - j_random_hacker