名古屋で数学するプログラマ(仮)

@antimon2 が趣味兼一部本職の数学で何かするときのブログ。

平方三角数コードゴルフ 解答募集!

まずは報告。

『CodeIQの問題・パズルを考えよう!』 にて、平成変換(提案その1)日付型のユニットテスト(提案その4) の 2 作が採用になりましたo(≧▽≦)o

『日付型のユニットテスト』の方は、審査員のお一方、和田卓人氏(@)の「TDDの理解度を知るには、どんな問題が良いでしょう。」という言葉に「そう言えば私もちゃんと理解してな…」と思ってぴーんときた問題(というより『相談』)。だから選ばれて晴れて問題化されることになって、本当に嬉しいです。
でも正直、『平成変換』の方は、個人的に 20 年近く*1ずっと気になってた問題であり、個人的な思い入れは強いですけれど、それだけであり自分の中で Hot だっただけであり、まさか採用されるとは思ってなかったので、本当に正直にびっくりです。どうせ不採用だから結果発表されたらこのブログで解答募集しちゃおうかなーとか考えて準備し始めてたし。まーでもこれで『平成変換』もついに世に広まるかと思うと胸熱ですけれどね(^-^)

何はともあれ、葉っぱ の到着が待ち遠しいです(^-^)

さて、前置き長くなりました。本題。
不採用となった残り 2 作のうち、『平方三角数』。
平成変換の代わりに、こっちの解答を募集します(^-^)

まずは、問題を加筆修正して再掲します。

2013/11/16 追記】
寄せられた解答を別記事で公開しました。→
平方三角数コードゴルフ その後 - 名古屋で数学するプログラマ(仮)


問題

コードゴルフ】平方三角数


■平方三角数とは?
三角数とは、n×(n+1)/2 で表すことの出来る整数(>0)のこと。
1 から n までの整数の総和(\sum_{k=1}^n k)のことですね。
下図のように、綺麗な三角形の形に並べることが出来るので「三角数」と呼ばれます。

                   ●
             ●    ●●
        ●   ●●   ●●●
    ●  ●●  ●●●  ●●●●
 ● ●● ●●● ●●●● ●●●●● …
  1   3    6    10     15 …

平方数(別名:四角数)は、n2 で表すことの出来る整数(>0)のこと。
三角数と同様、綺麗な四角形(正方形)の形に並べることが出来ます。

               ●●●●●
          ●●●● ●●●●●
      ●●● ●●●● ●●●●●
   ●● ●●● ●●●● ●●●●●
 ● ●● ●●● ●●●● ●●●●● …
  1   4    9    16     25 …

そして平方三角数とは、平方数でありかつ三角数でもある数のことです。
一番小さい平方三角数は 1 、2 番目は 36(= 8×(8+1)/2 = 62)、3 番目は 1225、… となります。


■問題
標準入力から整数 N(>0)を与えて、N 番目の平方三角数を標準出力に出力するプログラムを書いてください。


■注意事項
 ・N の最大値は 99 としておきます。1 から 99 までのいずれかの整数を与えて、正しい平方三角数が出力されれば OK です。
 ・言語は不問です。解答に、言語名・byte 数もお書き添えください。
  例:Ruby, 49 bytes
 ・「コードゴルフ」なのでできる限り短い(byte 数が少ない)のが望ましいですが、特に表彰とか商品とか
  ありませんので、Twitterでつぶやける程度に短かったらどんどん投稿しちゃってください(^-^)
  純粋に楽しんでいただければ、と思います(^-^)


■解答方法
このブログのこの記事に、コメント、はてなブックマーク、等の方法で投稿してください。
もしくは、Twitterでのつぶやき投稿も可です。その際には、 @ への mention(つぶやき本文中に @antimon2 と書けばOK)と、できればこの記事への URL を貼ってください*2

言語不問としたのは、純粋にいろんな言語の実装を見てみたい、という個人的な欲求からです。

ちなみに私の今のところの記録は、Ruby(2.0.0/1.9.x/1.8.7 いずれでも動作) で、40 bytes 未満、とだけ申しておきます。

それでは、Let's enjoy 平方三角数 !

*1:元ネタが『平成 3 年』ですし。

*2:つまり、それだけ書き足してもつぶやけるくらい短い解答も言語によっては存在する、ということだったりもします。