Re: [問題] 文字元素的合成

作者: AntaresStar   2019-04-27 03:12:35
看輸入的形式 我假設同pin一定排在一起 而且裡面的數字一定降冪
如果不是 也可以寫個sort排一下 應該沒幾行
然後就照前面c大的說法來寫 寫成這樣
my $str = 'A, B, C[1], C[0], D, P[3], P[2], P[1],';
my @arr = split /, */, $str;
my (@out, @bus);
sub bus_out {
return unless @bus;
push @out, "[$bus[1]:$bus[2]] $bus[0]";
@bus = ();
}
for (@arr) {
if (/(\w+)\[(\d+)\]/) {
@bus ? ($bus[2] = $2) : (@bus = ($1, $2, $2));
} else {
bus_out;
push @out, $_;
}
}
bus_out;
print "$_;\n" for (@out);
要寫得乾淨比我想像中還難 沒幾行卻寫了好久 orz
作者: cutekid (可愛小孩子)   2019-04-27 08:46:00
把 D 刪掉,答案好像會錯
作者: AntaresStar   2019-04-27 09:59:00
啊真的 半夜寫code果然bug一堆 哈哈哈
作者: pat12345 (咖啡杯)   2019-04-27 10:17:00
XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com