賛否あるらしい?NO.43への私見
こんにちは、なんやかんやでコードモンキー進めてはいたもののブログはお休みしておりました。
twitterのフォロワーさんならご承知おきかと思いますが、わたしはトライアルビレッジという豊橋のコワーキングスペースを利用しております。先日オーナーともコードモンキーの話になっていたのですが、今日ブログに記事がアップされていました↓
生粋のアンバサダー脳であるわたしはこの通り、ライセンス取得した当日にコードモンキーについてブログ新設しちゃうくらい初動を頑張っていましたが、同じくトラビレについても若干周囲から引かれるくらいアンバサダー頑張っているので、皆さんぜひコワーキングしに来てくださいね(・ω・)ノ
さて、そんなトラビレのブログでも触れられている表題のNO.43について。
いわゆる正解(星3つが取得できる)のコードはこちらなのですが、もうちょっと左に歩いてから一直線にバナナを目指すと3行でクリアすることができます。が、これだと星3つが取得できません。
NO.43に限らず「その設問で教えられているコードを使わないと星が減る」という現象はコードモンキーでよくあることですし、コードモンキー公式も認めている仕様です。
本職のプログラマーさんなんかが「ココの問題、こうするのが普通なのに星減るってどういうこと!?」といったことをボヤいているのも拝見したことがあります。
ただ、個人的に思うのは、コードモンキーの星制度は「この単元を理解して実行できたかどうか」の評価であり、必ずしも「プログラムの正しさ」評価とは限らないんじゃないかということです。
その上でNO.43に戻りますが、この設問は「このままバナナに向かって進むと川に落ちるけどモンタどうする?」という場面です。
模範解答では「まず橋の方を向いて橋までの距離だけ進み、次にバナナの方を向いてバナナまでの距離だけ進む」というものです。これで4行。
対して、先述の「もうちょっと左に歩いてから一直線にバナナを目指す」と3行でクリアすることができます。
ただ、これだと「モンタ」「橋」「バナナ」の初期位置が違うと同じコードでバナナを取ることはできません。モンタの位置がずれていたら、その都度最初の移動距離を変えなくてはいけなくなります。
「それでいいじゃん!」と言われればまぁそうなのですが、「1行増えても変数にすれば対応できる」んなら、「1行増えてもいいじゃん!」と個人的には思うわけです。(橋を基準にバナナと点対称の位置までモンタを移動させる、という関数が2行で実行可能なら断然3行推しだとは思います※あるかどうかは知らない)
模範解答は4行かかりますが、「モンタとバナナが川(橋)を挟んでどこにいてもバナナが取れる」というコードなのかなと思って納得しています。「数字じゃない変数を指定してみよう」という段階でもあるので、その意図を無視してまで3行で解くのはゴードくんの機嫌を損ねそうという意味で大変危険かと思います。
ここまで1000文字近くかけといて言うのもなんなんですが、本当にわたしはプログラミングについては専門で無いのでNO.43をはじめとした「模範解答と違う解き方」について是非を問うつもりはありません。
コードモンキーは「個人の学習もしくはSNS等での交流によって学習」されていくことが目指されているようなので、賛否含めワーワー盛り上がればいんじゃないかとは思います。
今月末には第一回のオープン講座があるのでとっても楽しみですね! 一体どんな人々がモンタと戯れ、ゴードくんにイラついているのか……(※コードモンキーの感想には個人差があります)
このブログを読んで頂いている豊橋市民の方ともお会いできると嬉しいです^ ^