実はコア部分は以前C言語で作ったアルゴリズムを移植しただけだったりします。連続で開くアルゴリズムは一般的に「再帰呼び出し」と言われるもので、自分で自分自身を呼び出すことで、連鎖的に処理を継続できる仕組みです。将棋などの思考アルゴリズム(木構造探索)などでもよく使われます。再帰呼び出し自体の概念を説明するとなるとものすごく長くなるため割愛しますが、(興味がありましたらググるか書籍を読むのが近道かと思います)コツとしては連鎖を止める条件を確立させることです。(放っておくといつまでも止まらず、スタックオーバーフローになるので・・・)個人的には感覚的な部分も多いので、何度も触って手になじませるイメージで覚えました・・・(´・ω・`)