で、発表が終わって、次は参加者の皆さんに問題を解いてもらう時間。うろ覚えですが、こんな感じの問題でした。
- 初級
- 「尋ねる」命令で入力したものを表示してください。
- 入力したものの前に「なでしこ:」という文字を付けて表示してください。
- 表示した文字の左2文字だけを切り取って表示してください。
- 中級
- 1から100までの数字について、3の倍数の時"3"、5の倍数の時"5"、そして15の倍数の時"35"をそれぞれ表示し、それ以外の時は何も表示しないでください。結果はExcelまたはCSV形式で保存してください。
- 1から100までの素数を列挙してください。
最後時間がなくて十分に解説ができなかった演習問題ですが、一応僕なりの回答を書いておこうと思います。ちなみに、正式な回答(?)はしらたまさんがWebに上げてくれるそうです。
- 初級-1.
# 略記法を使う
「年齢は?」と尋ねて表示する。
# 「それ」を使う
「お名前は?」と尋ねる。
それを表示する。
- 初級-2.
# アンパサンド(&)で文字を繋げる
「年齢は?」と尋ねる。
「なでしこ:」&それを表示する。
# 展開を使う
「お名前は?」と尋ねる。
「なでしこ:{それ}」と表示する。
- 初級-3.
「お名前は?」と尋ねる。
メッセージは「なでしこ:{それ}」。
メッセージの2文字左部分を表示する。
- 中級-1. ごく普通の解法
100回
もし回数が15の倍数ならば
「{回数},35」と表示する
違えば、もし回数が5の倍数ならば
「{回数},5」と表示する
違えば、もし回数が3の倍数ならば
「{回数},3」と表示する
表示ログを「{デスクトップ}中級1.csv」に保存
- 中級-1. 普通じゃない解法
MAPとは配列=「{~}3{~}5{~}35」
「{デスクトップ}中級1.csv」に出力先設定。出力先初期化
100回、「{回数},{MAP[((回数%3)==0)+2*((回数%5)==0)]}」を一行出力
- 中級-1. 全然分からん(なこちゅさん談)解法
M\1=~回数&`,`&3と一行出力
M\2=~回数&`,`&5と一行出力
M\3=~回数&`,`&35と一行出力
「{デスクトップ}中級1.csv」に出力先設定。出力先初期化
100回、M[((回数%3)==0)+2*((回数%5)==0)]
- 中級-2.
Pとは配列。Iとは整数。
Iを2から100まで繰り返し
もしIが素数ならばIをPに配列追加
Pをメモ記入
●素数(Nが)
Pを反復、もしN%対象が0ならばNGを戻す。
OKを戻す
ひとまずうろ覚えでこんだけ。解説はしませんが、簡単に講評というかコメントを。
初級の問題は、勉強会に参加していた女性の方などから質問を受けて答えたりしてたので覚えていました。問題4とかもあったかもしれませんが、よく覚えてないですf(^^;。他にも「追加」命令を利用する、「文字抜き出し」命令を使う、等々、色々書けると思います。
中級の1番は後ろ2つが U D の回答です(笑)。良い子こんな回答をしないように。これ、工夫次第ではもっと短くできそうですね。2番について僕の回答はいつぞやの「かんそうぶんふうぷろぐらむ」でいいです(笑)。
そうそう、演習中に見た目合ってるのにエラーが出る、という風に聞いて行ってみると、「もし〜であれば」と書いていました。確かになでしこはごく自然らしい日本語文でプログラムを書けるので、たまにこういうミスをやってしまうんですよねぇ。。。確か、「もし〜ならば」「もし〜なら」「もし〜でなければ」が使えたハズです。他は似てても使えません、気を付けてください!