PHPで6×6の二次元配列を指定したブロックサイズ毎に合計し出力する

二次元配列の処理に手間取ったので練習として作成したコード。$div_numという変数でブロックサイズを指定し6x6の二次元配列を指定したブロックサイズ毎に合計して結果を出力します。

$div_numで割り切れない場合はエラーになるのでtry-catchで例外処理にしています。

15行目以降の$i += $div_numと$j += $div_numがポイントで行と列の処理のインクリメントが$div_numずつ増えていくことで指定したブロックサイズ毎の処理を実現しています。

PHPでハノイの塔を解く

再帰的アルゴリズムの練習のためにPHPでハノイの塔を解いてみました。正直、再帰的アルゴリズムについては、まだ頭が混乱するので、ちょっと数をこなす必要があるなと感じています。

ハノイの塔についての概要

ハノイの塔(Tower of Hanoi)は、数学的なパズルや再帰的アルゴリズムの代表的な例として知られています。

ゲームの目的

ゲームの目的は、3本の棒といくつかの円盤があるとき、最初に一つの棒に積まれた円盤を他の棒に移動させることです。

ルール

  • 全ての円盤は、大きさによって異なる直径を持っています。
  • 3本の棒のうち、一つの棒に円盤を積み重ねて配置します。これを「出発棒」と呼びます。
  • 他の2本の棒を「中間棒」と「目標棒」として使います。
  • 全ての円盤は「出発棒」に積まれた状態から、「目標棒」に積み重ねることを目指します。
  • 円盤を一度に1枚だけ移動できます。
  • 小さい円盤の上に大きい円盤を積み重ねることはできません。
  • 再帰的に円盤を移動することにより、最小の手順で目標棒に円盤を移動させることが可能です。

再帰的アルゴリズム

ハノイの塔は再帰的アルゴリズムを用いて解くことが一般的です。再帰的アルゴリズムは、大きな問題をより小さな問題に分割して解決する方法です。ハノイの塔では、最も大きな円盤を目標棒に移動させるために、残りの円盤を中間棒に移動させる必要があります。このように、大きな問題を小さな問題に分割して解決する再帰的な手法を使うことで、効率的に円盤を移動させることができます。

教育的な側面

ハノイの塔は再帰やスタックなどの基本的なアルゴリズムとデータ構造を理解するのに役立つ教育的な側面を持っています。また、複雑なアルゴリズムや再帰的なアプローチを学ぶ上での良い練習問題としても利用されます。

PHPでバブルソートを実装する

ソートアルゴリズムへの理解を深めるためにPHPでバブルソートを実装してみました。

バブルソートの概念

バブルソート(Bubble Sort)は、隣接する2つの要素を比較し、必要に応じて交換を行いながら要素を適切な位置にソートしていくアルゴリズムです。

動作の概要

  1. 比較と交換のループを開始
  2. 配列の先頭から隣接する要素を順番に比較
  3. 現在の要素が次の要素より大きければ、両方の要素を交換
  4. 操作を配列の最後まで続ける
  5. 最大値が末尾に移動し、末尾に確定
  6. 次のループを開始し、末尾の要素を除いて同じ操作を行う
  7. ループを配列の要素数-1回繰り返す

特徴

  • シンプルで実装が容易
  • 効率的なソートアルゴリズムと比べて遅い(O(n^2)の計算量)
  • 小規模なデータに対しては利用されることがある
  • 大規模なデータセットには向いていない

【PHP】ctype_spaceでtrueの場合、真偽値じゃなくて、そのまま返すやつ

バリデーション用に。

ctype_spaceだと真偽値で返ってくるのでif以降の部分で対応はできるけれど、毎回if文を書くのは流石にめんどうなので関数にした。

適宜アクセス修飾子を付けるなりしてバリデーション時に呼び出せる様にするなどで使える、かも知れない。

【PHP】正規表現で「\」バックスラッシュをマッチさせる

正規表現で「\」ってどう扱えばいいのかと思って調べてみたので備忘録です。

背景としては、PHPで「\」記号をバリデーションのルールに加えるために調べてみました。

以下の様にすればOK。

ちなみに「/」をマッチさせたい場合はデリミタを「#」にすれば問題ないです。下記のような感じ。

$ptn = “#/#”;

正規表現のパターンの変数を上の”#/#”に変更してあげたら「/」をマッチさせることが出来ます。バックスラッシュもスラッシュも両方マッチさせたいよって場合はこうですね。

$ptn = “#/|\\\\#”;

「|」で区切って繋げます。

“#/|\\\\#”…、パッとみ意味不明ですが正規表現が使える様になると幅が広がるので徐々に慣れていきたいところです。

DockerでのMySQL接続についての備忘録

最近、開発環境をXammpからDockerに移行しています。PDOでのMySQLに接続が上手くいかなかったのですが、どうやらDocker環境ではHOSTをlocalにするとエラーが起きるらしい…。

対処方法としては、データベースに作成するユーザーのホスト名をDockerが割り当てたIPにするか、’%’を指定するとエラーは解消されます。

ちなみ’%’は全てのホストという意味となります。

出典:https://codeaid.jp/blog/docker-mysql-php/

とのこと。詳しくは出典元を参照してください。

無事にPDOでMySQLに接続できました。

Close