Perlについての質問箱 28箱目

このエントリーをはてなブックマークに追加
972デフォルトの名無しさん:2006/12/21(木) 20:03:55
どう考えてもこれで十分だろ。
($x, $y, $z) = sort { $b <=> $a } ($x, $y, $z);
973デフォルトの名無しさん:2006/12/21(木) 20:12:01
sortを使わないとなると、if文やリスト、配列を使うのでしょうか?
974デフォルトの名無しさん:2006/12/21(木) 20:25:37
>>973
変数3個なら並び方は順列で6通りだから if〜elsif 文でなんとかなるだろ
975デフォルトの名無しさん:2006/12/21(木) 20:26:12
$i = @nums = ( $x, $y, $z );
foreach (0 .. $i) {
  foreach (0 .. @nums) {
    @nums[ $_, $_ + 1 ] = @nums[ $_ + 1, $_ ] if $nums[$_] < $nums[ $_ + 1 ];
  }
  unshift @sorted, pop @nums;
}

sort() を使わないと、こんな愉快なコードを保守する破目になりますが、かまいませんか?
976デフォルトの名無しさん:2006/12/21(木) 20:35:39
それは変数三つに対して大仰だろう
if ($x < $y) { ($x, $y) = ($y, $x) }
if ($y < $z) { ($y, $z) = ($z, $y) }
if ($x < $z) { ($x, $z) = ($z, $x) }
977デフォルトの名無しさん:2006/12/21(木) 20:39:14
って順番間違えたorz 正しくはこうだ
if ($x < $y) { ($x, $y) = ($y, $x) }
if ($x < $z) { ($x, $z) = ($z, $x) }
if ($y < $z) { ($y, $z) = ($z, $y) }
978デフォルトの名無しさん:2006/12/21(木) 20:55:22
そろそろ >>960 の釣り宣言が入る頃だな
979デフォルトの名無しさん:2006/12/21(木) 20:57:04
>>976-977
スネーク、三大美徳の基本を思い出して!
980960:2006/12/21(木) 21:05:54
@a=($a=10,$b=5,$c=30);

if($a<$b){
($a,$b)=($b,$a)
} elsif($a<$c){
($a,$c)=($c,$a)
} elsif($b<$c){
($b,$c)=($c,$b)
}

print $a $b $c

xyzをabcに変えました。
これでできません・・・どうしたらよいのでしょうか?
981960:2006/12/21(木) 21:27:49
教えてくれるほどの技術の人が居ないようなので
別のところで質問することにします。
さようなら
982960:2006/12/21(木) 21:29:31
>>981
偽者はやめてください
983デフォルトの名無しさん:2006/12/21(木) 21:31:29
>>980
自分で$x,$,$zで質問して、なぜ$a,$b,$cに代えるの?
無知なフリして無駄に時間を使わせないで下さい
しかもつまらないし

皆さんも、親切なだけではなく、ガマン強いですね
もう相手にするのはやめては?
984デフォルトの名無しさん:2006/12/21(木) 21:36:33
>>980
上のほうで if (条件) { ブロック } を3つ並べる例を出してもらってるのに
if〜elsif〜elsif〜に動作変えちゃったのはなぜ?

つーか、sort で…というのを踏まえて $a $b を使う方向に変えたのかなあ。
985960:2006/12/21(木) 21:44:48
($x=10,$y=100,$z=30);

if ($x < $y) {
($x, $y) = ($y, $x)
} if ($x < $z) {
($x, $z) = ($z, $x)
} if ($y < $z){
($y, $z) = ($z, $y)
}

print "$x,$y,$z";

でやったらできました。
しかしifの中がいまいちわかりません。。
986デフォルトの名無しさん:2006/12/21(木) 21:59:17
>>979
そうだ、プログラマは無精であるべきだったな。
対象が増えることを予期するべきだった。私とした事が。
罰として久しぶりに次スレ建ててくる。
987デフォルトの名無しさん:2006/12/21(木) 21:59:40
どうしてsortを使わないのかいまいち分かりません。。

本当は分かるけど。課題なんだろ。
988デフォルトの名無しさん:2006/12/21(木) 22:29:51
>>986はスレ立てを蹴られたのか、テンプレの準備がなかなか進まないのか。
989デフォルトの名無しさん:2006/12/21(木) 22:31:27
ごめん、蹴られて別回線使おうとしてたところだけど駄目だった。
990988:2006/12/21(木) 22:33:59
俺も蹴られたらどうしよう?と思いながら逝ってくる。
991デフォルトの名無しさん:2006/12/21(木) 22:38:00
無事に立ちました。次スレ。
Perlについての質問箱 29箱目
http://pc8.2ch.net/test/read.cgi/tech/1166708139/
992デフォルトの名無しさん:2006/12/21(木) 22:41:52
うめ
993デフォルトの名無しさん:2006/12/21(木) 22:42:02
うめ
994デフォルトの名無しさん:2006/12/21(木) 22:42:17
うめ
995デフォルトの名無しさん:2006/12/21(木) 22:42:54
うめ
996デフォルトの名無しさん:2006/12/21(木) 22:43:29
うめ
997デフォルトの名無しさん:2006/12/21(木) 22:43:35
うめ
998デフォルトの名無しさん:2006/12/21(木) 22:43:37
$s = q{$self->kakikomi(qq{\$s = q{$s};\n$s\n__END__\n埋め})};
$self->kakikomi(qq{\$s = q{$s};\n$s\n__END__\n埋め});
__END__
埋め
999デフォルトの名無しさん:2006/12/21(木) 22:43:50
うはww
1000デフォルトの名無しさん:2006/12/21(木) 22:44:10
1000なら彼女できる
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。