二面体グループは、正方形の対称グループです。つまり、回転と反射を介して正方形をそれ自体に変換する動きです。8つの要素で構成されます:0、90、180、および270度の回転、水平、垂直、および2つの対角軸にわたる反射。
画像はすべて、Larry Riddleによるこの素敵なページからのものです。
この課題は、これらの動きを構成することです。2つの動きが与えられると、それらを次々に実行するのと同じ動きを出力します。たとえば、移動7の後に移動4を行うことは、移動5を行うことと同じです。
移動を4に、次に移動7に順序を切り替えると、代わりに移動6が生成されることに注意してください。
結果は以下の表のとおりです。これは、グループ Cayleyテーブルです。だから、例えば、入力出力生成しなければならない。
チャレンジ
あなたの目標はこの操作を可能な限り少ないバイトで実装することですが、コードに加えて、1から8の動きを表すラベルも選択します。ラベルは0から255までの8つの異なる番号、または8でなければなりませんコードポイントが表す-バイト文字。
コードには、選択した8つのラベルのうち2つが与えられ、二面体グループ構成に対応するラベルを出力する必要があります。
例
1から8の動きに対してそれぞれ文字C、O、M、P、U、T、E、Rを選択したとします。次に、コードでこのテーブルを実装する必要があります。
入力EとPを指定すると、Uを出力する必要があります。入力は常に文字C、O、M、P、U、T、E、Rの2つであり、出力は常にこれらの文字の1つです。
コピー用のテキストテーブル
1 2 3 4 5 6 7 8
2 3 4 1 8 7 5 6
3 4 1 2 6 5 8 7
4 1 2 3 7 8 6 5
5 7 6 8 1 3 2 4
6 8 5 7 3 1 4 2
7 6 8 5 4 2 1 3
8 5 7 6 2 4 3 1
Your choice of labels doesn't count against your code length.
念入りに?現状では、マトリックスをコードにハードコーディングし、スコアにカウントされないと主張しています。