Професионална програма
Loading...
VasilKos avatar VasilKos 7 Точки

Message Manager - Java Fundamentals

1.Може ли помощ за кейс " Message".? по-конкретно как да конструирам проверката ако е достигнат капацитета (в слу4ая - 10)

2. и сортировката също не е наред ?

Message - Pastebin.com

 

Create a program that manages messages sent and received of users. You need to keep information about username, their sent and received messages. You will receive the capacity of possible messages kept at once per user. You will be receiving lines with commands until you receive the "Statistics" command.  There are three possible commands:

  • "Add={username}={sent}={received}":
    • Add the username, his/her sent and received messages to your recordsIf person with the given username already exists ignore the line.
  • "Message={sender}={receiver}":
    • Check if both usernames exist and if they do, increase the sender’s sent messages by 1 and the receiver’s received messages by 1. If anyone reaches the capacity (first check the sender), he/she should be removed from the record and you should print the following message:
      • "{username} reached the capacity!"
  • "Empty={username}":
    • Delete all records of the given userif he exists. If "All" is given as username - delete all records you have.

In the end, you have to print the count of users, each person with his/her messages (the count of both sent and received) sorted in descending order by the received messages and then by their username in ascending order in the following format:  

Users count: {count}

{username} - {messages}

{username} - {messages}

Input

  • On the first line, you will receive the capacity - an integer number in the range [1-10000].
  • You will be receiving lines until you receive the "Statistics" command.
  • The initial messages (sent and received) will always be below the capacity.
  • The input will always be valid.

Output

  • Print the appropriate message after the "Message" command, if someone reaches the capacity.
  • Print the users with their messages in the format described above.

 

 

Examples

Input

Output

10
Add=Mark=5=4
Add=Clark=3=5
Add=Berg=9=0
Add=Kevin=0=0
Message=Berg=Kevin
Statistics
 

Berg reached the capacity!

Users count: 3

Clark - 8

Mark - 9

Kevin - 1

Тагове:
0
Fundamentals Module
svephoto avatar svephoto 1059 Точки

Здравей, VasilKos,

 

Не успявам да намеря такава задача в Judge. Би ли дал линк към нея?

0
VasilKos avatar VasilKos 7 Точки

С долната сортировка успях да филтрирам вси4ки, с изклю4ение, на този, който трябва да се изтрие при достигане на капацитета от case" Message"

 

System.out.printf("Users count: %d%n", users.size());
users.entrySet().stream().sorted((a, b) -> Integer.compare(b.getValue().get(0), a.getValue().get(0)))
        .forEach(e -> {
            System.out.printf("%s - %d%n", e.getKey(), e.getValue().get(0)+e.getValue().get(1));

        });

 

0
24/11/2021 21:02:01
svephoto avatar svephoto 1059 Точки

Аха, разбрах, премахнали са въпросния изпит от Judge, но аз съм решавал задачите от него преди време, докато още го имаше. При тази задача ти препоръчвам да ползваш две структури от данни вместо една, защото с нея няма как да отделиш изпратените от получените съобщения за всеки ползвател на системата. В твоя код си пропуснал да изпълниш изтриването на всички ползватели от списъка при положение, че при команда "Empty" получим като username "All". Ето вариант за решение, което работи коректно: https://pastebin.com/KTM1Qypk. Разгледай го и ще можеш да видиш как съм направил проверката при положение, че е достигнат капацитетът, а също и сортирането.

0
VasilKos avatar VasilKos 7 Точки

Благодаря.

0