LoginSignup
1
1

More than 1 year has passed since last update.

 あるいは、日々楽しくなでしこで遊んでいたら、なでしこ支援賞を頂戴しちゃった件?

 日頃は、自分一人で出来たの出来ないのと騒ぐ記事ばかり書いていますが、アドベントカレンダーの最初の記事なので、初心者向けになでしこを紹介する的な内容にした・・・つもり。

なでしことは

 日本語でプログラミングできる、有り難~い言語です☆
 アルファベットムリ(それがたとえローマ字でも!)とゆうワタシにとっては、まさに救世主ですよ゚+.ヽ(≧▽≦)ノ.+゚
 もちろん、別に英語無理じゃなくても、なんだったら他の言語でばっちりプログラミングできるけど、日常のちょこっとしたことはやっぱり日本語でラクにやりたい! っていうファン層も多いみたいだし、中学校の教科書に採用されたり、大学入学共通テスト手順記述標準言語(DNCL)との対応表が発表されるなど、近頃は特に教育分野力が入ってるみたいですね。

 詳しくはホームページで☆

 とにかくこれは良いものです。異論は認めません(`・ω・´)
 出会って以来、私にとっては無くてはならないものとなりました!
 って感じで、日々楽しくなでしこで遊びまくっていたら、なんと!!
 『第2回なでしこ支援賞』なるものを頂戴しちゃいました!!!
 なななんと畏れ多い((( ;゚Д゚)))
 ぷろふらむのこともこんぴゅぅたぁのことも、あんまり分からないドシロウトですのに・・・
 「ひまわり時代から使っています!」 というユーザーさんも多い中、ほんのペーペーですのに・・・

 逆に言えば、誰でももらえます!?!?
 というわけで、みんなで楽しくなでしこで遊びましょう☆
 だって、好きなものは流行らせたいよね~❤
 なでしこユーザーが、ねずみ算式に増えるといいなぁ~(*´∀`)♪

ねずみ算の問題

 ってワケで無理矢理ねずみ算に持ってくw
 ご存じとは思いますが、ねずみ算とはこうゆう問題です。

 正月にねずみの父母が子を12匹産む。親子合わせて14匹になる。
 このねずみが二月には子もまた子を12匹産むので、親子合わせて98匹になる。
 こうして月に一度ずつ親も子も孫も曾孫も毎月12匹ずつ産むとしたら、12月には何匹になっているでしょう?

