サンプル問題が普通に解けない

Pythonのサンプル問題をついに解いた。以下,正しさは一切保証しません。そしてキーワードにひっかけないため試験名は一切書かないけど何のことかわかりますよねと。

設問1

まず,この試験お得意の「問題文読めてますか?」である。五角形の問題は,ここのとこの小学校プログラミングで外角で考える必要があって,その角度は 2\pi/nであることを知っているからあっさり行ける。しらなかったらどうなんでしょう。これはPythonというか算数か数学プラス読解の問題ですよね。。。

設問2

c

まず,cはリスト内包記法と[:]の文法で知ってるかどうか。ここはプログラミングの問題と言ってもよさそう。

d, e

d1とd2はこんなのお絵かきでdxとdyという記法から常識で進む方向を決めようとして,だったら進む方向は r\cos (x)r\sin(y)に決まってるで終わり。これ算数か数学か物理では?

eは下のコメントからして,こんなの今いるところから方向なんだから自分自身の現在の居場所以外ありえない。これはPythonの文法のselfの問題ともいえるけど,これも算数か数学か物理では?もちろん,コンピュータでお絵かきしたことあれば常識だろうけど。。。。

f

fはまあ関数の仕様読めますか?だけど,関数の意味を考えたらあてはまるものはほとんどない。なんとなくはまる。Pythonを何も知らない私は,二変数なのになんで一個なんだと思ってしまうが,まあクラス内のメソッド定義(関数というのか?わからん)のselfは書くけど呼ぶときは省略というPythonの文法的お作法でもたぶんあるんでしょう,後のハッシュのとこ考えてもこれしかうまる選択肢はないしで埋まる。

最後のスタックの部分(g,h,i)

私の能力では,何書いてるかがさっぱりとわからない。わからないけど,この問題は出力をつけてくれるという親切なヒント付き。というか,そうしないと基本の範囲の難易度ではないということでしょう。

まず,出力の最後の要素を眺めていると,2つ目の要素がある条件を満たしたときに消えている。ということは,iは末尾の要素の消去と考えるのが自然。スタックなんだから,後から積んだ要素が先に消えないとおかしい。また,ifのtrueのときにrestが1ずつ減っていっていて,出力もそんな感じで減っていってて,減り終わったところで末尾の要素が姿を消しているのでこれで良いでしょうと。

gの条件判定はrestが1になって0には行かずに消えるとなってる。となると,そこの判定条件は1かそれより大きいかになる。

あとは全体を見る。whileがopnoの条件で消えてるのにopnoがどこで変化されてるかわからない。だいたい,繰り返し命令かからなかったらopnoが永久に変化しないで終わりってこと?と思って良く見返したら末尾にopnp+=1がある。で,もし繰り返し命令が一回も呼ばれなければ命令が元の命令列の長さだけ呼ばれて終了ということになる。ということは,逆に言えば繰り返しが入ったときにはopnpを操作してあげないと,途中で終了という悲しい目に合う。よって,opnpを書き換える選択肢が正しい答え。

もちろん,画面上で解いたのもあって気付くまでものすごく時間かかったが・・・・

解き終えて

全般的にPythonを読んだ気は全くしない。座標平面状でのお絵かき常識と,全体の意図をなんとなくとらえるカンと誘導をうまく使える力を聞いている問題。

どうせこんなのは座標でやってるんだから,長さに方向でやってて,そんなの当然rcos(x)にrsin(y)とか,それはいわゆるプログラミングの知識やスキルか?と言われると???なのである。

応用のアルゴリズム問題がそんな傾向で,個人的には基本よりやりやすいと思っているけどそれに似ている感じ。

情報系以外の大学理系の人でもノー勉ていける選択肢が増えたのかな?というイメージ。あと,なんとなくかしこな大学生有利な感じな気もする。でも,こういうのがかしこな層は,そもそもこの資格試験に対して意義を見出してなさそうので意味ないような。いったいこの試験,どこに向かっているのだろうか。

あと,こういうのはいくら本で勉強していても,暗黙の数学っぽさを随所にからめられて,その素養がない人はどれだけ勉強してもだめですよみたいな。そういう問題は無限にパターンが作れるので,専門系の対策は難しそう。