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
Respuestas:
CJam, 18
2 bytes eliminados gracias a Martin :)
Pruébelo en línea
Explicación:
fuente
Pyth,
1918 bytesDemostración
Un enfoque similar al aditsu, especialmente la parte rle.
fuente
JavaScript (ES6), 110 bytes
Explicación
Prueba
Mostrar fragmento de código
fuente
Mathematica,
8377 bytesfuente
Rubí 89
Este es un programa que recibe información de STDIN e imprime el resultado. Realiza un seguimiento de los mensajes y sus recuentos de votos en la variable
v
, que es aHash
.Demos en línea:
fuente
Python 2.7 -
122114 bytesPrácticamente la solución más sencilla que existe, y no particularmente golf.
fuente
Python 2.7 96 bytes
explicación: sobrescribir in situ de l, cada llamada de
l[_] = ...
almacena la palabra apuntada, y se usa un diccionario para contar los resultados al inicializar o agregar al conteo actual deb[l[_]]
fuente
for _,i in enumerate(l):
.