PHP 本日の課題 「7」がいくつあるか数えてください。PART1

┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ■例題                     ┃
┃ 1からnまで連続する正の整数があります。    ┃
┃ それらの中に「7」がいくつあるか数えてください。┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛
秤にかけられたアルバイトのkodaです。
今まで勉強したところで出来るとのこと。

タイムリミットは1時間

結果

↓ ↓ ↓

所要時間【23:37】

<?php
$n=100;
$delim="<br />";
$total_count7=0;

for($i=1;$i<=$n;$i++){

 $str_i = (string)$i;
 $count7=substr_count($str_i,"7");

 if($count7!=0){
 print($str_i.":".$count7.$delim);
 }
 $total_count7+=$count7;
}

print("合計:".$total_count7);
?>

n=100 と設定した結果

7:1
17:1
27:1
37:1
47:1
57:1
67:1
70:1
71:1
72:1
73:1
74:1
75:1
76:1
77:2
78:1
79:1
87:1
97:1
合計:20

しかしながらここで問題が。

他にも色々手段は考えられて、sustr_countの変わりに、関数を作って文字列を分解して判断するとか、なんとでも方法はありそうです。

…ところがここで気がついたのです。関数の使い方を学んだので目的の関数を探して実施したのですが、そもそも

「使い方を学んだ」けど「今回の関数は勉強していない」

という解釈をすると…すなわちsubstr_countは使っちゃいけない? 文字列を操る関数も? そうだとすると…わからない。

自前でsubstr_count的な関数をつくろうと思ったけど、結局文字列扱うにも関数が必要で、

演算、条件、繰り返し

だけで解決出来るという(私にとって)ウルトラC的な課題なんだろうか(汗)

ちょっと頭を捻ったけど

function substr_count_sd($str_cont,$str_word){

     ︙

}

これ以降すすまない。そんなこと出来るのかな???

関連してそうなエントリ

koda