PHPで選択ソートを実装する
選択ソートのPHPでの実装例です。
基本は音楽活動について、あと、なんやかしogasawaraが書きます
選択ソートのPHPでの実装例です。
二次元配列の処理に手間取ったので練習として作成したコード。$div_numという変数でブロックサイズを指定し6x6の二次元配列を指定したブロックサイズ毎に合計して結果を出力します。
$div_numで割り切れない場合はエラーになるのでtry-catchで例外処理にしています。
15行目以降の$i += $div_numと$j += $div_numがポイントで行と列の処理のインクリメントが$div_numずつ増えていくことで指定したブロックサイズ毎の処理を実現しています。
再帰的アルゴリズムの練習のためにPHPでハノイの塔を解いてみました。正直、再帰的アルゴリズムについては、まだ頭が混乱するので、ちょっと数をこなす必要があるなと感じています。
ハノイの塔(Tower of Hanoi)は、数学的なパズルや再帰的アルゴリズムの代表的な例として知られています。
ゲームの目的は、3本の棒といくつかの円盤があるとき、最初に一つの棒に積まれた円盤を他の棒に移動させることです。
ハノイの塔は再帰的アルゴリズムを用いて解くことが一般的です。再帰的アルゴリズムは、大きな問題をより小さな問題に分割して解決する方法です。ハノイの塔では、最も大きな円盤を目標棒に移動させるために、残りの円盤を中間棒に移動させる必要があります。このように、大きな問題を小さな問題に分割して解決する再帰的な手法を使うことで、効率的に円盤を移動させることができます。
ハノイの塔は再帰やスタックなどの基本的なアルゴリズムとデータ構造を理解するのに役立つ教育的な側面を持っています。また、複雑なアルゴリズムや再帰的なアプローチを学ぶ上での良い練習問題としても利用されます。
ソートアルゴリズムへの理解を深めるためにPHPでバブルソートを実装してみました。
バブルソート(Bubble Sort)は、隣接する2つの要素を比較し、必要に応じて交換を行いながら要素を適切な位置にソートしていくアルゴリズムです。
バリデーション用に。
ctype_spaceだと真偽値で返ってくるのでif以降の部分で対応はできるけれど、毎回if文を書くのは流石にめんどうなので関数にした。
適宜アクセス修飾子を付けるなりしてバリデーション時に呼び出せる様にするなどで使える、かも知れない。
正規表現で「\」ってどう扱えばいいのかと思って調べてみたので備忘録です。
背景としては、PHPで「\」記号をバリデーションのルールに加えるために調べてみました。
以下の様にすればOK。
ちなみに「/」をマッチさせたい場合はデリミタを「#」にすれば問題ないです。下記のような感じ。
$ptn = “#/#”;
正規表現のパターンの変数を上の”#/#”に変更してあげたら「/」をマッチさせることが出来ます。バックスラッシュもスラッシュも両方マッチさせたいよって場合はこうですね。
$ptn = “#/|\\\\#”;
「|」で区切って繋げます。
“#/|\\\\#”…、パッとみ意味不明ですが正規表現が使える様になると幅が広がるので徐々に慣れていきたいところです。
最近、開発環境をXammpからDockerに移行しています。PDOでのMySQLに接続が上手くいかなかったのですが、どうやらDocker環境ではHOSTをlocalにするとエラーが起きるらしい…。
対処方法としては、データベースに作成するユーザーのホスト名をDockerが割り当てたIPにするか、’%’を指定するとエラーは解消されます。
ちなみ’%’は全てのホストという意味となります。
出典:https://codeaid.jp/blog/docker-mysql-php/
とのこと。詳しくは出典元を参照してください。
無事にPDOでMySQLに接続できました。