Ваша задача - написать программу, в которой есть список сообщений чата, подсчитать, сколько раз каждый пользователь получает пинг, чтобы я мог знать, насколько популярны все. Но, поскольку я должен сделать это тайно, мне нужно, чтобы он был как можно меньше, чтобы я мог скрыть код.
Спекуляции
- Входные данные поступают в виде списка из двух кортежей, причем каждый элемент имеет форму
("username", "message")
. - Пинг другому пользователю определяется как
@
сопровождаемый 3 или более буквами, которые однозначно относятся к этому пользователю. - Тем не менее, вы также должны рассмотреть ответы, которые должны начинаться с
:messageid
пробела. - Предположим, что первое сообщение имеет идентификатор
0
и последовательно. - Выведите каждого пользователя и скажите, сколько раз каждый получил пинг.
- Вывод может быть в любом порядке / разумном формате.
- Это код-гольф , поэтому выигрывает самый короткий код в байтах !
Тестовые случаи
[["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
удваивается, как удивленный смайлик.:3
) или пинг не удовлетворяет любого пользователя в комнате (например@zzz
)?[["Doorknob","@Alex is wrong"],["Alex","I am only slightly wrong"]]
допустимый ввод?Ответы:
JavaScript (ES6),
245210 байтИспользует объект для создания уникального списка имен наряду с пингами. Затем он просматривает сообщения на совпадения с любым условием проверки связи. Если имя, оно просматривает список имен, чтобы найти единственное совпадение, а затем увеличивает его. Если ответ, он просто ссылается на этот индекс в массиве сообщений и извлекает имя для увеличения. Наконец, он возвращает объект.
источник
Map
веселее, верно? Нет, я изначально переоценил, сколько еще потребуется, чтобы ссылаться на объект, думая, что мне понадобится отдельный массив для имен, но вы правы, так как он намного короче.PHP, 227 байт
источник