中学校1年のときに習ったように,
正多面体(面がただ1種類の正多角形だけからできている凸多面体)には,つぎの5種類があります.
| 名称 | 学名 | 面の形 | 面の数 |
| 正4面体 | Tetrahedron | 正3角形 | 4 |
| 立方体 | Cube | 正方形 | 6 |
| 正8面体 | Octahedron | 正3角形 | 8 |
| 正12面体 | Dodecahedron | 正5角形 | 12 |
| 正20面体 | Icosahedron | 正3角形 | 20 |
では,2種類以上の正多角形の面を用いて,新しい凸多面体を作ることができるでしょうか?
つぎの2つの条件を満たす凸多面体を,アルキメデス多面体と呼びます.
はじめに,アルキメデス多面体を可能にするような,
ひとつ頂点のまわりの正多角形の順列をすべて求めてみます.
ひとつ頂点のまわりに正 p1 角形,正 p2 角形,・・・,正 pr 角形が
並んでいるとしましょう.
これらの正多角形の内角ひとつずつの和は, 360 度未満でなければなりません. もしそうでなければ,それらの正多角形から立体化したとき,面が凸凹になるからです. そこで
この等式を満たすような,すべての p1, p2, ・・・,pr の可能性 を求めましょう.
その結果,次の組だけが可能であることがわかります.
| (p1, ..., pr) | 名称 | 学名 | 図 |
| (3, 6, 6) | 角切り4面体 | Truncated Tetrahedron | |
| (3, 8, 8) | 角切り6面体 | Truncated Hexahedron | |
| (4, 6, 6) | 角切り8面体 | Truncated Octahedron | |
| (3, 10, 10) | 角切り12面体 | Truncated Dodecahedron | |
| (5, 6, 6) | 角切り20面体 | Truncated Icosahedron | |
| (4, 6, 8) | 大菱形立方8面体 | Great Rhombi Cuboctahedron | |
| (4, 6, 10) | 大菱形20-12面体 | Great Rhombi Icosidodecahedron | |
| (3, 4, 3, 4) | 立方8面体 | Cuboctahedron | |
| (3, 5, 3, 5) | 20-12面体 | Icosidodecahedron | |
| (3, 4, 4, 4) | 小菱形立方8面体 | Small Rhombi Cuboctahedron/td> | |
| (3, 4, 5, 4) | 小菱形20-12面体 | Small Rhomb Icosidodecahedron | |
| (3, 3, 3, 3, 4) | 歪立方体 | Snub Cube | |
| (3, 3, 3, 3, 5) | 歪12面体 | Snub Dedecahedron |
(defun search-local ()
(let ((plist nil) (x0) (q))
(dolist (r '(3 4 5 6))
(setq x0 (1- (/ r 2)))
(setq q (search-local-aux r x0 3))
(setq plist (append plist q))
)
plist
)
)
(defun search-local-aux2 (r x pmin)
(let ((plist nil) (p1) (pmax) (x1) (qlist))
(setq pmax (truncate r x))
(if (< pmax pmin) (return-from search-local-aux nil))
(if (and (= r 1) (= (* pmax x) 1))
(return-from search-local-aux (list (list pmax))))
(setq p1 pmin)
(loop
(if (> p1 pmax) (return))
(setq x1 (- x (/ 1 p1)))
(if (> x1 0)
(progn
(setq qlist (search-local-aux (1- r) x1 p1))
(dolist (q qlist)
(setq plist (cons (cons p1 q) plist))
)
)
)
(incf p1)
)
(reverse plist)
)
)