Skip to content
Open
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 39 additions & 4 deletions src/main/java/com/walking/intensive/chapter3/task14/Task14.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.walking.intensive.chapter3.task14;

import java.util.Arrays;


/**
* Необходимо разработать программу, которая определяет количество объектов на радарах.
*
Expand Down Expand Up @@ -32,7 +35,7 @@
* <ul>
* <li>objectCounts[0] = 3, потому что радар с координатами (2;3) и радиусом действия 1 видит объекты с координатами
* (1;3), (2;2) и (3;3). Всего 3 объекта.
*</ul>
* </ul>
*
* <p>При наличии некорректных входных данных верните из метода пустой массив.
*
Expand All @@ -43,11 +46,43 @@
*/
public class Task14 {
public static void main(String[] args) {
// Для собственных проверок можете делать любые изменения в этом методе
int[][] radars = {{2, 3, 1}, {4, 3, 1}, {1, 1, 2}};
int[][] objectsLocation = {{1, 3}, {3, 3}, {5, 3}, {2, 2}};

System.out.println(Arrays.toString(getObjectCounts(objectsLocation, radars)));
}

static int[] getObjectCounts(int[][] objectLocations, int[][] radars) {
// Ваш код
return new int[0];
int[] objectCounts = new int[radars.length];
for (int i = 0; i < radars.length; i++) {
int object = 0;
if (!isValidRadars(radars[i])) {
return new int[0];
}

for (int j = 0; j < objectLocations.length; j++) {
if (!isValidObjects(objectLocations[j])) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

аналогично замечаниям в предыдущих ПРах. Валидация так полноценно и не выделена из логики обработки. Ожидаю, что валидация будет происходить ДО запуска цикла, производящего полезную работу - в данном случае, подсчет объектов, попадающих в радары

return new int[0];
}
int side1 = objectLocations[j][0] - radars[i][0];
int side2 = objectLocations[j][1] - radars[i][1];
double objectDistance = Math.sqrt(Math.pow(side1, 2) + Math.pow(side2, 2));
if (objectDistance <= radars[i][2]) {
object += 1;
}
}

objectCounts[i] = object;
}

return objectCounts;
}

static boolean isValidRadars(int[] radar) {
return radar.length == 3 && radar[2] > 0;
}

static boolean isValidObjects(int[] object) {
return object.length == 2;
}
}