У чаті PPCG Дев'ятнадцятий байт , використовуючи догляд ^(або морква ) - це спосіб засвідчити, що ви згодні з одним із раніше зроблених коментарів трохи вище вашого.
Повідомлення про карету складається виключно з N ^символів (де N - додатне ціле число), і це означає узгодження з N-м попереднім повідомленням. Таким чином, одиничне ^означає узгодження з повідомленням, що знаходиться попередньо, ^^означає узгодження з повідомленням два рядки вгору, ^^^означає узгодження з повідомленням три рядки вгору і так далі.
Крім того, коли повідомлення каретки X узгоджується (він же вказує на) інше повідомлення каретки Y, тоді, як кажуть, X узгоджується з тим, з чим узгоджується Y. Це може бути кілька шарів, і, врешті-решт, усі повідомлення про карети вказують на згоду з одним повідомленням, яке не стосується карети.
Наприклад, якщо стенограма чату виглядає так: (одне повідомлення в рядку)
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, який вказує на рядок 2.
- Рядок 7 вказує на рядок 6.
- Рядок 8 вказує на рядок 5, який вказує на рядок 3, який вказує на рядок 2.
- Рядок 9 вказує на рядок 7, який вказує на рядок 6.
Таким чином, включаючи користувачів, які написали повідомлення про некоректне (і припускаючи, що люди не дбають про своє повідомлення), ми можемо зробити висновок, що:
- 2 людини згодні
I like dogs(рядки 1 і 4.) - 4 людини згодні
I like cats(рядки 2, 3, 5 і 8.) - 3 людини згодні
I like turtles(рядки 6, 7 та 9).
Виклик
Напишіть програму або функцію, яка містить рядок багаторядкових, подібний до прикладу, наведений вище, де кожен рядок являє собою повідомлення в чаті, причому попередні повідомлення стають першими.
Кожен рядок матиме принаймні один символ, а також буде принаймні один рядок. Усі повідомлення будуть або повідомленнями про каретки, що складаються виключно з ^'s, або не некаретними повідомленнями, що складаються з літер та пробілів ( [ 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}
Можна припустити, що:
- Люди завжди погоджуються з власними повідомленнями і не дбають про себе.
- Немає двох некоректних повідомлень не тотожні.
- Повідомлення каретки не вказуватимуть на речі до першого повідомлення.
- Рядки не будуть містити провідні чи кінцеві пробіли.
Виграє найкоротший код у байтах.
Випробування
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