携帯電話のキーボード入力
この質問はしばらく前に尋ねられましたが、仕様が悪いため終了しました。だから、私はそれをより良い仕様でやり直しています。この質問は関連していますが、反対の方向に進みます。
T9が登場する前に、テキストメッセージに文字を入力するには、数字キーの1つを何度か押して、目的の文字を取得する必要がありました。参考のために、標準のマッピングを次に示します。
+-------+-------+-------+
| 1 | 2 | 3 |
| .?!1 | ABC2 | DEF3 |
+-------+-------+-------+
| 4 | 5 | 6 |
| GHI4 | JKL5 | MNO6 |
+-------+-------+-------+
| 7 | 8 | 9 |
| PQRS7 | TUV8 | WXYZ9 |
+-------+-------+-------+
| * | 0 | # |
| ← |SPACE 0| → |
+-------+-------+-------+
*
バックスペース、0
スペース(' '
)または数字0
で#
、現在の文字を確認します。簡単にするために、すべての文字は大文字です。
あなたは、そのキーのための可能な文字によってキーを複数回、選択した文字のサイクルを押すと:2 -> A
、22 -> B
、222 -> C
、2222 -> 2
、22222 -> A
、など。*
オプションが1つしかないため、繰り返し押すと複数のバックスペースが入力されることに注意してください。#
連続して複数回押しても効果はありません。末尾#
は不要です。
さらに、キーを押した直後に別のキーを押すと、前のキー押下が自動的に確認されます。したがって、223
機能的にはと同じです22#3
。
あなたの課題は、一連のキー押下を携帯電話が表示する対応する文字列に変換することです。
例
8#99999#055#33#999#22#666#2#777#3#1 -> T9 KEYBOARD
4433555#55566609666666677755533*3111 -> HELLO WORLD!
7##222#222**7#222#4 -> PPCG
00#0#00 -> 0 0
ルール
- これはcode-golfなので、最短の正しいソリューション(バイト単位)が勝ちます
- 勝利の答えは一週間で選ばれます
- 標準的な抜け穴は禁止されています
- あなたの答えは、完全なプログラム、名前付き関数、または匿名関数の形式であり、標準的な方法のいずれかで入力を取得し、出力を生成します
リーダーボード
この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からリーダーボードを生成します。
回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。
## Language Name, N bytes
N
提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:
## Ruby, <s>104</s> <s>101</s> 96 bytes
ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。
## Perl, 43 + 2 (-p flag) = 45 bytes
言語名をリンクにして、スニペットに表示することもできます。
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
2 -> A
、22 -> B
...、2222 -> A
....)で番号を生成することはできません。