講義だけじゃない!問題を解いて圧倒的成長(๑•̀ㅂ•́)و✧
大遅刻です><申し訳ない
この記事は
Perl入学式 Advent Calendar 2017 - Qiita
の記事です
今年度は仕事周りでバタバタしたこともあり
Perl入学式にはあまりサポーターとして参加できなかったですが
今年最後ぐらい参加してくださった方に
何か少しでもトクになる情報をお伝えしていきます!
講義を受けた後、あともう一歩踏み出すと圧倒的成長
復習問題を解いてみよう
Perl入学式の講義には、講義ごとに復習問題が必ずついてます
内容は、その日学んだ内容を盛り込んだ問題です
講義を受けた後、自宅に帰ってから
是非この問題を解いてもらうことをオススメしています
「自分だけでは問題を解けないかもしれない」と
不安に思う方もいるかもしれませんが
一度問題を読むだけでもしてみて頂きたいのです
分からなくてもいいんです
分からないことが分かるということ自体が大きな成長なので
考えるというステップまで
勇気を持って踏み出してみてください
復習問題が終わった、もっとやってみたい
さて、この記事の本題です
Perl入学式の講義資料中の問題を解き終わった時(できれば第3回まで)、
また、講義を完走して、特にやりたいことが見つからない方に
手だけでも動かして覚えたことを忘れないようにする
オススメ方法をご紹介します
Project Euler
プロジェクトオイラーという数学の問題集があります
英語のサイトでびっくりするかもしれませんが
日本語版もあります
翻訳されたサイト: Project Euler - PukiWiki
ここに載っている問題は
世界中のエンジニアが
任意のプログラミング言語を使い解答を導き出している問題たちです
しかも驚くことに
Perl入学式の講義で紹介したプログラムの書き方で
基本的に解くことが出来ます
実際に問題を解いてみた
例えば、
Problem 1 「3と5の倍数」 10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる. 同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.
という問題
倍数とか自然数、単語が懐かしいですね
ここはちょっと昔を思い出してみてください
では実際にこの問題をperlで解くと、どうなるでしょう 私の回答はこちら!
#!/usr/bin/env perl use strict; use warnings; my $sum = 0; for my $num (0..999) { if ($num % 3 == 0 || $num % 5 == 0) { $sum += $num; } } print 'result: ' . $sum . "\n";
※解き方はひとつじゃありません、様々なやり方があるので是非自分自身でも考えてみてください
ちょっと解説
関連する講義資料部分を添えて
ちょっと解説していきます
まず、合計を求める問題なので
合計値を入れる変数を用意します
my $sum = 0;
次に
1000 未満 の自然数を対象に処理したいので
0から999まで配列を用意してfor文で順に数字を処理していきます
Perl入学式 第2回: 範囲演算子
Perl入学式 第2回: for文
for my $num (0..999) {
そして
$num
という変数に0から999まで数字が順々に入ってくるので
順々にチェックをしていきます
チェックする内容は 3 か 5 の倍数になっている数字
かです
条件を満たすかどうか確認するには if文を使います
また、倍数は3 か 5 で割り切れる数字
と言い換えることが出来るので
剰余算%
を使います
Perl入学式 第2回: if文
Perl入学式 第2回: 四則演算
Perl入学式 第2回: 関係演算子
if ($num % 3 == 0 || $num % 5 == 0) {
無事条件をクリアした数字は
足し加えていきます
$sum += $num;
0から999まで数字までの数字のチェックが終わり
最後、答えを出してあげなきゃいけません
print 'result: ' . $sum . "\n";
これでおしまいです!
問題をやっていたら躓いてしまった
問題のわからないところや疑問に思ったところは
次の講義でサポーターに聞いてもらうか
slackというチャットツールがあるのでそちらで質問していただければ
分かる範囲で回答します( http://www.perl-entrance.org/ ←の上部に[チャット招待]という部分があるのでこちらから)
最後に
Perl入学式の講義でお伝えしていることは
プログラミングの基礎的な考え方、書き方などです
なので
世に転がる問題たちに対して
Perl入学式で身につけた知識を持って
挑むことが出来たりします
ぜひ、講義を受けられた皆さんには
講義資料内の問題やネットに転がる問題にも
チャレンジして圧倒的成長を目指していただきたい!!
参加された方の成長がサポーターの喜びです(・∀・)