マークマイメールチャレンジでの支援のおかげで、PPCG-Postは生成されたバーコードですべての小包に正常にスタンプしました!
次に、それらをデコードします。
このチャレンジでは、Mark My Mailチャレンジから生成されたバーコードを指定して、プログラムがそれをデコードし、エンコードされた整数を返します。
しかし、気をつけて!バーコードが上下逆になっている可能性があります...
4ステートバーコード
エンコードの課題を逃した場合は、どのようなバーコードについて話しているのかを知る必要があります。4状態バーコードは、4つの可能な状態を持つバーの行で、それぞれが4を超える整数を表します。
            |       |
Bar:    |   |   |   |
                |   |
Digit:  0   1   2   3
ASCIIでレンダリングされたバーコードは3行のテキストを取り、パイプ(|)文字を使用してバーの一部を表し、スペース()を使用して空のセクションを表します。各バーの間に1つのスペースがあります。バーコードの例は次のようになります。
| | | | | | | | | |
| | | | | | | | | | | | | | | | |
    | | | | | | | |
バーコードをエンコードした整数に戻すには、各バーを対応する4進数にマッピングし、それらを連結して、10進数に変換します。
各バーコードは上下を逆にすると異なるバーコードを表すため、オリエンテーションを計算できるように開始/停止シーケンスを実装します。この課題のために、Australia Postが指定する開始/停止シーケンスを使用します。各バーコードは1 0シーケンスで始まり、シーケンスで終わります。
チャレンジ
あなたの仕事は、ASCII 4状態バーコードを与えられ、それを解析し、それがエンコードする整数を返すことです-基本的にはMark My Mailの逆です。
しかし、物事を刺激するために、キャッチがあります - バーコードは逆さまに与えられるかもしれません。現実世界と同様に、バーコードリーダー(プログラム)に任せて、開始/停止シーケンスを使用して正しい方向を決定します。
例:
次のバーコードがある場合:
| | | | | | | | | | | | | | | | | | | |
数字の最初と最後のペアがあるか0, 2ないかをはっきりと見ることができ1, 0ます。これは、バーコードが上下逆になっていることを意味します。したがって、正しい向きを実現するには、バーコードを180度回転する必要があります(各バーを反転するだけではありません)。
| | | | |  
| | | | | | | | | | |
    | | | |    
これで、デコードを開始できます。データをエンコードしないため、開始/停止シーケンスを無視して、各バーを対応するベース4桁にマッピングします。
| | | | |  
| | | | | | | | | | |
    | | | |    
--2 1 0 3 0 2 3--
これを基数4の整数2103023に連結9419し、最終結果のために10進表現に変換します。
ルール
- 入力は常に、前述の開始/停止シーケンスを使用して、上記のようにASCIIでレンダリングされた有効な4ステートバーコードになります。
- ゴルフに適した形式であれば、末尾のスペース、またはストリップされた行、および末尾の改行を要求できます。
- 正しい向きである場合とそうでない場合があります-プログラムは、開始/停止シーケンスを使用して、逆さまに読み取るかどうかを判断する必要があります。
- 基数4整数の先行ゼロ桁はエンコードしません。
 
- 入力は、行のリスト、または改行を含む文字列として取得できます。
- 出力は、バーコードによってエンコードされたデータを表す、言語の標準整数ベースの整数でなければなりません。
- 郵便切手は小さく、それらに非常に小さなコードを収めることができるため、コードはできるだけ短くする必要があります。これはコードゴルフです -最短のプログラム(バイト単位)が勝ちます!
テストケース
| | | | | | | | | | | | | |
= 4096(反転)
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
= 7313145(反転)
| | | | | | | | | | | | | | | | | | | |
= 9419(反転)
| | | | | |   
| | | | | | | | |
    | | | |     
= 990(反転しない)
| | | | |   
| | | | | | | | | | |
    | | |       
= 12345(反転しない)
[String]、[{#Char}]、[{Char}]、[[Char]]?、与えられたものStringと同等である{#Char}