Twoim zadaniem jest napisanie programu, który na podstawie listy wiadomości czatu policzy, ile razy każda osoba jest pingowana, dzięki czemu będę wiedział, jak popularni są wszyscy. Ale ponieważ muszę to robić w ukryciu, muszę być tak mały, jak to możliwe, aby ukryć kod.
Okular
- Dane wejściowe znajdują się na liście 2-krotek, przy czym każdy element ma postać
("username", "message")
. - Ping do innego użytkownika jest definiowany jako
@
następujący po nim 3 lub więcej liter, które jednoznacznie odnoszą się do tego użytkownika. - Jednak należy również wziąć pod uwagę odpowiedzi, które muszą zaczynać się
:messageid
od spacji. - Załóżmy, że pierwsza wiadomość ma identyfikator
0
i kontynuuj sekwencję. - Przekaż każdemu użytkownikowi dane i powiedz, ile razy każdy z nich został pingowany.
- Dane wyjściowe mogą być w dowolnej kolejności / rozsądnym formacie.
- To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach !
Przypadki testowe
[["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
podwaja się jako zdziwiony emotikon.:3
) lub ping niespełniający wymagań użytkownika w pokoju (np.@zzz
)?[["Doorknob","@Alex is wrong"],["Alex","I am only slightly wrong"]]
prawidłowe dane wejściowe?Odpowiedzi:
JavaScript (ES6),
245210 bajtówUżywa obiektu do utworzenia unikalnej listy nazw obok pingów. Następnie przegląda wiadomości w poszukiwaniu dopasowań do jednego z warunków ping. Jeśli nazwa, przegląda listę nazw, aby sprawdzić, czy istnieje tylko jedno dopasowanie, a następnie zwiększa. Jeśli odpowiedź, po prostu odwołuje się do tego indeksu w tablicy komunikatów i pobiera nazwę, która ma zostać zwiększona. Na koniec zwraca obiekt.
źródło
Map
jest więcej zabawy, prawda? Nie, pierwotnie przeceniałem, ile jeszcze zajmie odniesienie do obiektu, myśląc, że będę musiał osobną tablicę dla nazw, ale masz rację, że w ten sposób jest znacznie krótszy.PHP, 227 bajtów
źródło