PHP

cgios.comさんの過去問、DNA問題を解いた

cgios.comさんの過去問、DNA問題を解いた

ここのページの問題。

以下回答ソース。
(2)が超難しかった。
(3)はおそらく(2)の出力課程でフィルタリングするだけだと思うので省略。

(2)で苦戦したなー。4のn乗ループってどうやるのか初めて考えた。
4進数のDNA(アデニン (A) 、グアニン (G) 、チミン (T) 、シトシン (C) )ではなく、
おなじみの10進数(0から9までの10通りの整数)で考えるとやりやすかった。

以下ソース。
関数oneやtwoが問題(1), (2)の回答ソースになっている。

例によってpaiza.ioで実行できる

エックスサーバーからPHPでメールを送りたい

エックスサーバーからPHPでメールを送りたい。

送ることができたので方法をメモ。

〜メールアカウント設定〜
1.エックスサーバーのサーバパネルからメールアカウント設定>ドメイン選択画面
2.ドメイン選択画面でメールの送信元にするドメインの右の選択するをクリック>メールアカウント設定
3.メールアカウント設定画面のメールアカウント追加タブを選択
4.メールアカウントのアットマークの左とパスワードとかコメントを入力して確認ボタンをクリック
5.その後の画面の確定ボタンをクリック→追加しましたってメッセージが出たらOK

〜php.ini設定〜
6.サーバーパネルのphp.ini設定>ドメイン選択画面
7.設定するドメインの選択するをクリック>php.ini設定
8.php.ini設定画面のphp.ini直接編集タブを選択
9.そこにあるテキストエディタで「smtp_port = 25」のところを「smtp_port = 587」に変更して確認ボタン
10.次の画面で確定ボタンをクリック(この手順のことを油断して忘れないように注意!)→完了しましたってメッセージが出たらOK

〜phpファイル作成〜
設定が完了したエックスサーバに、メールを送信する処理を書いたphpファイルを設置して、
ブラウザでアクセスするなりして実行すればメールが送れるはず。

所持金と購入価格から最適なお釣りを算出するプログラム

所持金と購入価格から最適なお釣りを算出するプログラム

下記の知恵袋の質問のプログラムを作成した。

大学のプログラミング課題ができません。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1420112999

概要:
所持金1443円を素直な貨幣のうちわけ(?)で持っているとき、
667円の支払いをするのに1000札を1枚ぽーんと出すよりも
1222円支払っておつりを555円にする方がかっこいいよね。

所持金1443円と購入金額667円を受け取り、
最適な支払金額1222円を返却するそんな関数を作ろうという問題。

質問文によるとどうやらJavaの問題らしい。
ユズノハもpaizaとかでプログラミングの問題を解くときはもっぱらJavaを使うのだけれど、
現在PHPを勉強中なのでPHPで解いた。

ちゃんと解けているか自信がないけれど一応動くものができた。
PHPのソースはこちら。

例によってpaiza.ioで実行もできる

幼児が数分で解けるのに大人が解けない算数(?)の問題を解いた(PHP)

幼児が数分で解けるのに大人が解けない算数(?)の問題をPHPで解きました。
元ネタ : https://matome.naver.jp/odai/2133393856936222101

正解は数字に開いている穴の数の合計が方程式のルール(0や4は1、2や3は0、8だけは2)ってやつ。

PHPのコードはこちら。

実行結果

ここで実行できます。

文字列置換(PHP)

文字列置換(PHP)

str_replace関数で置換できる。
str_replace(置換対象文字列、置換後文字列、元の文字列、置換した回数);

str_ireplace関数はアルファベットの大文字小文字を区別しない。

置換対象文字列と置換後文字列は配列で指定できる。

PHPの変な仕様

PHPの変な仕様を発見しました。

上記コードの出力結果print_r($arr1);は下記になります。

なぜか$arr1のindex:1だけ10加算されています!

これは、
$dummy = &$arr1[1];
で$dummyという変数に参照を代入した結果、
$arr1[1]と$dummyは同一の領域を指すことになる。

そのため$arr1を代入した$arr2の全要素に10加算した時に、
$dummyの値に10加算されるため、$arr1[1]の値だけ$dummy1と同じ1+10=11になるのだそうです。

これは危険な仕様ですね。

僕はC,Javaの後にPHPの学習を始めたため、
なかなか慣れないです。