Re: 用遞迴解一些小問題
遞迴的經典當然就是老鼠走迷宮囉
#!/usr/bin/perl
<<GRAPH;
██████████████████
◇◇◇◇ █ █ ██ ██
█ █◇█ █ █ ██ ██
█ ◇◇◇███ █ █ █
██ ◇◇◇◇◇◇◇█ ██ █
██ █ ██ ██ ◇█ █
██ █ █ ◇◇◇█ ██
██ █ ████ █ ◇█ ██
█████ ██ ◇█ █
█ █ ██◇██ █
█ █ █ █ █ ◇◇◇◇█
███ ███ █ ████◇█
█ █ ██ ◇◇
██████████████████
GRAPH
$startI=1;
$startJ=0;
$endI=12;
$endJ=17;
$success=0;
@maze=(
[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],
[0,0,0,0,0,2,0,0,2,0,0,2,2,0,0,0,2,2],
[2,0,2,0,2,0,0,0,2,0,2,0,0,2,2,0,2,2],
[2,0,0,0,0,0,2,2,2,0,2,0,2,0,0,0,0,2],
[2,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,2],
[2,2,0,2,0,2,2,0,2,2,0,0,2,0,0,0,0,2],
[2,2,0,0,0,0,2,0,0,2,0,0,0,0,2,0,2,2],
[2,2,0,0,2,0,2,2,2,2,0,2,0,0,2,0,2,2],
[2,2,2,2,2,0,0,0,2,2,0,0,0,0,2,0,0,2],
[2,0,0,0,0,0,0,0,2,0,0,2,2,0,2,2,0,2],
[2,0,2,0,2,0,0,0,2,0,2,0,0,0,0,0,0,2],
[2,2,2,0,0,0,2,2,2,0,2,0,2,2,2,2,0,2],
[2,0,0,0,2,0,0,0,2,2,0,0,0,0,0,0,0,0],
[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
);
mousewalk($startI,$startJ);
for($i=0;$i<=13;$i++) {
for($j=0;$j<=17;$j++) {
if($maze[$i][$j]==0) {
print " ";
}elsif($maze[$i][$j]==1) {
print "◇";
}elsif($maze[$i][$j]==2) {
print "█";
}
}
print $/;
}
sub mousewalk {
my($i,$j)=@_;
$maze[$i][$j]=1;
$success=1 if($i==$endI && $j==$endJ);
mousewalk($i,$j+1) if(!$success && $maze[$i][$j+1]==0);
mousewalk($i+1,$j) if(!$success && $maze[$i+1][$j]==0);
mousewalk($i,$j-1) if(!$success && $maze[$i][$j-1]==0);
mousewalk($i-1,$j) if(!$success && $maze[$i-1][$j]==0);
$maze[$i][$j]=0 if(!$success);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.22.65
推
03/20 00:43, , 1F
03/20 00:43, 1F
推
03/20 17:32, , 2F
03/20 17:32, 2F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章