ゲームのアーケード版では、パックマンはパックドットを食べます。しかし、この課題では、彼は文字列の英数字と句読点に飢えています。
あなたの仕事は、パックマンに文字列を送り、食べられるかどうかを評価し、パックマンの位置を含む文字列を返す関数を作成することです。
パックマン(<
)はキャラクターを左から右に食べ、行くたびに各キャラクターにアンダースコアまたはスペースを残し、彼の目標は最初の位置-1から最後の位置+1に到達することです:
1. <Pac
2. _<ac
3. __<c
4. ___<
ただし、パックマンの天敵であるゴーストは、「GHOST」という単語の文字の1つ(大文字と小文字を区別しない)に遭遇すると、彼を停止します。関数は、Pac-Manがghost
文字を検出すると、その位置を含む文字列を返す必要があります。
1. <No!
2. _<o!
幽霊を打ち負かすことができるのはパワーペレットだけです。パックマンが幽霊に来る前に「PELLET」(大文字と小文字を区別しない)という単語の文字に到達すると、幽霊を食べて動き続け、そのペレットは使い果たされます。パワーペレットは積み重ねることができます(つまり、ppgg
両方のゴーストで食べられます)。Tのそれは(のような、任意の他の文字として扱われ、無視できるような文字は、ゴーストとペレットの両方として存在しますa
)。
1. <Pop
2. _<op
3. __<p
4. ___<
さらに明確にするために、「パックマンがここで負ける」という文字列では、次の操作が発生します。
P <P, +1 Pellet (1 pellet)
a <a
c <c
- <-
M <M
a <a
n <n
<[space]
l <l, +1 Pellet (2 pellets)
o <o, -1 Pellet (1 pellet)
s <s, -1 Pellet (0 pellets)
e <e, +1 Pellet (1 pellet)
s <s, -1 Pellet (0 pellets)
<[space]
h <h, ghost wins, returns
e
r
e
例
Input: Pacman wins!
Output: ____________<
Input: Pacman loses wah-wah :(
Output: _______________<h-wah :(
Input: PELLET PELLET GHOST
Output: ___________________<
Input: Hello World!
Output: <Hello World!
Input: <_!@12<_<_<
Output: ___________<
これはコードゴルフです。バイト単位の最低スコアが勝ちです。
<
シンボルを見るたびに黒い唇で偽装された灰色のパックマンを見ます