---
id: 5900f40d1000cf542c50ff20
title: '問題 161: トリオミノ'
challengeType: 1
forumTopicId: 301795
dashedName: problem-161-triominoes
---

# --description--

トリオミノは、3 つの正方形を互いの辺で連結したものです。

下図のような 2 つの基本形があります。

<img class="img-responsive center-block" alt="トリオミノの 2 つの基本形" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-1.gif" style="background-color: white; padding: 10px;" />

考えられるすべての方向が考慮された場合、次の 6 つがあります。

<img class="img-responsive center-block" alt="方向を考慮したトリオミノの形" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-2.gif" style="background-color: white; padding: 10px;" />

n x m が 3 で割り切れるとき、その n x m 格子は必ずトリオミノで埋めることができます。 反転や回転によって得られる埋め方を異なる埋め方とみなす場合、2 x 9 の格子を埋める方法は 41 通りあります。

<img class="img-responsive center-block" alt="2 x 9 の格子をトリオミノで埋める 41 通りの方法を示すアニメーション" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-3.gif" style="background-color: white; padding: 10px;" />

トリオミノで 9 x 12 の格子を埋める方法は何通りありますか。

# --hints--

`triominoes()` は `20574308184277972` を返す必要があります。

```js
assert.strictEqual(triominoes(), 20574308184277972);
```

# --seed--

## --seed-contents--

```js
function triominoes() {

  return true;
}

triominoes();
```

# --solutions--

```js
// solution required
```
