Size: a a a

Чат подкаста «Разбор Полётов»

2019 October 23

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
в листе есть два элемента
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
First one wins - допустимо
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Элемент A считает что должен стоять перед элементом B, а элемент B считает что всё не так
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Sergei Egorov
First one wins - допустимо
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
допустим у тебя все элементы могут сами решить перед какими они должны стоять
Comparable - разве не сам объект решает где ему быть?
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
Элемент A считает что должен стоять перед элементом B, а элемент B считает что всё не так
Цикличные зависимости отсутствуют, кстати
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Alexey Abashev
Comparable - разве не сам объект решает где ему быть?
нет. Он решает где он должен быть относительно любого другого элемента
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Sergei Egorov
Цикличные зависимости отсутствуют, кстати
то есть тебе надо выстроить дерево
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Для этого у нас есть TreeSet
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Можно сделать своё красно-чёрное дерево с разрешёнными дубликатами
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
которое принимает, прости господи, компаратор
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
а компаратор получает предпочтения объектов относительно руг друга
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Если предпочтений нет — то это 0
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
Sergei Egorov
Ок, вопрос:

Как сделать систему в которой есть статичный лист который надо отсортировать один раз перед итерированием и в котором сами объекты решают, идти им до или после других?
Может быть, раз в решётках имеет смысл понятие верхней и нижней границы, то вместо функции compareTo должны быть функции sup и inf, которые возвращают эти границы. Граница - это множество. Соответствено, "отсортированный" лист должен содержать не элементы, а множества элементов размерностью 2, то есть пары.

Как разлинеить в список? А хз, а может не надо разлинеивать вообще? Ну или брать элементы внутри одной пары в произвольном порядке

https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D1%91%D1%82%D0%BA%D0%B0_(%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0)
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀
Может быть, раз в решётках имеет смысл понятие верхней и нижней границы, то вместо функции compareTo должны быть функции sup и inf, которые возвращают эти границы. Граница - это множество. Соответствено, "отсортированный" лист должен содержать не элементы, а множества элементов размерностью 2, то есть пары.

Как разлинеить в список? А хз, а может не надо разлинеивать вообще? Ну или брать элементы внутри одной пары в произвольном порядке

https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D1%91%D1%82%D0%BA%D0%B0_(%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0)
что-то ты вот сложное собрал сейчас
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
А, компаратор не гарантирует сравнения всех со всеми, да?
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
@bsideup а у тебя там как, любой объект может понять где он должен стоять относительно дугого объекта?
Типа у нас есть мноество
A-B-C-D
B знает что должен стоять до C. Знает ли он что должен чтоять до D?
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Я тут просто про PriorityQueue вспомнил
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
А, не, у неё не сортированный итератор
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
что-то ты вот сложное собрал сейчас
для обычных объектов мы говорим, что есть две сущности и их сравнение даёт расстояние в виде числа (int compareTo).

простое решение само напрашивается, если и аргументы такой функции подобны целым числам. То есть, если для любых a и b мы можем выбрать функцию, которая спроецирует их на целые числа. Например, User.getPenisLength():: (User) -> int.

и дальше мы говорим, что раз у нас теперь всё есть целые числа, а они - это линейно упорядоченное множество, то если a <= b, то sup(a,b) = b, а inf(a,b) = a. По сути, copmpareTo здесь и есть inf.

но представим, что у нас такой домен, когда существуют несравнимые элементы. Из твита: "does not depend on any other and cannot be compared by anything". Их уже не спроецировать на числа, потому что числа всегда можно сравнить друг с другом, это тот самый полный линейный порядок.  И вот тут  inf уже не compareTo:: Pair->Int, а её полная форма, когда она вместо инта должна отдавать compareTo:: Pair->Pair.

пока всё так? :)
источник