2022年6月6日(月)リタイヤ生活1503日目

今日は予報通り、けっこう強い雨
朝から1日中降り続いていた。
外に出る気にもなれず、
特に予定も無かったので、
家で1日、プログラミングをしていた。

課題は、ダブルスの試合の組合せ作成。
以前に、異なったロジックの数種類のプログラムを作成済で、
生成した組合せは、実際に最近の試合で使っている。
ただ、それは、試合への出場機会が均等になることを
条件として、簡易なロジックで作成した。
本当は、再帰的に最適解を求めるようにしたかったのだが、
良い実現方法が思い浮かばなかった。
そこで、今回はそれにチャレンジしてみた。

 

ちなみに、今回はGoogle Colab上で動作するPythonで作成した。
先日作成した別のプログラムは、
GAS向けにJavaScriptでプログラミングしたので、
Pythonのことを少し忘れており、少しリフレッシュする必要があった。
それと、少しは新しいことをしてみようと、
今回は、関数名や変数名を日本語にしてみた。
これで、無駄なコメントは不要に出来ると思った。

 

ロジックに関しては、再帰的なプログラムを
どのように構成するかが課題だが、
ダブルスの全ペアの組合せを作って、
それを再帰的に組み合わせて行き、
出場回数が均等になるような条件をつける、
というアイデアで出来そうだった。

 

これに基づいてロジックを作成して行ったところ、
Pythonの言語仕様で少し勘違いもあって、
デバグに戸惑うところもあったが、
意外に簡単にロジックを作成することができた。
再帰的なプログラムを作成するときにはいつも、
こんな簡単なロジックで動くのか、と感じるが、
あっさりと上手く動いてくれると、
なにか儲けたような気分になった。

 

ただ、関数名や変数名を日本語にしたことに関しては、
思った以上に変換キーを押すのが煩わしかった。
もう二度と、このようなことはしないと思う。

 

後は、再帰的なプログラムで出場機会を均等にするための
トライ&エラー回数が多くなって、実行時間がかかるので、
もう少し効率化するロジックを追加すれば完成になる。

 

今日は雨の1日だったが、意外にプログラミングで
楽しむことが出来た。