見出し画像

70歳を目前にした人間がプログラミングに悶えつつ楽しむ日々

プロジェクト・オイラーに出会う

しばらく前のことだがツイッターのタイムラインに紛れ込んできたプロジェクト・オイラーが面白いというような内容のツイートが頭に引っかかった。

そこに何があるのだろうとサイトを訪れ翻訳させて読む。
2001年から続けられている企画のようだ。
ざっくり書くとそこに並ぶ多くの問題(現時点817問)に対してプログラムを組んで解き進めていくというものだった。

自身が導き出した解の正誤を判定させるためにはアカウントの登録が必要ということでさっそく登録する。
登録に用意するのはハンドル名とパスワードだけでメールアドレスなどを要求しない清々しい仕様である。

さて1問目を試してみた。
プログラムを組むまでもなさそうな簡単なものに思えたがとりあえずコードを書いてコンソールに求めた解を表示させる。
入力欄にその値を移してチェック実行。

不正解時に表示されるグラフィック

いきなり間違えた!
問題の意図は把握していたが安直な記述ミスで値を狂わせていた。
電卓やEXCELでも一発正解できると思われるレベルなのに。
私の性急で軽はずみな姿勢の結果だ。
もう一度問題を読みコードに手を加えて得た解のチェックを実行する。

正解時に表示されるグラフィック

正解した。
こんどは間違えていないと思ってはいたが正解だったことを示されて無邪気に胸が弾んだ。
プロジェクト・オイラーとの付き合いの始まりだった。

難しい、面白い、問題と奮闘した時間


第一問を解いた日付をサイトのヒストリーログで見ると今から16日前の日付だった。
そこから今日まで当時やり始めたばかりのゲーム(ソニック・フロンティア)を一度も起動しなかった。
ちょっとした熱狂が訪れていたのです。
眼前のディスプレイは問題を解くための専用作業スペースとなっていた。
問題の意図を把握しプログラムの構成を考えてコードを書き上げ正誤チェックの結果に一喜一憂するという繰り返しにはまっていたのだ。

使ったプログラム言語だが私は幾何学図形をいろいろと気軽にかつ奥深く動かせるProcessingに比較的手慣れていたのでそれで進めた。
ところが2の1000乗といった大きな数字を扱う問題では桁溢れが発生して数値を取れないProcessingでは立ち向かえない場面を迎えた。
こういう大きな桁の数値を扱える言語を調べPythonが対応できそうだと知る。

今まで使ったことも無いためあまり手際良くとは言えないがなんとかインストールを終えPythonの実行環境を作った。
コードを書くのに1行ごとにネットで構文を調べるようなたどたどしい使い方だが役に立ってくれた。

ジジィはレベルが上がった


今日50問を正解したことによって「レベル2」の段位を獲得した。

ここまでPythonを使ったのが10本で残りはProcessingで書いている。

プロジェクト・オイラーの問題は解き進めるのは困難だがその行為は実はなかなか楽しい。
今やっている範囲は難易度レベル5%という低い問題ばかりだがそれでも私にはどう組むんだと悩ませられることも頻繁にある。

だが過不足なく適切に作られた出来のいい「問題」にじっくりと取り組んで解けた時の達成感はゲームで得るものとは別物に感じてきた。

さてこれからは

今は50問を解き終えたことで少し気が抜けたような心持ちになっている。
というかなんだか頭が疲れていることの自覚症状があるのだ。

問題に対してプログラム的解法を組み立てようとするのだが頭が休ませてくれと弱音を吐いて考えがまとまらない有様だ。

歳をとったことを実感する。
昔はもう少し頭に粘りや瞬発力があったと思う。
自分がもうアラウンドセブンティなのだということを認めないとダメなのだろう。

それでも時間をおいて気合いが戻ったら改めて問題に向かいたい。

できれば100問クリア(レベル4)に辿り着ければと望む日曜の午後であった。


この記事が気に入ったらサポートをしてみませんか?