NextTrainと言う時刻表表示ソフトを使っているのですが
7種類の時刻表を1つの時刻表ファイルにまとめて
一度で見れるようにしたいのです。
peal初めてで色々と読んでみてもよく解りませんでした。
今の状況は、ActivePerl 5.10.0.1003 をセットアップして、
『Hello World』を表示させる事は出来ました。
『例として6時から8時までをソートしてみます』
【分でソート前】
06: a22 a52 b07 c25 c47 c58 c51 d25 e55
07: a12 a30 a40 a49 a58 c09 c21 c34 c46 c59 d13 d24 d37 d49 e15 e34 e44 e53
08: a07 a17 a28 a38 a47 b04 b45 c12 c25 c38 c51 d02 d21 d32 d42 e58
【分でソート完了】
06: b07 a22 c25 d25 c47 c51 a52 e55 c58
07: c09 a12 d13 e15 c21 d24 a30 c34 e34 d37 a40 e44 c46 a49 d49 e53 a58 c59
08: d02 b04 a07 c12 a17 d21 c25 a28 d32 a38 c38 d42 b45 a47 c51 e58
※分の前に付いているアルファベットはバスの系統なので必ず付きます。
Perlで無くても簡単に出来る方法があれば教えてください。
アドバイスよろしくお願いします。
No.3ベストアンサー
- 回答日時:
・diagrams.txtというテキストファイルに時刻表のデータがある.
・時と分の区切りは半角のコロン(:).
・毎時のダイヤは改行なしで1行に収まっている.
・時間の前のアルファベットは1文字.
と仮定してとりあえず書いてみました.
1行目でファイルを開いて,2行目で行ごとに読み込んで,3行目で時と分を切り分けて,4行目で分単位でソートした順に表示して,5行目で改行して,2行目に戻って繰り返して,終わったら6行目でファイルを閉じる.という動作をします,多分.
open FILE, "diagram.txt" or die "$!";
while(my $line = <FILE>){
my ($h, $m) = split /:\s*/, $line;
print $h . ':';
print ' ' . $_ foreach(sort {substr($a, 1) <=> substr($b, 1)} split /[\s ]+/, $m);
print "\n";
}
close FILE;
詳しく説明してもらって何とかできました。
ほんとに楽にソート出来るようになって嬉しいです。
もっと色々出来る様になりたいなと思いました。
興味のある本を探して読んでみようと思います。
ありがとうございました。
No.2
- 回答日時:
流れを読まずにrubyで。
こっちの方がすっきり?
DATA.each do |line|
?hour, *departures = line.chomp.split(/[: ]+/)
?next unless hour && departures
?puts "#{hour}: " + departures.sort_by {|e| e.scan(/\d+/) }.join(' ')
end
__END__
06: a22 a52 b07 c25 c47 c58 c51 d25 e55
07: a12 a30 a40 a49 a58 c09 c21 c34 c46 c59 d13 d24 d37 d49 e15 e34 e44 e53
08: a07 a17 a28 a38 a47 b04 b45 c12 c25 c38 c51 d02 d21 d32 d42 e58
実行結果:
06: b07 a22 d25 c25 c47 c51 a52 e55 c58
07: c09 a12 d13 e15 c21 d24 a30 c34 e34 d37 a40 e44 c46 d49 a49 e53 a58 c59
08: d02 b04 a07 c12 a17 d21 c25 a28 d32 c38 a38 d42 b45 a47 c51 e58
ruby 名前だけは見たことがあります。
ruby でも出来るんですね。
一度、検索して色々読んでみます。
情報をありがとうございました。
No.1
- 回答日時:
よくあるのはシュワルツ変換かなぁ.
例えば配列 @timetable にある時間帯 (6時台など) のデータが入っていれば
@sorted = map { $->[1] } sort { $a->[0] <=> $b->[0] } map { [/(\d+)/, $_] } @timetable;
で @sorted にソート済みのデータが入ります.
Perlでソートできる方法を教えてもらってありがとうございます。
プログラムをまったく初めてなので何も分からなかったから、
とても参考になりました。だいぶ前進しました。
Perlをもう少し勉強しないと、処理前の時刻表のデータを
どのようにしたらソートさせることが出来るのか?わからない状態です。
もう少し色々と読んだり参考にしたりしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Visual Basic(VBA) C3とC4のセルに、Visual basicで実行した時入力した値をC3に表示させ、その後に、C3に 1 2023/07/14 09:43
- Excel(エクセル) Excelのマクロについて 1 2023/04/17 17:22
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- 計算機科学 2500円の人と2000円の人の集計 2 2023/08/06 07:18
- その他(Microsoft Office) 【スプレドシート】目標達成の数式について 3 2023/02/22 07:34
- Excel(エクセル) Excelでハイパーリンクが変化する表を作りたい 6 2023/05/03 07:54
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで複数行のデータを自由に...
-
<IN>; を単独で使う
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
ReadLineでの読み出し行を指定する
-
batファイルでrenameができませ...
-
window.open でのファイル指定方法
-
openした後、closeしないでプロ...
-
Windowsで複数のファイルを同じ...
-
バッチファイルの作り方(CSV→...
-
巨大なテキストの最終行を取得...
-
microsoft multimedia control ...
-
Edge スクレイピング
-
sprintfについて
-
JavaでCSVファイルを高速に読む...
-
「パスが見つかりません」とい...
-
fopenでディレクトリ内の全ファ...
-
ListBoxのデータを高速でファイ...
-
データファイルをプロットする(...
-
ディレクトリ名を取得したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのようなプログラムをつくれ...
-
csvで順番の入れ替え
-
perlでの三次元配列の作り方
-
配列の中に重複文字列があるか...
-
要素を削除する最適な方法
-
perlで複数行のデータを自由に...
-
pushをすると行ができる
-
ファイルから読み込んで配列へ
-
Perlの初歩的な質問・・・
-
行・列の整理! perl
-
C言語のバイナリモードでのfsca...
-
perl-cgi 文字の長さでソートし...
-
C言語でバイナリファイルの読み...
-
Pythonの再帰関数の動作の流れ...
-
CSVデータ「","」と「,」混在読...
-
perlで読み込んだURLを配列に入...
-
perlの無名配列の使い方を教え...
-
ソートのテクニックについて
-
ランダムでかぶらないように4...
-
頻度表の作成(Perl初心者です)
おすすめ情報