作者redmist (....N )
看板perl
标题Re: [问题] 关於上下左右转换的问题
时间Tue Oct 16 00:11:00 2007
※ 引述《handsomegirl (薰)》之铭言:
: #########################################
: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
: 10 E E F F E .
: 11 8 F 2 2 2 2 2 2 2 E 2 F 2 2 2 E E E E
: 12 9 9 2 2 2 2 2 2 2 2 2 E E 2 2 E 2 2 E E
: 13 F 2 F 2 F F 2 2 2 2 2 E 2 F 2 2 2 2 E 2 E E
: 14 8 2 2 2 2 2 2 2 2 2 2 2 2 2 F E 2 E E E E E
: 15 2 2 2 2 2 2 2 2 2 2 2 2 2 E 2 E E E E E E E
: 16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
: 17 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 F 2
: 现在我有这样一个图
: 然後黄色的数字因为代表行列所以不希望改变
: 其他的部份除了上下颠倒之外,我还希望左右相反
: 等於把整个图做180度的旋转
: 我目前的想法是先办认前面的行列,把它视为INDEX
: 再把後面的做REVERSE
: 只是再来就遇到一些瓶颈
: 不晓得有没有什麽好方法~
: 恳请高手来解答,谢谢~
use List::Util qw( max );
open $F, '<', 'fun.txt';
@raw = <$F>;
close $F;
chomp for @raw;
$max_len = max map { length($_) } @raw;
@p = @raw[0..4];
@h = @raw[5..$#raw];
for ( @h ) {
@l = split //,$_;
push @l, ' 'x ( $max_len - @l );
push @yy, [ @l[0..1] ];
push @ss, [ @l[2..$#l] ];
}
for ( 0.. (@ss/2 - 1)) {
($ss[$_],$ss[$#ss-$_]) = ($ss[$#ss-$_],$ss[$_]);
}
for (@ss) {
$_ = [reverse @$_];
}
for ( 0..$#yy ) {
push @{$yy[$_]}, @{$ss[$_]};
}
@handle = (@p ,map { join('',@$_) } @yy);
print $_,"\n" for @handle;
参考看看
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.132.142