┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ■例題 ┃
┃ 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){
︙
︙
︙
}
これ以降すすまない。そんなこと出来るのかな???