… | |
… | |
244 | } |
244 | } |
245 | |
245 | |
246 | sub stack_find { |
246 | sub stack_find { |
247 | my ($stack, $dir, $pred) = @_; |
247 | my ($stack, $dir, $pred) = @_; |
248 | |
248 | |
249 | |
|
|
250 | if ($dir eq 'from_top') { |
249 | if ($dir eq 'from_top') { |
251 | my $i = scalar (@$stack) - 1; |
250 | my $i = scalar (@$stack) - 1; |
252 | if ($i < 0) { $i = 0 } |
251 | if ($i < 0) { $i = 0 } |
253 | |
252 | |
254 | for (reverse @$stack) { |
253 | for (reverse @$stack) { |
… | |
… | |
267 | |
266 | |
268 | $i++; |
267 | $i++; |
269 | } |
268 | } |
270 | } |
269 | } |
271 | |
270 | |
272 | return 0; |
271 | return undef; |
273 | |
|
|
274 | } |
272 | } |
275 | |
273 | |
276 | sub stack_find_floor { |
274 | sub stack_find_floor { |
277 | my ($stack, $dir) = @_; |
275 | my ($stack, $dir) = @_; |
278 | return stack_find ($stack, $dir, \&arch_is_floor); |
276 | return stack_find ($stack, $dir, \&arch_is_floor); |