でPPCGのチャットルーム十九バイトキャレット使用して、^
(またはニンジンは)あなたがちょうどあなた以上前に作られたコメントの一つと一致していることを示すの方法です。
キャレットメッセージはN ^
文字(Nは正の整数)のみで構成され、N 番目の前のメッセージとの一致を意味します。したがって、1つ^
は直前のメッセージ^^
との合意、2行目まで^^^
のメッセージとの合意、3行目までのメッセージとの合意などを意味します。
さらに、キャレットメッセージXが別のキャレットメッセージYに同意する(別名)場合、XはYが同意するものに同意すると言われます。これには複数の層があり、最終的に、すべてのキャレットメッセージは1つの非キャレットメッセージとの一致を示しています。
たとえば、チャットの記録が次のようになっている場合:(1行に1メッセージ)
I like dogs [line 1]
I like cats [line 2]
^ [line 3]
^^^ [line 4]
^^ [line 5]
I like turtles [line 6]
^ [line 7]
^^^ [line 8]
^^ [line 9]
その場合、行1、2、および6は非キャレットメッセージであり、他のすべては非キャレットメッセージを指すキャレットメッセージです。
- 3行目は2行目を直接指しています。
- 行4は、行1を直接指しています。
- 行5は行3を指し、行3は行2を指します。
- 行7は行6を指しています。
- 行8は行5を指し、行5は行3を指し、行3は行2を指します。
- 行9は行6を指す行7を指します。
したがって、キャレット以外のメッセージを書いたユーザーを含めて(そして、人々が自分のメッセージを気にしないと仮定して)、次のように結論付けることができます。
- 2人が同意します
I like dogs
(1行目と4行目) - 4人が同意します
I like cats
(2、3、5、8行目) - 3人が同意します
I like turtles
(6、7、9行目)
チャレンジ
上記の例のように、すべての行がチャットメッセージを表し、古いメッセージが最初に来る複数行の文字列を受け取るプログラムまたは関数を記述します。
各行には少なくとも1つの文字があり、少なくとも1つの行があります。すべてのメッセージは、^
' のみで構成されるキャレットメッセージ、または文字とスペース([ a-zA-Z]+
正規表現)で構成される非キャレットメッセージのいずれかです。
キャレット以外のすべてのメッセージについて、任意の順序で、メッセージテキストを含む明確な形式で、それに同意する人数を出力します。たとえば、
2 - I like dogs
4 - I like cats
3 - I like turtles
または
I like cats (4)
I like dogs (2)
I like turtles (3)
または
{"I like cats" : 4, "I like turtles" : 3, "I like dogs" : 2}
あなたはそれを仮定することができます:
- 人々は常に自分のメッセージに同意し、自分自身をキャレットにしない。
- 同一の2つの非キャレットメッセージはありません。
- キャレットメッセージは、最初のメッセージの前のものを指しません。
- 行には、先頭または末尾のスペースは含まれません。
バイト単位の最短コードが優先されます。
テストケース
bread is bread
1 - bread is bread
---
animals are fuzzy
^
^
^
^^^
^^
^^^^^^
7 - animals are fuzzy
---
pie
^
^^
pi
^
^^
^^^^
^
^^^^^
^^^^^
^^^
^^^^
^^
^
^^^^^^^^^
9 - pie
6 - pi
---
a
b
c
^
^
^
1 - a
1 - b
4 - c
---
a
b
c
^
^^
^^^
1 - a
1 - b
4 - c
---
a
b
c
^^^
^^^^
^^^^^
4 - a
1 - b
1 - c
---
W
^
^^
X
^^^
^^^^
Y
^^^^^
^^^^^^
Z
^^^^^^^
^^^^^^^^
1 - Y
3 - X
1 - Z
7 - W
---
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
^
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
2 - ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
1 - ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
---
I like dogs
I like cats
^
^^^
^^
I like turtles
^
^^^
^^
2 - I like dogs
4 - I like cats
3 - I like turtles