モジュール詳細:六角正規表現

[X]HTMLは正規表現で解析できません。 正規表現はHTMLを正常に解析するためのツールではありません。 正規表現でHTMLを解析しようと試みるごとに、穢れた子は処女鬱鬱血を啜り、ロシアのハッカーはあなたの目覚まし時計を乗っ取ります。 もしHTMLを正規表現で解析するならば、あなたは「彼ら」と、基本的な多言言吾平面ではその蜷を表しかねる方のために我々全てを人成らさ゛る役務に従事させる運命への道に出会います、彼は来ます。 HTMLの正規表現パーサーの世界を覗き見すればプログラマーの意識は一瞬にして阿鼻叫喚の世界へと誘われます、彼は来ます、害虫のような正規表現が、あなたのH T M L パーラーや了┐°└|ヶ─゙/ョ・/、そしてsOnzAiを常に侵食 て きます。

代わりに正規表現で爆弾を解除してみましたか? ― とある質問サイトの投稿

  • このモジュールには、正六面体の角を表す8つの頂点と、正六面体の辺に相当する6つの面ボタンがある。面ボタンを押すと、対応する 頂点が循環する。各頂点には便宜上、記号が付けられているが、このモジュールを解く上では何の役割も持たない。
  • 各頂点は、その頂点が最も上に来た時にディスプレーに表示される関連単語を一つ持つ。以下のルールと表1に従って4つのターゲット正規表現(ターゲット表現)を特定し、各ターゲット表現に一致する頂点の持つ単語を探す[1]
  • モジュールを解除するには、モジュールの中央の列にある頂点の単語が、上から下に順番に4つのターゲット表現に一致するように配置を合わせ、SUBMITボタンを押す。つまり、最も上にある単語は最初のターゲット表現に一致し、その下の単語は二番目のターゲット表現に一致し、その下の単語三番目のターゲット表現に一致し、最も下にある単語は、四番目のターゲット表現に一致しなければいけない。左右2つずつある頂点の単語の配置は気にしなくてよい。
  • 複数の単語が正規表現に一致する場合があるが、中央の列の各単語が対応するターゲット表現に一致するような単語の配置は一通りしか無いことに注意する。

[1] 正規表現に一致するには、単語全体が一致していなければいけない。ページ3で正規表現の一致の完全メカニズムを説明している。正規表現についてご存知の場合、すべての正規表現は先頭に暗黙の^、末尾に暗黙の$を持つと考えたほうがよい。

ターゲット正規表現

まず、最も上の頂点が移動した際に表示される開始段開始列を特定する。開始段と開始列はそれぞれ「R」「C」で記されている。

次に、段のオフセットを解除可能な(特殊モジュールを除く)モジュール数を11で割った余りに1を足した数として計算する。 これを開始段の数字に足し、12で割った余りが最終段となる。 同様に列のオフセットをバッテリーとインジケーターの数を5で割った余りに1を足した数として計算する。 これを開始列の数字に足し、6で割った余りが最終列となる。

最後に、表1を使用して開始段および最終段、開始列および最終列にある4つのターゲット表現を探す。ターゲット表現は北西から時計回り(北西、北東、南東、南西)の順番で取得する。

0 1 2 3 4 5
0 .*O.*H.* .... .*[^O]N.* A.* .*O.*E.* .*(ER|RE).*
1 .*R[^E].* [^ASTERISK]+ .*[AEIOU].[AEIOU].* .*(OW|WO).* .*M[^O].* .*W(HA|HI|A).*
2 .*O .*OT.* ....? .*[OU][MN].* .*E .*F.*T.*
3 ..... .*[^O]T.* D.* .*I.*T.* .*(FI|IF).* .*F[^O].*
4 [^BRACKET]+ .*[^AEIOU][^AEIOU].* .*(NO|ON).* .*U[^G].* .*OL?[DT].* .*[AEIOU][AEIOU].*
5 .*HT.* .....? .*[BT][OE].* .*H .*OW.* ......
6 .*[^H]T.* H.* .*B.*T.* .. .*B[^O].* [^REFUTE]+
7 .*[^AEIOU][^AEIOU]. .*(OT|TO).* .*O[^W].* [^STRAIGHT]+ .*[AEIOU].*[AEIOU].* .*TH.*
8 (..)?. .*L[AEIOU].* .*P .*ON.* ..? .*[^E]A.*
9 W.* .*F.*R.* ... .*I[^N].* [^ELIMINATE]+ [^AEIOU][^AEIOU].*
10 .*(HT|TH).* .*E[^A].* [^QUESTION]+ .*[AEIOU] .*DI.* .*O[^T].*
11 .[AEIOU]. .*Y .*OR.* ...? .*[^S]T.* U.*
表1 正規表現
いくつかは、セル内で複数行にまたがっている。
例えば、4段目の1列目の正規表現は .*[^AEIOU][^AEIOU].*である。

正規表現の一致

各部分の表現が、その単語の表現と空白無しで一致している場合、正規表現は一致する。 各正規表現の一部分は、基本要素と追加の数量詞で構成されている。

基本要素

  • 正規表現内の英字一文字は、単語内のその英字と一致する。 例:AはMATCHではAの部分と一致している。EはSEEではEの部分と、一致している。
  • ピリオドは、単語内の任意の文字と一致する。 例:.はMATCHではM、A、T、C、Hのいずれかの部分と一致する。
  • 四角の括弧で囲まれた英字は、その中のいずれかの英字と一致する。 例:[CAT]はMATCHではA、T、Cの部分が一致する。
  • 四角の括弧内にある脱字記号(キャレット)と英字は、その英字を除く任意の文字と一致する。 例:[^CAT]はMATCHではMとHが一致する。
  • 丸の括弧で囲まれた縦線で分割しているリストは、リスト内のそれぞれの文字列と一致する。 例:(H|AT)はMATCHではHとATの部分が一致する。

数量詞

数量詞のない基本要素は、単語内にちょうど一つある場合一致する。数量詞がある場合、基本要素はその数量詞によって、単語の中に0または複数回連続する場合一致する。
  • 疑問符は0または1個の基本要素と一致する。 例:CH?はCATCHでは最初のCやCHの部分と一致する。
  • アスタリスクは0回以上の基本要素と一致する。 例:A[CTM]*はMATCHではA、AT、ATCの部分と一致する。
  • プラスは1回以上の基本要素と一致する。 例:A[CTM]+はMATCHではAT、ATCの部分と一致する。

追加の例

  • A[ES]+はASSESSと一致する。 SEEは一致しない。なぜなら、A は単語の中に含まれておらず、SEEの中にもAは含まれていないからである。
  • (SUB|CON)TRACTS? は SUBTRACT、CONTRACT、SUBTRACTS、CONTRACTSと一致する。 TRACTは一致しない。なぜなら、(SUB|CON) は単語の中に含まれていないからである。
  • I.*[^AK] はIから始まりAまたはK以外で終わる任意の単語、例えばITやIMPLYやICONICと一致する。ただし、INKやIDEAは一致しない。また、Iも一致しない。なぜなら、 [^AK]は単語の中に含まれていないからである。