読者です 読者をやめる 読者になる 読者になる

Perl入学式in東京第3回復習問題score.pl(再チャレンジ編・その4)

プログラミング初心者の自習連載企画の第4回です。

ここ数日は、ず〜っと、正規表現を使いながら、自分の業務ログの整理を行っていて、かなり疲弊していますが、その話題は後回しにして、ここ数回の続きを普通にやります。

#前回までの流れはこちらです。
第1回→Click!
第2回→Click!
第3回→Click!

本日のお題はこちら。
workshop-2013-03/practice.md at master · perl-entrance-org/workshop-2013-03 · GitHub

Perl入学式 #3 復習問題 - 4

my $boolfool = {
    name        => 'boolfool',
    affiliation => 'namba.pm',
    perl        => 40,
    python      => 10,
    ruby        => 20,
    php         => 0,
    binary      => 0,
};

score.plには上記のようなハッシュリファレンスがいくつか宣言してあります

所属毎のperlのスコアが 60 以上の人の名前を格納する

  • 「$highscore」と言ったハッシュリファレンスを用意し、所属毎に優秀な人物の名前を push して下さい
  • 「$highscore」における key を所属として配列のリファレンスにするのがいいですね

はい。ええと、今回はちょっとイレギュラーで、じつはこのブログを書きながら気づいたんですが、初めにこれを解いたとき、僕は問題の意図がぜんぜん分かってなかったんですよね。

具体的には、「所属」ってのが何なのか分かってなかったんですが、これ「affiliation」のことですか。
もうてっきり、「各言語(PerlとかRubyとか)ごとに、60以上の成績の人の名前を格納しろ」ということだと思ってこんな回答を書いていました・・

んで、実行結果はこんな・・

\ {
    binary   "binarian",
    perl     "papix moznion",
    php      "papix binarian",
    python   "moznion",
    ruby     "moznion"
}

はい。
んで、それを勘違いしたままやり直したのがこちら。

実行結果はこのようになります。

$VAR1 = {
          'php' => [
                     'papix',
                     'binarian'
                   ],
          'perl' => [
                      'papix',
                      'moznion'
                    ],
          'python' => [
                        'moznion'
                      ],
          'binary' => [
                        'binarian'
                      ],
          'ruby' => [
                      'moznion'
                    ]
        };

ふむ・・。ええと、今回の直近版ではDDPに揃えずにData::Dumper使っているので、見栄えは結構違いますが、内容的には同じでしょうか。

んで、肝心の解き方としては、本人的にはだいぶマシになったかなあ、と思っていたんですが、そもそも聞かれてることに答えられてなかったらしょうがないというか。

まあ、たぶんnamba.pmやhachioji.pmといったコミュニティがある程度自明になっていると、「所属」イコールそういうの、というのがパッと通じるのかもしれないですが、「所属ってなんだ?」て感じだったので思いっきり空振りしましたね・・まあでも、これはこれで! 楽しかったので!

ということで、あらためて本来の(たぶん)意図に沿って今突貫で作ってみたのはこれです。

実行結果はこれ・・かな。

$VAR1 = {
          'hachioji.pm' => [
                             'moznion'
                           ],
          'namba.pm' => [
                          'papix'
                        ]
        };

どうでしょうか。
んで、ただこれだとあんまり配列にプッシュした感がナイので、基準の点を60から少し下げて、40にしてみたいと思います。
すると、結果はこんな。

$VAR1 = {
          'hachioji.pm' => [
                             'moznion'
                           ],
          'namba.pm' => [
                          'papix',
                          'boolfool'
                        ]
        };

ふむ。という、感じですね。

いやあ奥深いな・・。だいたい、いつも思うんですがこっちが「ここまで来たらさすがに追ってこれないだろ〜」というぐらいグングン走ったつもりでも、こうした問題や普段の課題で想定されてるのはそれよりずっと先の方(上の方)だったりして、その前提や文脈のギャップ感ってほんとよく感じますね。

まあそういうのが非常に刺激だったりもするわけですが・・。ともあれ継続しながらその空気を自分のホーム的に吸収していければなあ、と思っています。

さてようやく次回にでこの「score」シリーズもおしまいです。問題はこちら。
workshop-2013-03/practice.md at master · perl-entrance-org/workshop-2013-03 · GitHub

じつはもう一方の「ranking」という問題も全然分かれていないので、この次はそれやり直してもいいなあ、と思っているのですが。
どうしようかな・・