denzi-soul.blog

webデザイナーを目指して、webデザインを学んでいく過程を綴るブログ

PHPの練習問題集を発見したので、超初心者だけどやってみた。

2008年1月22日 23:12 | コメント(0) | トラックバック(0)

プログラミングの練習問題集を発見しました

練習問題 - プログラミングスレまとめ in VIP
* 問題一覧
o ループ練習
o FizzBuzz
o 素数判定
o 平方根を求めてみる
o 英単語しりとりプログラム
o うるう年測定
o ハノイの塔
o 転置行列
o 線形合同法
o 数当てゲーム
o 数当てゲーム その2(Hit&Blow)
o カレンダー出力
o 配列いじり
o Caesar暗号解読
o フィボナッチ数列
o Base64
o 累乗
* 回答例
しかし残念ながらPHPでの回答例無し・・・!いいもん!自力で解くもん!自力で(検索して)解くもん!

PHP歴2週間の俺が、死ぬ気でやってみた

ループ練習

Hello World![改行]を5回表示させてください。

print(或いはprintf,cout等)を5回コピーすれば当然可能ですが、
ループ構文(for,while等)を利用して、print等は1回の使用にとどめてみてください。

* 出力結果

Hello World!
Hello World!
Hello World!
Hello World!
Hello World!


これは基本過ぎる!(とか言いつつ、参考書見ながら解いた自分)
ループ練習の回答
<?php
for($i = 1;$i <= 5; ++$i){
print "Hellow world!" .$i. "<br>\n";
}
?>

おまけで、何回目かの"Hellw world!"かも表示。
FizzBuzz

# ルールは以下の通り

1. 1から順番に数を表示する
2. その数が3で割り切れるなら"Fizz"、5で割り切れるなら"Buzz"、両方で割り切れるなら"FizzBuzz"と表示する

# 要するに"1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz ・・・"と出力される


これは1回解いた(というか答え見た)からなぁ・・・
FizzBuzzの回答
<?php
  for ($i = 1; $i <= 100; ++$i){
  if ($i%15 == 0){
  print "FizzBuzz<br>\n";
}elseif ($i%3 == 0){
  print "Fizz<br>\n";
}elseif ($i%5 == 0){
  print "Buzz<br>\n";
}else{
 print "$i<br>\n";}
}
?>
素直に考えて書いてみたけど・・・これ、絶対もっともっと短く出来るだろ・・・。素人丸出しコードだってことが素人の俺でもわかる。だがそれがいい。 初心者~中級の方への問題 - PHPプロ!Q&A掲示板に簡潔なコードで回答が載ってます。
素数判定

# 与えられた数が素数かどうか調べる
# あるいは与えられた数までの素数を列挙する

問題の意味がよくわからなかった・・・与えられた数が素数かどうか調べる、とのことだけど、誰がどんな数を与えるの?もしかして乱数を使ってランダムに数を表記して、それに対して判定しろ、ということ??

わからないので、素数列挙、でいきます。

素数判定の回答

PHP超初心者ゆえ、自力ではついに回答に至れず・・・ガックシ

1から100までの素数の表示の仕方を教えてください - PHPプロ!Q&A掲示板でのsignalさんの回答。 {}やbreak;を削除しても動いたので、削除して下に表記しました。(転載・改変申し訳ないです・・・。不都合あれば削除します。)

<?php
	foreach ( range( 1, 100 ) as $i ) {
  
	$h = intval( $i / 2 );
	$p = true;

for ( $j = 2; $j <= $h; $j ++ ) {
if ( ( $i % $j ) == 0 )
$p = false;
}

if ( $p )
print "$i<br />";
}

平方根を求めてみる

# 与えられた数の平方根を求める
# 当然ライブラリは使わない

平方根を求めてみる の回答
1~100までの整数の平方根を列挙してみたのですが・・・以下のコードじゃだめ・・・なんですよね、きっと。sqrtを使わずに書けるのかな?
<?php
 for ($i = 1; $i <= 100; ++$i){
 print sqrt($i)."<br>\n";
}
?>
これ以上は難しいのでパス
うるう年測定、とか難しそうなので今日はここまで。他の問題もできるようになるよう頑張ります。
「つーか、こう書けばいいんじゃね?」という指摘・ツッコミいただければ嬉しいです。

カテゴリ:

タグ:

| Home | ブログのヘッダー画像を作りまし... »

トラックバック(0)

トラックバックURL: http://blog.denzi-soul.com/mt-tb.cgi/19

コメントする