『新編塵劫記 3巻』 吉田光由 元禄2 第五 ねずみ算の事

 なんで産まれるのが常にピッタリ雄雌6匹ずつなんだとか、いかにねずみとは言え妊娠期間も考えると、生まれた子がたった一月で次の子を産むとかムリなんじゃとか考えてはいけません。問題なんで!
 他にも、ねずみ同士は必ずつがいになるし、つがいは毎月必ず子を産むし、親になる前に死んじゃう子も逃げ出す子もいないよってゆうのが前提条件です。
 (いらんこと考えてるうちテストの時間が終わっちゃう人でした(´д`))
 もっともこれはテストじゃ無いんで、問題の後にふつーに答えが書いてあります。

二百七十六億八千二百五十七万四千四百二匹

 だそうですよ! ねずみヤバイ><
 算盤でどんどん大きい数を計算していく練習問題と思われ、毎月の経過が全部表になって掲載されているんだよねー(検算出来るように?)

なでしこで日本語っぽく解いてみる

要件

 問題文を紐解くと、要件としてはこうゆうことだと思います。

  • 最初の親ねずみは2匹。
  • 1つがいのねずみが月ごとに産む数は12匹。
  • 期間は1年間(12ヶ月)。
  • 2匹の親ねずみがつがいになって子ねずみが生まれる →つがいは親ねずみの半分。
  • 子ねずみは1ヶ月で大人になり、翌月には親ねずみとして次の子を産む。
  • これが期間中繰り返される。

コード

 で、こんな感じ?

ねずみ算.nako3
親ねずみは2#匹
産む数は12#匹
月数は12#ヶ月(1年)

月数回、繰り返す。
    番は、親ねずみを2で割る。          #つがいは親ねずみの半分。
    子ねずみは、番に産む数を掛ける。       #全てのつがいが産んだ子ねずみの総数。
    親ねずみと子ねずみを足して、親ねずみに代入。 #その子ねずみも翌月には親ねずみに加わる。
    //子ねずみを表示。親ねずみを表示。「-----」を表示。
ここまで。

「{月数の漢数字}ヶ月後のねずみの数は、{親ねずみの漢数字}匹」を表示。

 わ~ぃ、めっちゃ日本語~♪
 これが、ちゃんと動くんですよ~。
 答えもちゃんと「二百七十六億八千二百五十七万四千四百二匹」と表示されました☆
 なでしこスゴイ!!!

 あ、「番」は「つがい」と読みますよ。かなで書くと「が」が助詞になってしまうので変数として使えません。ペアとか夫婦とかでもいいんだけど和算の問題なので昔っぽくしてみたんですw
 変数を使うことで、分かりやすく日本語っぽくなるだけでなく、一度に産まれる数や、期間などの条件を変えた計算が簡単に出来るようになります。

なでしこさん マニュアル 変数について

 あっあっ、それから・・・
 「哀れ、親ねずみ真っ二つぅ~(XoX)」とか言わないでw
 つがいの「が」と同様、「の」が助詞なので「親ねずみの数」は変数に出来ません。
 ので、「親ねずみ数」と、どっちが日本語っぽいかのぅと考えた結果「親ねずみ」にしたんですけどね・・・
 ああっ、そこの人っ、刀や鉈に2を代入しちゃいけませんってば!www

動作確認

 「作品を編集」ボタンを押して、親ねずみ(最初のねずみの数)や、産む数(1つがいから一度に産まれる子ねずみの数)、月数(期間)などの条件を変更してみたりしてみてください☆
(ねずみの数を変える時は、最初の親ねずみも産まれる数も必ずペアになれるよう偶数じゃなきゃダメですよ)
 コメントアウトしている行を有効にすれば、経過も確認出来ます。

計算でしゅっと解く

 もっとも、次のページには計算方法も載っていて「ねずみ2匹に7を12たび掛ければ・・・」とあるとうりで、数学的に言えば、

2*7^12を表示。

 こんだけ! ラシイですけれどね。
 「^」は「階乗(べき乗) 」を表す演算子です。

なでしこ3で使える演算子

2×7×7×7×7×7×7×7×7×7×7×7×7を表示。

 と同じコトです。
 ムカシの子どもは、これを算盤で計算したことでしょう。

 ちなみに・・・なでしこ1なら、

なでしこ1のみ.nako
2に7の12乗を掛けて表示。

 コレでちゃんと計算出来るんですが、v3には「乗」が無いんですよねー。
 v1にはこんなふうに命令と引数の間に助詞の無い命令がいくつかあったんですけど、v3ではそれができないっぽいんですね。残念。
 こんなところですかね・・・?

2に7^12を掛けて表示。//27682574402

 ちなみに7とゆう数字は、父母2匹の親ねずみから12匹の子ねずみが生まれるので6倍。それに父母を足した数が、次の月の親の数になるので、親ねずみの数としては毎月7倍ずつ増えていくよとゆうことですね。
 うーん、こうゆうコトかな・・・?

ねずみ算.nako3
定数 父母は2#匹
親ねずみは2#匹
産まれ子は12#匹
月数は12#ヶ月(1年)

親ねずみ*((父母+産まれ子)/2)^月数を表示。

おわります

 アドベントカレンダーの最初の記事なので、なでしこの紹介的な記事でした。
 内容的には簡単な四則演算、変数を使って分かりやすくすること、「回」の繰り返し構文ってところですが、個々の説明は省きました。
 実際に動くことをお試しして雰囲気だけ感じてもらって、文法についての詳細は、なでしこさんマニュアルをご覧下さい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1