Hatena::Groupnadesiko

99円のへたれ学習帳

2009-10-25

問題

| 15:59

問1

名前を尋ねて、の人に挨拶するプログラムを書いてください。

命令:「尋ねる」「言う」「(文字列連結)」

余裕があれば:エディタ部品やボタン部品も使ってみてください。

問2

ひつじを1秒ごとに10匹数えるプログラムを書いてください。

余裕があれば:しゃべらせてみてください。

問3

年を尋ねて、の年の13日の金曜日をすべて表示するプログラムを書いてください。

問4

九九の表を表示するプログラムを書いてください。数字は揃えて表示してください。

命令:「繰り返す 構文」「継続表示」「改行(定数)」

ヒント:「継続表示」は文字を表示した後、改行ない命令です。

問5

なでしこがインストールされているフォルダ以下に含まれているすべての「.nako」ファイルのファイル名と、の個数を表示するプログラムを書いてください。

ヒント:なでしこのインストールされているフォルダは「ランタイムパス」です。

問6

コンピュータとじゃんけんをするプログラムを書いてください。ただし、人対人用にも改造できるようにしてください。

命令:「ボタン選択

ヒント:勝ち負けの判定は、手を数に変換すると簡単になります。

問7

3桁の数を尋ねて、それを漢数字に変換するプログラムを書いてください。

(例:256→二百五十六 101→百一)

余裕があれば、3桁以外の数にも対応させてみてください。

回答

| 21:34

答1

「お名前は?」と尋ねて名前に代入。
「{名前}さん、こんにちは!」と言う。

答2

エージェントマーリン召喚
10回
  「ひつじが{回数}匹」をエージェント言う
  1秒待つ
エージェント終了

MS Agentのマーリンを使用しました。声を出すには、必要なファイルを以下のページを参考にインストールしてください。

http://codezine.jp/article/detail/867?p=2

答3

「何年を調べますか?」と尋ねて年に代入
12回
  調査日は「{年}/{回数}/13」
  もし、調査日の曜日が「金」ならば
    調査日を表示

答4

Iで1から9まで繰り返す
	Jで1から9まで繰り返す
		I*Jを3で文字列右寄せして継続表示
	改行を継続表示

ただ単に答を表示しただけでは表が綺麗にろいません。のため、「文字列右寄せ」で整形しています。

答5

ランタイムパス&「*.nako」の全ファイル列挙
NAKOファイル=それ
ファイル数=NAKOファイルの要素数
NAKOファイルを言う
ファイル数を言う

会場では反復していちいち比較する方を紹介しましたが、こちらの方が明らかにスマートですね…

全ファイル列挙を使わないで書いてみると再帰関数の勉強になるかもしれません。

答6

人間手=「じゃんけん!」を「グー
チョキ
パー」でボタン選択
人間手の「グー」を0に置換
人間手=人間手の「チョキ」を1に置換
人間手=人間手の「パー」を2に置換

コンピュータ手=3の乱数
コンピュータ手を表示
(人間手-コンピュータ手)で条件分岐
	0ならば
		「あいこ」を表示
	1ならば
		「負け」を表示
	2ならば
		「勝ち」を表示
	-1ならば
		「勝ち」を表示
	-2ならば
		「負け」を表示

このソースでは少々泥臭いのですが、下のクジラさんのソースのように「(先手N - 後手N + 3) % 3」とするとたったこれだけで勝ち負けを判定できます!

答7

数字=「数は?」を尋ねる
漢数字=「,一,二,三,四,五,六,七,八,九」を「,」で区切る
漢字位=「百,十,」を「,」で区切る
3回
	数字の回数から1文字抜き出す
	もし、それ<>1 || 回数=3ならば
		漢数字[それ]を継続表示
	漢字位[回数-1]を継続表示

無量大数まで対応したバージョンがどう書く?orgにあります

http://ja.doukaku.org/comment/4530/

kujirahandkujirahand2009/10/25 16:01===
「名前は?」と尋ねる。
「{それ}さん、こんにちは」と言う。
===
普通ですが・・・

kujirahandkujirahand2009/10/25 16:04問2:
~~~~~
!「aquestalk.nako」を取り込む
10回
  母艦=回数
  「ひつじ;が」とAQT話す
  「<NUMK VAL={回数} COUNTER=ひき>」とAQT話す
  1秒待つ。
終わる。
~~~~~

kujirahandkujirahand2009/10/25 16:41問6 じゃんけんプログラム
~~~
#-----------------------------------------------------------------------
# じゃんけんプログラム
#-----------------------------------------------------------------------
相手一覧=「人間
コンピューター」

手一覧=「0:ぐー
1:ちょき
2:ぱー」

「誰と勝負しますか?」を相手一覧で、
ボタン選択して相手に代入。

真の間
 勝負実行
 勝負判定
 「続けますか?」と二択。
 もし、それがいいえならば、終わる。

●勝負実行
 「先手:どの手を出しますか」を手一覧でボタン選択して、
 先手に代入。
 もし、相手=「人間」ならば
  「後手:どの手を出しますか」を手一覧でボタン選択して、
  後手に代入。
 違えば
   手番号=3の乱数
   後手=手一覧¥手番号
 
●勝負判定
 先手N=INT(先手)
 後手N=INT(後手)
 判定番号は、(先手N - 後手N + 3) % 3
 判定番号で条件分岐
  0ならば
   結果=「あいこ」
  1ならば
   結果=「後手の勝ち」
  2ならば
   結果=「先手の勝ち」
 「先手:{先手} 後手:{後手}」を表示
 「結果:{結果}」を表示。
#-----------------------------------------------------------------------

kujirahandkujirahand2009/10/25 16:42問7 3桁限定とのことで、以下のように。本来は、割ってくと良いのですが・・・
~~~
候補=「,壱,弐,参,四,五,六,七,八,九」を「,」で区切る。
「数字を入力してください」と尋ねて、NOに代入。
NOを文字列分解
「{候補\それ\0}百{候補\それ\1}十{候補\それ\2}」を表示  
~~~

kujirahandkujirahand2009/10/25 16:44問4
~~~
LIST=ランタイムパス&「*.nako」の全ファイル列挙
F個数=LISTの要素数
「ファイルの個数:{F個数}
{LIST}」をメモ記入。
~~~

nade_sochanade_socha2009/10/30 18:20問4
「回」を使うと、「回数」が混乱するということですが、
変数を使うことで回避できます。
~~~
文字サイズは12
9回
  Tateは回数。
  10,Tate*30へ回数を文字表示。
  Tate*50-10,0へ「{回数}の段」を文字表示。
  9回
    Yokoは回数。Kekka=Tate*Yokoを2で文字列右寄せ。
    Yoko*50,Tate*30へKekkaを文字表示。
~~~

MusbauMusbau2012/03/26 18:26There are no words to describe how bdoacious this is.

pgqkzqrfhrpgqkzqrfhr2012/03/28 08:32BaNCyg , [url=http://crektuepblbg.com/]crektuepblbg[/url], [link=http://keiuxdrlhjgl.com/]keiuxdrlhjgl[/link], http://ekqugbkcooat.com/

rzsaqzrzsaqz2012/03/28 15:03jdyw6Y <a href="http://dhabbkooczwv.com/">dhabbkooczwv</a>