プログラミング練習問題をPHPで解いてみた
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
プログラミングのアルゴリズムを考えるのは、けっこう楽しいものですが、数学的な論理が必要となると、割と簡単なものでも、それをプログラミング言語で表現するのは難しい。
紙面では簡単に解ける二次方程式でも、それをプログラミング言語上で関数やメソッドで表すには、それなりの訓練が必要です。
スポンサーリンク
と、前振りはここまで。
10分でコーディング|プログラミングに自信があるやつこい!!と題した問題があったので、解いてみました。
・・・10分じゃできませんでした。
細かいとこまで入れると、30分くらいかかった。
PHPで解いたのですけど、私が書いたコードは以下。
0 divide(ゼロ除算)へのエラー対応も念のため。
<?php function card_deal($player_nums, $cards) { if ($player_nums == 0) { exit("プレイヤーが0人です"); } $cards_ary = str_split($cards); $length = count($cards_ary); $cards = array(); // return値 if ($player_nums > $length) { for ($j = 0; $j < $player_nums; $j++) { $cards[$j] = ""; } } else { $length = $length - ($length % $player_nums); // n人目のカードを求める for ($n = 0; $n < $player_nums; $n++) { for ($i = 0; $i < $length; $i++) { if (($i % $player_nums) == $n) { $cards[$n] .= $cards_ary[$i]; } } } } return $cards; } var_dump(card_deal(3, "123123123")); var_dump(card_deal(4, "123123123")); var_dump(card_deal(6, "01234")); var_dump(card_deal(0, "123456789")); ?>
実行結果。→http://codepad.org/iFbZAOhl
array(3) { [0]=> string(3) "111" [1]=> string(3) "222" [2]=> string(3) "333" } array(4) { [0]=> string(2) "12" [1]=> string(2) "23" [2]=> string(2) "31" [3]=> string(2) "12" } array(6) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" } プレイヤーが0人です
どっかおかしかったらご指摘ください。
引用元の解答はJavaですが、あー、なるほどなぁ。
私の書いたのより、はるかにスマートだ。
1.最初にプレイヤーの数の分、カードの配列を、空の文字列で初期化。
2.カードの並びをforで回しながら、処理する。
3.forの中で、cards[index++]で、プレイヤーにカード割り当て。
4.index がプレイヤー数と同じの場合・・・残りの枚数がプレイヤー数より少なくなったら、break。
5.じゃなかったら、index を 0 に巻き戻し。
というアルゴリズムで解いてありました。
スポンサーリンク
>> 次の記事 : PHPでvar_dump()を使ったお手軽デバッグコード
<< 前の記事 : CakePHPはMVCかつフルスタックのフレームワーク
- - 関連記事 -
- strpos() や strcmp() など間違えやすいif文での判定
- htmlentities() と htmlspecialchars() の違い
- PHPの内部エンコードと出力文字コード、スクリプト文字コード
- PHPのデバッグ・xdebugをxamppで有効にする
- CakePHPの日本語対応、国際化
- コマンドラインでPHPが起動できない
- 直接ファイルが実行されたときだけ起動するスクリプト
- ディレクトリを探索してリンク一覧表示
- PHPとRubyのコードの書き方を比較
- コメントアウトの使い分けと、/*** ~ ***/とか// — を単語登録
- PHPでvar_dump()を使ったお手軽デバッグコード
- CakePHPはMVCかつフルスタックのフレームワーク
- PHP5のクラス定義とオブジェクトのおさらい
- フレームワークCakePHPにチャレンジ
- sort・asort・ksort 配列を並べ替える関数
- foreach構文
- PHPの配列
- strcmp関数
- strcasecmp関数
- PHPヒアドキュメント
スポンサーリンク