私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「誤字測定器DonKonaiを開発せよ」(CodeIQ)を参照してください。
「DonKonai」は標準入力からカンマ区切りで11個の単語を送ってきます。
2個目以降の単語が1つ目の単語と等しい割合(%)を出力します。
PHPで解答しています。
<?php while($line=fgets(STDIN)){ $count = 0; $line = rtrim($line); // 入力エラーチェック if(mb_strlen($line) === 0){ continue; } $words = explode(",", $line); if(count($words) < 2){ continue; } // 誤字チェック(1+10以外にも対応) for($i = 1; $i<count($words); $i++){ if($words[0] == $words[$i]){ $count += 1; } } $rate = round(($count * 100) / (count($words) - 1)); echo $rate . "%"; } ?>
特に解説するところがあるようなプログラムではありません。
単に入力された文字列を「,」で分割し(11行目)、1つ目と一致するかをチェックして一致したものの数を数え(17〜21行目)、割合を計算している(23行目)だけです。
多少工夫している部分としては入力が11個でなくても対応出来る点と計算順だけですが、PHPの場合は整数と浮動小数点の区別がないので大した意味はありません。C言語などの型のある言語なら23行目の様に先に100を掛けた方がわかりやすいコードになります。