Hatena::Groupnadesiko

99円のへたれ学習帳

2009-04-25

「ナベアツ算」の解答

| 23:02

4月25日の勉強会の後半で行った演習の模範解答と解説です。

仕様

・1から100まで数を表示する
・3の倍数の時と3が含まれるときは数字の横に「アホ」と表示する

の1

100回
  もし、回数%3=0ならば
    「{回数} アホ倍数」を表示
  違えばもし、回数で3が何文字目ならば
    「{回数} アホ含」を表示
  違えば
    回数を表示
表示ログを言う

これがいちばん分かりやすいのではないでしょうか。

「~」構文で繰り返します。反復した回数は「回数」に入ります。

3の数を判定するには、演算子「%」で割り算の余りとればよいでしょう。

3が含まれる場合の判定には「何文字目」を使います。この命令の返値は文字列の位置で、これは1から始まり、見つからなかったときは0が返されます。

もし」は条件が0以外の時に実行されますので、3が見つかれば(つまり、1や2ならば)「「{回数} アホ含」を表示」が実行されるということになります。

の2

100回
  回数を継続表示
  もし、回数%3=0ならば
    「 アホ倍数」を継続表示
  違えばもし、回数が「*3*」に一致ならば
    「 アホ含」を継続表示
  改行を継続表示
表示ログを言う

回数を先に表示させたい時は、「表示」を使うと自動的に改行されてしまうので、改行がされない継続表示」を使います。しかし、このままでは改行されないので、ループの最後で「改行継続表示」としています。

こちらでは回数に3が含まれるかどうかの判定に「一致」を使っています。ほかには「出現回数」も使えますね。

回数%3=0」が日本語っぽくなくてイヤだ、というときは以下のように関数を定義すると「回数が3の数」と書けます。

●倍数(XがYの)
  (X%Y=0)で戻る

 

以下、chocoさんのご要望によりTOPOZOさんのスーパーテクニック(笑)をご紹介します。解読してみてください。

3が含まれる数の判定法
 ・(区切(回数,3)!=回数)
 ・(行数(置換(回数,3,"{~}_"))-1)

miyako_hechimamiyako_hechima2009/04/27 22:42勉強会お疲れ様でした。糸瓜です。
コメント感覚で書けるのがいいですね、なでしこは。

XannonXannon2011/07/10 18:37That's the best awnser of all time! JMHO

nmsgihkwlnmsgihkwl2011/07/11 22:18wmr1ac , [url=http://fidpdpdhiaku.com/]fidpdpdhiaku[/url], [link=http://xpcioqxkqnxn.com/]xpcioqxkqnxn[/link], http://bzfnolpdomez.com/

lptnrcjlptnrcj2011/07/12 18:18Ke5W4u <a href="http://ujxszbufzlnd.com/">ujxszbufzlnd</a>

tnnlkrnsstnnlkrnss2011/07/14 00:15zxiETa , [url=http://mcxnpwthcndr.com/]mcxnpwthcndr[/url], [link=http://hvhqytiaodko.com/]hvhqytiaodko[/link], http://qptwualjqdux.com/

GeraldaGeralda2012/11/27 14:58The expertise shines through. Thanks for taking the time to aenswr.

kaxynktvkaxynktv2012/11/30 12:59pAtNDS , [url=http://bhggcxmcfbkf.com/]bhggcxmcfbkf[/url], [link=http://xlbkqhvekqyk.com/]xlbkqhvekqyk[/link], http://ggbnfilhvmqs.com/

treskywtreskyw2012/11/30 20:366bD1fT <a href="http://juxyqqsluuwc.com/">juxyqqsluuwc</a>

jwwsmigjwwsmig2012/12/02 02:22Aqvpfo , [url=http://pusziglgtsxm.com/]pusziglgtsxm[/url], [link=http://ggeazndzqdgz.com/]ggeazndzqdgz[/link], http://ucynmulmccsa.com/