Найти ответы in Java
-
- Уже с Приветом
- Posts: 590
- Joined: 23 Jun 2016 19:49
- Location: SFBA
Найти ответы in Java
Добрый день. Как найти ответы in Java на эту задачу https://www.coursehero.com/tutors-probl ... nates-lis/ ? Что-то у меня не получается гуглить..
-
- Уже с Приветом
- Posts: 2273
- Joined: 29 Jul 2005 17:39
- Location: Калифорнийский Мухосранск
Re: Найти ответы in Java
Если я правильно прочитал задачу - есть набор из 26 точек на плоскости каждая из которых имеeт две координаты (X,Y). Есть еше одна "опорная" точка с координатами (A,B). Надо посчитать расстояние от этой "опорной" точки до каждой из этих 26 и вывести эти 26 точек в порядке возрастания расстояния от "опорной" точки. Расстояне = длинна отрезка с вершинами в (A,B) и (X,Y). Это расстояние R вычисляется как R = sqrt((A-X)^2 + (B-Y)^2), ну если конечно старина Пифагор нам не врет.
Так в чем проблема-то? Как в Java JSON прочитать из файла или как лучше отсортировать по вычисляемому критерию?
P.S. Если точек миллион, то можно квадратный корень не вычислять, один хрен что сравнивать - что само расстояние, что его квадрат.
Так в чем проблема-то? Как в Java JSON прочитать из файла или как лучше отсортировать по вычисляемому критерию?
P.S. Если точек миллион, то можно квадратный корень не вычислять, один хрен что сравнивать - что само расстояние, что его квадрат.
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Каждый математик должен знать меру, норму и предел. А вот CS engineers лажают.KinDzaDza wrote: 26 Nov 2019 02:17 Так в чем проблема-то? Как в Java JSON прочитать из файла или как лучше отсортировать по вычисляемому критерию?
Из моего опыта, треть кандидатов на tech screen не могут посчитать расстояние между двумя точками на плоскости.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: Найти ответы in Java
Это еще что. Две трети интервьюеров не могут потом ответить какое именно расстояние они хотят видеть -- евклидово или манхэттенское.8K wrote: 26 Nov 2019 19:44Из моего опыта, треть кандидатов на tech screen не могут посчитать расстояние между двумя точками на плоскости.
-
- Уже с Приветом
- Posts: 9563
- Joined: 26 Mar 2011 23:02
- Location: Russia -> Orlando, FL
Re: Найти ответы in Java
Учись студент.SUPER wrote: 25 Nov 2019 22:14 Добрый день. Как найти ответы in Java на эту задачу https://www.coursehero.com/tutors-probl ... nates-lis/ ? Что-то у меня не получается гуглить..
Code: Select all
package json;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
*
* @author Brrdrr
*for fun
*/
public class Coordinates {
public static void main(String[] args) throws Exception {
String file = "C:\\coordinates.json";
String originID = "origin";
Long originX = 6L;
Long originY = 33L;
jsonReader(file, originX, originY);
}
/**
* Read the JSON from file and compare with origin coordinates
*
* @param file
* the path to the JSON array
* @param x
* origin X Coordinate
* @param y
* origin Y Coordinate
* @throws FileNotFoundException
* @throws IOException
* @throws ParseException
*/
public static void jsonReader(String file, Long x, Long y)
throws FileNotFoundException, IOException, ParseException {
// parsing file "coordinates.json"
Object obj = new JSONParser().parse(new FileReader(file));
JSONArray ja = (JSONArray) obj;
// iterating through the record lines
Iterator<Map<String, String>> itr = ja.iterator();
Map<String, Double> distance = new HashMap<String, Double>();
while (itr.hasNext()) {
Map<String, String> element = itr.next();
String id = element.get("id").toString();
String value = element.get("value").toString();
String[] values = value.split(",");
Long coordinateX = Long.valueOf(values[0]);
Long coordinateY = Long.valueOf(values[1]);
// Debug
// System.out.println("id: " + id + " value: " + value + " X: " +
// coordinateX + " Y: " + coordinateY);
distance.put(id, distanceCal(coordinateX, coordinateY, x, y));
}
print(distance);
}
/**
* Calculating the distance between to points A and B by their coordinates
*
* @param xA
* @param yA
* @param xB
* @param yB
* @return
*/
public static double distanceCal(Long xA, Long yA, Long xB, Long yB) {
double distance = Math
.sqrt(Math.pow(xA - xB, 2) + Math.pow(yA - yB, 2));
return distance;
}
/**
* Sorting map of distances and print with 0.00 precision.
*
* @param map
*/
public static void print(Map<String, Double> map) {
Map<String, Double> sortedMap = map
.entrySet()
.stream()
.sorted(Comparator.comparing(
Map.Entry<String, Double>::getValue).thenComparing(
Map.Entry<String, Double>::getKey))
.collect(
Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue, (oldV, newV) -> oldV,
LinkedHashMap::new));
DecimalFormat df = new DecimalFormat("0.00");
System.out.println("This is the distance from Origin Point");
sortedMap.forEach((k, v) -> System.out.println("ID: " + k
+ " Distance: " + df.format(v)));
}
}
Человек никогда не бывает так несчастен, как ему кажется, или так счастлив, как ему хочется. (Франсуа де Ларошфуко)
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 Mar 2002 10:01
- Location: NJ
Re: Найти ответы in Java
OMFG. Java is evil
-
- Уже с Приветом
- Posts: 9563
- Joined: 26 Mar 2011 23:02
- Location: Russia -> Orlando, FL
Re: Найти ответы in Java
забыл OUTPUT
______________________________________________
This is the distance from Origin Point
ID: a Distance: 16.76
ID: d Distance: 22.02
ID: z Distance: 26.00
ID: o Distance: 28.28
ID: t Distance: 28.43
ID: p Distance: 31.58
ID: n Distance: 33.24
ID: i Distance: 33.54
ID: w Distance: 35.11
ID: v Distance: 42.72
ID: l Distance: 43.00
ID: m Distance: 48.27
ID: k Distance: 48.37
ID: b Distance: 50.99
ID: j Distance: 52.63
ID: e Distance: 65.15
ID: q Distance: 66.85
ID: f Distance: 69.64
ID: h Distance: 69.86
ID: r Distance: 78.00
ID: g Distance: 79.21
ID: y Distance: 90.79
ID: c Distance: 91.09
ID: s Distance: 93.90
ID: u Distance: 94.89
ID: x Distance: 102.83
______________________________________________
This is the distance from Origin Point
ID: a Distance: 16.76
ID: d Distance: 22.02
ID: z Distance: 26.00
ID: o Distance: 28.28
ID: t Distance: 28.43
ID: p Distance: 31.58
ID: n Distance: 33.24
ID: i Distance: 33.54
ID: w Distance: 35.11
ID: v Distance: 42.72
ID: l Distance: 43.00
ID: m Distance: 48.27
ID: k Distance: 48.37
ID: b Distance: 50.99
ID: j Distance: 52.63
ID: e Distance: 65.15
ID: q Distance: 66.85
ID: f Distance: 69.64
ID: h Distance: 69.86
ID: r Distance: 78.00
ID: g Distance: 79.21
ID: y Distance: 90.79
ID: c Distance: 91.09
ID: s Distance: 93.90
ID: u Distance: 94.89
ID: x Distance: 102.83
Человек никогда не бывает так несчастен, как ему кажется, или так счастлив, как ему хочется. (Франсуа де Ларошфуко)
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Я не понял, а где IPointFactory, IDistanceMeasurer, и т.д., и т.п., вкупе с getXCoorditate, getYCoordinate и иже с ними ?
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
В Фортране расчудесно без них жили.8K wrote: 27 Nov 2019 22:03 Я не понял, а где IPointFactory, IDistanceMeasurer, и т.д., и т.п., вкупе с getXCoorditate, getYCoordinate и иже с ними ?
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Чудесно общались через unnamed common block и стреляли триплетом при помощи if statement.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Угумс, а нонеча единственный приемлемый вид синглетона - это виски.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: Найти ответы in Java
Да пи"№% какой-то.
Надеюсь, что это какой-то прикол?
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: Найти ответы in Java
I* - это из другой оперы.8K wrote: 27 Nov 2019 22:03 Я не понял, а где IPointFactory, IDistanceMeasurer, и т.д., и т.п., вкупе с getXCoorditate, getYCoordinate и иже с ними ?
PS: коллега рассказывал, ему кошмар приснился - заблудился в незнакомом городе. Пытается у прохожих дорогу спросить, а никто из них не то что IDispatch - IUnknown не поддерживает! Говорит, в холодном поту проснулся.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Ну, как же из другой, когда из той же самой. Джависты любят обложиться интерфейсами и конкретными имплементациями, завести factory, controller, manager, что там еще бывает? Я через их код с большим трудом продираюсь. Может, конечно, нехватка опыта сказывается. Они-то, небось, всего этого и не замечают, на автомате делают.
ЗЫ: это не в адрес brrdrr, он-то явно прикололся.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
а какие современные языки проще читаются?8K wrote: 27 Nov 2019 23:20
Ну, как же из другой, когда из той же самой. Джависты любят обложиться интерфейсами и конкретными имплементациями, завести factory, controller, manager, что там еще бывает? Я через их код с большим трудом продираюсь. Может, конечно, нехватка опыта сказывается. Они-то, небось, всего этого и не замечают, на автомате делают.
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Ну, это не столько от языка зависит, сколько от конкретного человека. Мой фортран был без особых излишеств и вполне себе структурированный и понятный. Соответственно, в отличие от других сотрудников, мне не приходилось тратить кучу времени на отладку.
А с джавой сами понимаете, кто там в первую очередь присутствует.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
и мой, и мой! "чистый, как слеза младенца" (с)
-
- Уже с Приветом
- Posts: 5552
- Joined: 20 Mar 2001 10:01
- Location: SFBA
Re: Найти ответы in Java
Я сам не так чтобы много языков знаю. Основная проблема во всем этом программировании, что мы не умеем аккуратно описывать динамические процессы и их взаимодействие. Статическая программа (ну, те самые распечатки с АЦПУ) волшебным образом моделирует меняющийся мир.
Возможно, Go немного дальше продвинулся в этом смысле. Ну, типа expressive power.
Возможно, Go немного дальше продвинулся в этом смысле. Ну, типа expressive power.
Увидев друга, Портос вскрикнул от радости...
-
- Уже с Приветом
- Posts: 143
- Joined: 29 Apr 2014 12:22
Re: Найти ответы in Java
Приобщение к прекрасному миру джабы "студента". Как бы на примере, brrdrr показывает, что погромирование не только гугление и копипаст, но и нечто большее. Что то типа "добро пожаловать" в сей прекрасный мир. Деньги, тачки, яхты, выкупленный домик в долине, всё это будет, главное удачно жениться, а пока - добро пожаловать в мир ректального программирования.
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
я так и не понял, в чем прикол brrdrr? Можно на джаве проще написать?
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: Найти ответы in Java
Можно еще так (после жабы №8). Тут 2 класса. На сортировку я забил.
Code: Select all
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
public class Application {
public static void main(String[] args) {
getStreamFromFile("coordinates.json")
.map(r -> "pivot: " + r.id + ", distance: " + r.distanceTo(6,31))
.forEach(System.out::println);
}
private static Stream<Record> getStreamFromFile(String filename) {
try {
return new ObjectMapper()
.readValue(new File(filename), new TypeReference<List<Map<String, String>>>() {
})
.parallelStream()
.map(m -> new Record(m.get("id"), m.get("value")));
} catch (IOException e) {
e.printStackTrace();
return Stream.empty();
}
}
}
Code: Select all
public class Record {
final String id;
final double x, y;
Record(String id, String value) {
this.id = id;
String[] coordinates = value.split(",");
this.x = Double.parseDouble(coordinates[0]);
this.y = Double.parseDouble(coordinates[1]);
}
double distanceTo(double x, double y) {
return Math.hypot(this.x - x, this.y - y);
}
}
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
Плюс за знание библиотек, но с учетом того, что у brrdrr были комментарии и дебаггинг распечатки в коде, у вас ненамного короче получилось, ну и на сортировку вы забили.
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: Найти ответы in Java
С сортировкой код будет на одну строчку длиннее:Komissar wrote: 28 Nov 2019 13:50 Плюс за знание библиотек, но с учетом того, что у brrdrr были комментарии и дебаггинг распечатки в коде, у вас ненамного короче получилось, ну и на сортировку вы забили.
Code: Select all
public static void main(String[] args) {
getStreamFromFile("coordinates.json")
.sorted(Comparator.comparingDouble(r -> r.distanceTo(6, 31))) // <---------------- Тута
.map(r -> "pivot: " + r.id + ", distance: " + r.distanceTo(6,31))
.forEach(System.out::println);
}
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Найти ответы in Java
Я к тому, что код brrdrr не намного длиннее вашего, если убрать комментарии. После рассказов о невероятной технической крутости вас и вашей команды я, честно, ожидал большего.