En la sala de chat de PPCG, el decimonoveno byte , el uso de puntos de atención ^
(o zanahorias ) es una forma de indicar que está de acuerdo con uno de los comentarios realizados anteriormente, justo encima del suyo.
Un mensaje de intercalación consta únicamente de N ^
caracteres (donde N es un entero positivo) y significa estar de acuerdo con el enésimo mensaje anterior. Entonces, un solo ^
significa acuerdo con el mensaje inmediatamente anterior, ^^
significa acuerdo con el mensaje dos líneas arriba, ^^^
significa acuerdo con el mensaje tres líneas arriba, y así sucesivamente.
Además, cuando un mensaje de intercalación X está de acuerdo (es decir, apuntando hacia) otro mensaje de intercalación Y, entonces se dice que X está de acuerdo con lo que Y está de acuerdo. Puede haber varias capas de esto y, al final, todos los mensajes de caret indican acuerdo con un mensaje de no caret.
Por ejemplo, si una transcripción de chat tiene este aspecto: (un mensaje por línea)
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]
Luego, las líneas 1, 2 y 6 son mensajes sin caret y todos los demás son mensajes con caret que apuntan a mensajes sin caret:
- La línea 3 apunta directamente a la línea 2.
- La línea 4 apunta directamente a la línea 1.
- La línea 5 apunta a la línea 3, que apunta a la línea 2.
- La línea 7 apunta a la línea 6.
- La línea 8 apunta a la línea 5, que apunta a la línea 3, que apunta a la línea 2.
- La línea 9 apunta a la línea 7, que apunta a la línea 6.
Por lo tanto, incluyendo a los usuarios que escribieron el mensaje de no preocupación (y suponiendo que las personas no cuiden su propio mensaje) podemos concluir que:
- 2 personas están de acuerdo con
I like dogs
(Líneas 1 y 4.) - 4 personas están de acuerdo con
I like cats
(Líneas 2, 3, 5 y 8.) - 3 personas están de acuerdo con
I like turtles
(Líneas 6, 7 y 9.)
Reto
Escriba un programa o función que tome una cadena multilínea similar al ejemplo anterior donde cada línea representa un mensaje de chat, con los mensajes más antiguos primero.
Cada línea tendrá al menos un carácter y habrá al menos una línea. Todos los mensajes serán mensajes intercalados que consisten únicamente en ^
's, o serán mensajes no intercalados que consisten en letras y espacios ( [ a-zA-Z]+
en expresiones regulares).
Para cada mensaje que no sea de intercalación, en cualquier orden, envíe el número de personas que están de acuerdo con él en un formato claro que contenga el texto del mensaje, p. Ej.
2 - I like dogs
4 - I like cats
3 - I like turtles
o
I like cats (4)
I like dogs (2)
I like turtles (3)
o
{"I like cats" : 4, "I like turtles" : 3, "I like dogs" : 2}
Puedes asumir que:
- Las personas siempre están de acuerdo con sus propios mensajes y no se preocupan por sí mismas.
- No hay dos mensajes que no sean de cuidado son idénticos.
- Los mensajes Caret no señalarán cosas antes del primer mensaje.
- Las líneas no contendrán espacios iniciales o finales.
El código más corto en bytes gana.
Casos de prueba
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