前回の記事で、オンラインハッカソンというものを紹介しました。
今回も引き続き「プログラミングで彼女をつくる(猫耳セット)」に挑戦してみましょう。
「猫耳セット」の問題
問題について簡単に説明します。
- S(変数):文字列が入力される
- 上記Sの中に「cat」という文字列がいくつ含まれているか?
(例えばacatbccatd) - 上の例のような入力の場合「2」と出力を返すプログラムを作る
(catが2つ含まれている)
この要件に沿って、問題を解いていきましょう。
「自分で出来そう!」と思ったあなたは答えを見る前にチャレンジしてみてくださいね。
スクラッチで問題を解こう
まずは、変数を3つ準備します。
- S:入力で受け取った文字を格納する変数
- cat:Sに含まれるcatの数をカウントする変数
- n:Sにcatが含まれるかどうか1文字ずつ判定するための変数
実はこれでコードが完成しました。
小さくて見づらいかもしれないので、解説をしていきます。
このプログラムで大切なことは以下の2点です。
例えばSが「acatbccatd」の場合を例に考えてみましょう。
上の文字列には「cat」が2個含まれていますので「2」と出力されれば正解です。
ひとかたまりでカウントする仕組み
1文字目はaです。
この時の変数nは、初期設定のままの「1」です。
「c」ではないので、「でなければ」の処理が実行され、nは「2」になります。
次の文字はcですので、「もし」の条件をさらに確認していくことになります。
「n+1番目」の文字は「a」、「n+2番目」の文字は「t」ですので、「cat」の文字列を見つけることができました。
(「catを1ずつ変える」を実行)
条件に「かつ」を使うことが最大のポイントです。
上の説明は、なかなか理解しづらいと思いますが、何度も読み直して、プログラムと見比べながら確認してみてください。
カウント後の文字のチェック方法
上で解説した内容の続きとして説明します。
文字列は「acatbccatd」でした。
条件式の中では「sのn+1番目の文字」などとなっていました。
これを理解しやすいように「n=2」の時の状況をまとめてみます。
- sのn番目の文字:2文字目はc→(n=2)
- sのn+1番目の文字:3文字目はa→(n=3と言い換える事ができる)
- sのn+2番目の文字:4文字目はt→(n=4と言い換える事ができる)
つまり、catの文字列はn=2〜4の場所にあります。
そして、次にチェックする文字はn=5の「b」になります。
(「nを3ずつ変える」を実行)
言葉にすると、とても難しく感じてしまいますね・・。
しかし、やっていることは単純なので、頑張ってついてきてください!
Pythonで解いてみる
前回と同じように、プログラミング言語であるPythonを使って解いてみます。
上のコードは、スクラッチで作ったものと、ほとんど同じ内容のコードをPythonで書いたものです。
しかし、今回はこれで終わりではありません。
実は、Pythonでは、もっと簡単に書くことが出来てしまうのです。
たったの2行です。
2行目の真ん中あたりに「count」という英語があります。
これは、メソッドと呼ばれるもので、Pythonで使うことの出来る便利機能のようなもので、指定した文字列(今回は’cat’)の数を数えてくれます。
スクラッチの「拡張機能」に近いものと思っていただいて大丈夫だと思います。
まとめ
スクラッチでハッカソンに挑戦の第2回目でした。
どうでしたか?
「難しいけど、楽しい」と思ったあなたは、これから、ますます成長出来ると思います!
プログラミングは、スクラッチ・Python、どちらにも良さや難しさがあります。
「スクラッチは結構マスターしてきたよ」というあなたは、ぜひ本格的なプログラミング言語にも挑戦してみてはいかがでしょうか♪( ´▽`)
コメント