読者です 読者をやめる 読者になる 読者になる

Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

Perl入学式夏休みドリル 応用編

遅くなってすみません

夏休み、終わってしまいましたね。。。
第2回復習ドリルも少し手の込んだ応用編を用意してみました。
問題は第2回までの知識で書ける範囲になっていますが、第3回の予習をされた方や、もっと便利な関数とか書き方知ってるよ!って方は自由にコードを書いてもらって構いません。もし、自分なりのコードが書けたら、Githubのアカウントを作って、Gist(ちょっとしたコードを書いて公開できるサービス)で公開して受講者同士でお互いに書いたコードを見せ合うのも良いのではないでしょうか。そういう時は自分の書いたGistのアドレスをTwitterで #Perl入学式 のハッシュタグを付けて呟いてみましょう!

もし、どう書けばよいかわからない、ヒントが欲しい、等のご要望があれば、Perl入学式チャットで質問するもよし、なにわPerlで質問して頂いても構いません。

コードには、入学式で説明したおまじないの3行を書くようにしてください。
問題は全部で8問用意してみました。

Let's enjoy programming!


[問1] 以下の配列を使って、しりとりが完成する様、単語と単語の間を->でつなげて画面に出力してください。

my @words = ('肉','イカ','ラッパ','カニ','クジラ');

# 出力例
# イカ->カニ->肉 ....

[問2] 5つの数字の入力してもらい、5つ入力された後に昇順に並べ替えたものを画面に出力するプログラムを書いて下さい。


[問3] 好きな食べ物をいくつか入力してもらい、入力された順番の逆順に画面に出力するプログラムを書いて下さい。入力の受付は、食べ物の代わりにENDと入力されると終了して下さい。(reverse関数ってのがありましたよね?)

#
# プログラム実行時の画面イメージ
#
# $> 好きな食べ物を入力して下さい>apple
# $> 好きな食べ物を入力して下さい>orange
# $> 好きな食べ物を入力して下さい>banana
# $> 好きな食べ物を入力して下さい>END
# $> banana orange apple
#

[問4] 問3を、reverse関数を使わずにコードを書いて見て下さい。(reverse関数と同じ機能を自分のコードで書いてみてください。)


[問5] 合計時間を計算する、時間計算電卓を作りましょう。プログラム実行時のイメージはこんな感じです。

#
# プログラム実行時の画面イメージ
#
# $> 時間電卓です。時間と分を別々に入力して下さい。終わる時は、ENDを入力して下さい。
# $> '時間'を入力して下さい>5
# $> '分'を入力して下さい。>30
# $> '時間'を入力して下さい>3
# $> '分'を入力して下さい。>10
# $> '時間'を入力して下さい>4
# $> '分'を入力して下さい。>35
# $> '時間'を入力して下さい>END
# $> '分'を入力して下さい。>
# $> 合計は13時間15分です。
#

[問6] 「自分の言った(入力した)言葉が1つ遅れて帰ってくる装置(会話BOT)」を作って、会話してみましょう。
コンピューターは、必ず最初に「こんにちは。」の挨拶から始まります。2回目の返事は「あなたの名前はなんですか?」です。
次からは、あなたが答えた返事を繰り返します。ENDと入力すると終了します。イメージはこんな感じです。

# 1つ遅れて返事する君(終わる時は、'END'と入力しましょう。)
# com>> こんにちは。
# you>こんにちは。
# com>>あなたの名前は何ですか?
# you>tomchaです。
# com>>こんにちは。
# you>さっき、あいさつは済ませましたよ?
# com>>tomchaです。
# you>それは私の名前ですが。
# com>>さっき、あいさつは済ませましたよ?
# you>そうです、済ませました。
# com>>それは私の名前ですが。
# you>済ませましたっていう名前なんですか?
# com>>そうです、済ませました。
# you>え?
# com>>済ませましたっていう名前なんですか?
# you>END

[問7] 1つの数字を入力してもらい、2からその数字までの間にある素数を全て出力するプログラムを書いてください。


[問8] メールアドレスを作って出力するプログラムを書いて下さい。
コンピューターはアカウント名(@の前部分)を聞いてきます。そして、ドメイン(@の後ろ)は3つ候補が出てきますので数字で選択します。
これを繰り返して下さい。終わる時はENDと入力します。
そして、作成したメールアドレスを画面に出力して下さい。イメージはこんな感じです。

# アカウント名を入力して下さい。(終了はEND) >tomcha
# ドメインを入力して下さい。
# 0: foo.net
# 1: bar.net
# 2: baz.net
# No? >1
# アカウント名を入力して下さい。(終了はEND) >hoge
# ドメインを入力して下さい。
# 0: foo.net
# 1: bar.net
# 2: baz.net
# No? >2
# アカウント名を入力して下さい。(終了はEND) >fuga
# ドメインを入力して下さい。
# 0: foo.net
# 1: bar.net
# 2: baz.net
# No? >0
# アカウント名を入力して下さい。(終了はEND) >END
# ドメインを入力して下さい。
# 0: foo.net
# 1: bar.net
# 2: baz.net
# No? >
# tomcha@bar.net hoge@baz.net fuga@foo.net

どうでしょう。全部コードが書けましたでしょうか? 第3回まで復習して忘れないようにしましょう!