Design and implement an algorithm for the following problem.
Distributed algorithms “Synchronous Network Model”.
1. A group of street musicians occupy a city square. Their positions are given in the file Positions. The first row contains the number of musicians, the next rows describe their coordinates (in meters). An exemplary file and the corresponding arrangement of musicians are given below.
2. Each musician wants to give a concert. The concert lasts for 2 seconds. After giving a Concert, the musician becomes inactive.
3. Each musician can be heard in the radius of 3 meters. As musicians are gentle people, they will not play if they can hear someone playing.
4. Observe that not all musicians can play at the same time. Thus they play in rounds. When the musicians finish playing, the musicians who will play in the next round are selected.
5. The only thing that may stop a musician from playing is hearing another musician (or having finished before).
6. When the musicians are discussing who will play, they can communicate only with the people within the distance of 3 m.
1. There is one thread/process for each musician.
2. Inter-process communication has to be based on passing messages. You can use one of available libraries, e.g. SignalR or RabbitMQ.
3. The algorithm may be synchronous (if the chosen technology for communication allows for it).
4. Provide some comments explaining your algorithm.
5. Print the current state of processes to the console.