ヘックス数とスターナンバー（六芒星数）


こんにちは｜こんばんは。カエルのアイコンで活動しております @kyamaz :frog: です。

## はじめに
本稿のタイトルにあるヘックスですが、ヘキサ（Hexa）がギリシャ語で「6」を表し、ヘキサゴン（hexagon）は英語やギリシャ語で「六角形」を表すのと同様に、ヘックス数は「6」にちなんだ名前です。ヘックスといえば、六角形が並んだ菱形状の盤を使って、2人で対戦するボードゲームだったりもします[^hex_game]。



## ヘックス数
ヘックス数は「中心つき六角数」の別称です。単なる六角数とは別になり「中心つき（centered）」というのが必要です。次のせきゅーんさんのエントリにあるとおり、一般項 $H_n = 3n^2−3n+1$ で表されます。

https://integers.hatenablog.com/entry/2016/01/06/043730

Haskellでのプログラムも気が抜けるほど簡単ではありますが、以下に記します。（オンライン整数列大辞典では[A003215](https://oeis.org/A003215)にリストがあります。）

```haskell: ヘックス数を出力する
ghci> hn = [3*n*(n-1)+1 | n<-[1..]]
ghci> take 60 hn
[1,7,19,37,61,91,127,169,217,271,
331,397,469,547,631,721,817,919,1027,1141,
1261,1387,1519,1657,1801,1951,2107,2269,2437,2611,
2791,2977,3169,3367,3571,3781,3997,4219,4447,4681,
4921,5167,5419,5677,5941,6211,6487,6769,7057,7351,
7651,7957,8269,8587,8911,9241,9577,9919,10267,10621]
```

## 六芒星数
[六芒星数](https://ja.wikipedia.org/wiki/%E5%85%AD%E8%8A%92%E6%98%9F%E6%95%B0)とは、六芒星状に点を並べた時の点の総数を表します。英語ではスターナンバー（star number）といい、数式では $6n(n - 1) + 1$ で表されます。
一般項はヘックス数に一辺が$n-1$の三角形を6つ付ける形になることから、$S_n = H_n + 6 \times \frac{1}{2} n(n-1) $ から得られます。

こちらも、簡単なHaskellプログラムを以下に記します。（オンライン整数列大辞典では[A003154](https://oeis.org/A003154)にリストがあります。）

```haskell: 六芒星数を出力する
ghci> sn = [6*n*(n-1)+1 | n<-[1..]]
ghci> take 50 sn
[1,13,37,73,121,181,253,337,433,541,
661,793,937,1093,1261,1441,1633,1837,2053,2281,
2521,2773,3037,3313,3601,3901,4213,4537,4873,5221,
5581,5953,6337,6733,7141,7561,7993,8437,8893,9361,
9841,10333,10837,11353,11881,12421,12973,13537,14113,14701]
```

## 六角数
ヘックス数は”中心つき”という要請がありましたが、六角数はヘックス数と同様に各辺に$n$個の六角形を考えて、その2辺を共有して残りの4辺を新たに$n+1$個にする点の増やし方をするときの数列をいいます。[Wikipediaの六角数](https://ja.wikipedia.org/wiki/%E5%85%AD%E8%A7%92%E6%95%B0) に点の増やし方が説明されております。参考にしてみてください。
この六角数の一般項は、$h_n = n(2n-1)$ です。漸化式は $h_{n+1} = h_n + 4n + 1$ です。漸化式が示している意味は、4で割ると1余る整数を1から小さい順に加えた数ということと同義となります。

上の２つと同様に、簡単ですがHaskellで出力してみましょう。（オンライン整数列大辞典では[A000384](https://oeis.org/A000384)にリストがあります。）

```haskell: 六角数を出力する
ghci> xn = [n*(2*n-1) | n<-[1..]]
ghci> take 50 xn
[1,6,15,28,45,66,91,120,153,190,
231,276,325,378,435,496,561,630,703,780,
861,946,1035,1128,1225,1326,1431,1540,1653,1770,
1891,2016,2145,2278,2415,2556,2701,2850,3003,3160,
3321,3486,3655,3828,4005,4186,4371,4560,4753,4950]
```

## 中心つき多角数と多角数
本稿では、中心つき六角数（ヘックス数）と六角数について一般項を記載しましたが、三角数、四角数、五角数、・・・が同じく定義でき、その一般項を天下り的に紹介します。

### 中心つき多角数の一般項
$1$ 番目の中心つき $k$ 角数を $1$ とするとき、$n$ 番目の中心つき $k$ 角数 $C_{k,n}$ は以下の式で表されます。

$\displaystyle C_{k,n}={\dfrac {kn(n-1)}{2}}+1$

### 多角数の一般項
$0$ 番目の多角数は全て形式的に $0$ とみなし、$n$ 番目の $k$ 角数 $P_{k,n}$ は以下の式で表されます。

$\displaystyle P_{k,n}= {\dfrac {(k-2)n^2 - (k-4)n}{2}}$

```haskell: 中心つき多角数の一般項 c(k,n) と多角数の一般項 p(k,n)
ghci> c k n = (k*n*(n-1) + 2) `div` 2
ghci> p k n = ((k-2)*n - (k-4)*n `div` 2
```

試しに、上記のヘックス数と六角数で検算してみると以下のとおり。

```haskell: k=6 のときの検算
ghci> take 10 $ (c 6) <$> [1..]
[1,7,19,37,61,91,127,169,217,271]
ghci> take 10 $ (p 6) <$> [1..]
[1,6,15,28,45,66,91,120,153,190]
```



## おわりに
本稿は六角形をもとにしたタイトルをつけましたが、五角数などを別にして闇雲にエントリを稼ぐつもりはなく、多角形についても紹介しました。なお、丸善出版より『[五角形と五芒星](https://www.maruzen-publishing.co.jp/item/b304910.html)』という書籍が出版されており、「５」にゆかりのある内容はこちらも参考にしてみてください。

ご一読いただきまして有り難うございます。
（●）（●） Happy Hacking!
/""　＿＿""＼


[^hex_game]: [ボードゲーム『ヘックス』](https://ja.wikipedia.org/wiki/%E3%83%98%E3%83%83%E3%82%AF%E3%82%B9_(%E3%83%9C%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0))ゲーム理論で有名でナッシュ均衡にも名を残すナッシュのエピソードもWikipediaには紹介されています。