• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列データの並び替えについて。)

配列データの並び替えについて

このQ&Aのポイント
  • Perl初心者のhirokeiさんが配列データの並び替えについて質問しています。
  • 具体的には、配列の要素を自由に入れ替えたり抜き取ったりする方法について知りたいとのことです。
  • hirokeiさんはすでに試した方法がありますが、一部うまく動かないとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • pica_zip
  • ベストアンサー率67% (19/28)
回答No.1

配列の並び替えは、配列スライスを使って (10,20,30,40,50,60,70,80,90,100) ↓ (10,20,40,50,60,70,80,30,90,100) なら @test = (10,20,30,40,50,60,70,80,90,100); @test[2..7] = @test[3..7, 2]; print join(',', @test)."\n"; のように表現できます。 また自由な並び替えは、ハッシュを使って データに重みをつけて、 sort でやる方法はどうでしょう。 %test = ( 10 => 9, 20 => 1, 30 => 3, 40 => 4, 50 => 5, 60 => 2, 70 => 6, 80 => 7, 90 => 8 ); @test = sort { $test{$a} <=> $test{$b} } keys %test; print join(',', @test);  

herokei
質問者

お礼

ご回答誠にありがとうございます、配列のスライス を使用すると出来そうとは思っていたのですが、そのように書けばよかったのですね、ハッシュでの方法も書いていただき、ありがとうございます。 スライスの方でチャレンジしてみようと思います、またわからない事がありましたら質問したいと思っております、そのときはまたよろしくお願いいたします。 ご回答 ありがとうございました。 hirokei

その他の回答 (1)

  • pica_zip
  • ベストアンサー率67% (19/28)
回答No.2

補足です。 スライスでやると 以下のように配列の順番の情報を別に持っておいて 並び替えられます。 -- @info = (9,8,7,6,5,4,3,2,1,0); # 配列の順番の情報 @test = (10,20,30,40,50,60,70,80,90,100); @test = @test[@info]; print join('\n',@test);

herokei
質問者

お礼

丁寧に補足まで頂きありがとうございます、また一つ視野が広がりました、配列のスライスでチャレンジしてみようと思います、またご質問するかと思いますがそのときはよろしくお願いいたします。 hirokei

関連するQ&A