前書き
開始文字から終了文字まで直線を描くか、繰り返される文字をスキップすることで、特定の単語を生成できることに気付きました。
たとえばballoon、次の文字をスワイピングして単語を入力できます。
b> a> l> o> n。
チャレンジ
Shortest Swype Pathを定義しましょう、またはSSP、文字列の入力に必要な識別可能な線分セグメントの最小数として。線分は、2つ以上の文字の間の連続した直線です。方向を変更すると新しい線分セグメントが開始されますが、一部の単語は1本の直線のみを描くことでスイープされる場合があります。
次のシンプルなQWERTYキーボードレイアウトを使用します。
q w e r t y u i o p
a s d f g h j k l
z x c v b n m
上記の例では、次のシーケンスで詳述されているように、単語balloonにSSPof があり4ます。
1) Start at `b` (line segments = 0)
2) slide to `a` (line segments = 1)
3) slide to `l` (line segments = 2)
4) slide to `o` (line segments = 3)
5) slide to `n` (line segments = 4)
この単語をSwypingするときに方向を変更する必要がないため、文字列qwertyはSSP= 1です。
入力
a-zvia STDIN、関数引数、またはコマンドラインを含む単一の単語文字列。
出力
STDOUT、return、または言語に最も近い代替手段を使用してn、文字列のを表す番号を出力しますSSP。
oututでオプションの1つの末尾の改行。標準の抜け穴は許可されません。バイト単位の最短提出が勝ちです。
ノート
- 方向を変更すると、新しい線分が始まります。
- 繰り返される文字は1回だけカウント
bookkeeperされます(例:として処理する必要がありますbokeper)。 - 通常、Swpyeは、隣接する文字を調べて最良の推測を入力することにより、欠落した文字を修正します。この課題では、自然言語の増強、予測テキストまたはエラー修正がないと仮定します。
- 大文字の
A-Z入力は、対応する小文字の入力と同様に扱われます。 0-9入力内の数字を無視します。- 対角線経路が許可されている- 、カバーレターその直線である
o、k、n、例えば、としてカウント1セグメント。この規則は、任意の斜めの斜面に適用されます(例:文字c、h、iラインです)。
例
Input Output
---------------------
a 0
aa 0
aaaaaa 0
aaaaaabc 2
in 1
int 2
java 3
qwerty 1
chicago 5
balloon 4
BALLOON 4
typewriter 5
bookkeeper 6
stackexchange 11
2hello7 3
2HELLO7 3