私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

No.556  Re[3]:簡単なことだったらすいません。
発言者: moon
発言日: 2003 05/09 09:13
> 当然最初の条件式($Axexp > $Bwexp && $Axexp > $Swexp)の部分もすべてのパタンを書く、といったものでもっと他に処理の方法がないかなぁ?と思ったので質問させてもらったわけです。

そういった感じの処理ならば、
  @x = ($a, $b, $c, $d, $e); # 新しい配列を作成する。
  @z = ('武器1', '武器2', '武器3', '武器4', '武器5'); # 説明
  $max = -1;
  $i = 0;
  foreach(0..$#x){
    if($x[$_] > $max){
      $max = $x[$_];
      $i = $_;
    }
  }
  print qq|貴方は$z[$i]が得意です\n|;
かな〜。

> map→sort という部分の理解度が乏しくどういうことなのかが、理解できていません(^^;
> if文位しかまともに書けないので、配列?とかかなり苦手で....コツさえつかめばすんなりいくのでしょうけど。
> なんとなくでもヒントいただければ有難いのですが.....。

上記をmap→sort形式で書くと、
  @x = 〜; # 同じ
  @z = 〜; # 同じ
  $i = -1;
  @x = sort {$b <=> $a} map {$i++; "$_<>$i";} @x;
  $i = (split(/<>/, $x[0]))[1];
  print qq|貴方は$z[$i]が得意です\n|;
となります。
簡単なデータを用意して、コマンドプロンプトで実行してみるとやっていることが掴みやすいと思います。

# 文法チェックをしていないので書き間違いがあるかもしれません。

▼関連発言

551:簡単なことだったらすいません。 [なず] 05/07 23:51
 └552:Re:簡単なことだったらすいません。 [moon] 05/08 00:16
  └555:Re[2]:簡単なことだったらすいません。 [なず] 05/09 00:36
   └556:Re[3]:簡単なことだったらすいません。 [moon] 05/09 09:13
    └557:Re[4]:簡単なことだったらすいません。 [なず] 05/10 05:22
     └664:大変遅れました.... [なず] 07/13 23:51
      └665:Re:大変遅れました.... [moon] 07/14 09:10<-last

Pass 保存


CGIROOM