Sua tarefa é escrever um programa, que, com uma lista de mensagens de bate-papo, conte quantas vezes cada pessoa recebe um ping, para que eu saiba o quão popular é todo mundo. Mas, como tenho que fazê-lo clandestinamente, preciso que seja o menor possível para ocultar o código.
Especificações
- A entrada vem em uma lista de 2 tuplas, com cada item no formato
("username", "message")
. - Um ping para outro usuário é definido como
@
seguido por três ou mais letras que se referem inequivocamente a esse usuário. - No entanto, você também deve considerar as respostas, que devem começar
:messageid
seguidas por um espaço. - Suponha que a primeira mensagem tenha id
0
e prossiga sequencialmente. - Faça a saída de cada usuário e diga quantas vezes cada um recebeu um ping.
- A saída pode estar em qualquer ordem / formato razoável.
- Isso é código-golfe , então o código mais curto em bytes vence!
Casos de teste
[["AlexA.", "I am wrong"], ["Quartatoes", "@Alex you are very wrong"], ["AlexA.", ":1 I am only slightly wrong"]]
AlexA.: 1
Quartatoes: 1
[["Doorknob", "I have never eaten an avocad."], ["AquaTart", ":0 I will ship you an avocad"], ["AlexA.", ":0 this is shocking"]]
Doorknob: 2
AquaTart: 0
AlexA.: 0
[["Geobits", "I like causing sadness through downvotes."], ["Flawr", "I want to put random message ids in my chat messages :0 askjdaskdj"]]
Geobits: 0
Flawr: 0
[["Downgoat", "goatigfs.com/goatgif"], ["Downotherthing", "@Downgoat cool gifs"], ["Dennis", "@Down cool gifs this is an ambiguous ping"]]
Downgoat: 1
Downotherthing: 0
Dennis: 0
:0
dobra como um emoticon surpreso.:3
) ou um ping não satisfazendo nenhum usuário na sala (por exemplo@zzz
)?[["Doorknob","@Alex is wrong"],["Alex","I am only slightly wrong"]]
entrada válida?Respostas:
JavaScript (ES6),
245210 bytesUsa um objeto para criar uma lista exclusiva de nomes ao lado de pings. Em seguida, ele procura nas mensagens correspondências para qualquer condição de ping. Se um nome, ele pesquisa a lista de nomes para descobrir se há apenas uma correspondência e, em seguida, incrementa. Se uma resposta, simplesmente referencia esse índice na matriz de mensagens e puxa o nome para ser incrementado. Finalmente, ele retorna o objeto.
fonte
Map
é mais divertido, certo? Na, eu originalmente superestimei quanto extra seria necessário para fazer referência a um objeto, pensando que eu precisaria de uma matriz separada para nomes, mas você está certo que é muito mais curto dessa maneira.PHP, 227 bytes
fonte