シェルスクリプトマガジン

Open USP Tukubaiシンプルレシピ Part1 テキスト編 (後半・ルービックキューブをつくる など)

Tukubai、それはシェルスクリプトの使い易さを加速させるコマンド群。
前号では、そのオープン版“Open usp Tukubai”を紹介したが、やり残したことがあった。
豊富なレシピの紹介である。
そこで今号と次号の二回に渡り、Tukubaiの、特に実際のコーディングスタイルが分かり易いレシピを特集する。
「シェルスクリプトとは、僅かなコマンドの追加で、こんなにも応用の効く言語になるのか!」と、あなたはきっと驚くことだろう。

written by USPマガジン編集部

本記事は、USP MAGAZINE vol.5(2012年夏号)掲載記事のWEB再録記事(後半部分)です。

前半はこちら→シェルスクリプトに何でもおまかせ Open USP Tukubaiシンプルレシピ Part1 テキスト編 (前半)

本記事掲載のUSP MAGAZINE vol.5は以下リンク先でご購入できます。

 

レシピ2 ルービックキューブを作る。

問題

Tukubai はシェルスクリプトをデータベース言語化させるためだけのコマンドセットではないというが、それならもっと一般的な例は無いのか。

数理的な操作の様子が伺えるコードが見てみたい。例えば、何らかの科学技術計算を行っているプログラムであれば、それがわかりやすいと思うのだが。

解答

実際に科学技術計算にも利用しているのだが、そのような例は専門分野の知識から解説しなければならない。

そこでここでは専門分野知識の解説が不要なゲームのレシピを紹介しよう。数学パズル的要素が強いゲームであれば、数理的な操作も見え易いからだ。

■ サンプルプログラム
そこでルービックキューブ(3 × 3 のオーソドックスなもの)を作ってみた。

ルービックキューブは、立方体の一面が一つの行列に対応した6 つの行列であると見なせる。キューブを動かすと、その行列のうちの一つで± 90°回転が発生し、それに伴って隣接する4 つの面に相当する行列の一部要素が、別の行列に移動する。この動きを、シミュレートしようというものである。

UECでの解説はこちら。

リスト3.rubik-cube.func : ルービックキューブプログラム(ファイル2・関数定義)