@scala_ru

Страница 940 из 1499
Anatoliy
18.09.2017
09:54:22
В общем не правильно написал что надо: У меня есть эталонный массив: List(1,2,3,4,5,6,7,7) И есть куча других: List(1,1,2,3,4,5,6,7) List(1,7,2,3,4,5,6,7) List(1,2,2,3,4,5,6,7) List(1,1,7) Вот мне надо проверить х использовал только те и в том количестве элементы которые есть в эталонном массиве...

Просто списки получаются в несколько шагов и получается что если ждать полного формирования - оно слишком долго получается. Есть варианты проверять что массив А содержит два одинаковых элемента который только в одном экземпляре присутствует в массиве эталонном?

Aleksei
18.09.2017
09:56:08
ну можно намутить оптимизацию

типа если длина листов разная сразу считать что они не подходят

Google
Anatoliy
18.09.2017
09:57:35
Вот как раз разная она только на этапе составления. Такое делать нельзя - оно просто не дойдет до конца в таком случае. Единственная оптимизация - смотреть повторное использование элемента который в основном массиве присуствует в меньших количествах

Aleksei
18.09.2017
09:57:56
мутная какая то задачка =)

KrivdaTheTriewe
18.09.2017
09:58:00
следует первый массив к хэшмапе преобразовать и сделать для каждого массива forall

Nikita
18.09.2017
09:58:06
заведи хешмапу[Elem -> Int] и пройдись по эталонному списку инкрементируя значение каждый раз когда встречаешь элемент. потом пройдись по другим спискам и проверь что количество элементов совпадает

KrivdaTheTriewe
18.09.2017
09:58:37
если важен порядок в качестве ключа использовать значение и индекс

Anatoliy
18.09.2017
10:00:16
заведи хешмапу[Elem -> Int] и пройдись по эталонному списку инкрементируя значение каждый раз когда встречаешь элемент. потом пройдись по другим спискам и проверь что количество элементов совпадает
ну вот примерно это я и хочу сделать, но у меня есть подозрение что это будет достаточно долго выполняться в таким виде... Правда я думал делать от обратного - посчитать количество элементов в эталоне и минусовать, если меньше нуля любое из значений - выходим и прерываем но - var....

Nikita
18.09.2017
10:01:07
ну как долго, сложность O(N) должна быть

быстрее можно сделать только если эксплуатировать знания о том какие элементы

Wystan
18.09.2017
10:02:05
я бы какую-нибудь функцию замутил от этих листов, значение которой совпадало бы только, если условие выполняет

ну и да O(N), быстрей нельзя ж

Wystan
18.09.2017
10:03:36
попроси джуна чтобы функцию теперь придумал и написал. ты свое отдумал!

Google
KrivdaTheTriewe
18.09.2017
10:04:31
а вот это я вообще не понял как выглядеть должно
val ma = etalon.map(( _,true)).toMap sub.forAll(x=> ma.contains(x))

но вообще нужен хэшсет

Anatoliy
18.09.2017
10:04:35
У меня просто выходит дофига вариантов сочетаний, но в итоге все они отсеиватся в конце когда я проверку делаю if (sq.dropWhile(rs => res.contains(rs)).isEmpty) Но я хочу эту же проверку делать немного другим образом, а вот каким - пока просто не понимаю...

val ma = etalon.map(( _,true)).toMap sub.forAll(x=> ma.contains(x))
так оно же по идее всегда выдаст тру если встретить элемент который просто есть? допустим у меня будет проверяться подряд два одинаковых элемента, в эталоне он встречается один раз, он же тоже тру вернет вроде?

KrivdaTheTriewe
18.09.2017
10:07:21
Anatoliy
18.09.2017
10:07:53
Вот, я это и хочу попробовать делать, но в итоге сталкиваюсь с необходимостью применять вары, это ведь так?

KrivdaTheTriewe
18.09.2017
10:08:09
foldleft

и полугруппа

если не хочешь с полугруппами разбираться , ну сделай варами

Anatoliy
18.09.2017
10:09:21
Класс. пошел читать как оно работает, это я вообще пока не понимаю( но если посмотреть что у меня есть список списков содержащий нужные элементы, и эталонный вариант - как оно должно выглядеть?

KrivdaTheTriewe
18.09.2017
10:10:19
не список , а хэшмапа

Anatoliy
18.09.2017
10:18:56
А как вообще в foldLeft сделать минус один? и что в должн в конечном счете вернуть?

Grigory
18.09.2017
10:19:36
минус один?

Anatoliy
18.09.2017
10:19:42
Он же возвращает элемент из списка, так?

Aleksei
18.09.2017
10:20:08
фолдлефт проходит весь список передавая какой то акумулятор

Anatoliy
18.09.2017
10:20:23
Мне надо что бы если количество элементов в результирующем списке повторялось большее количество раз чем в эталонном - оно это показывало

sq.distinct.map(r => (r, sq.count(_ == r))) Вот эта штука по идее вернет мне уникальные эелементы и их количество, так? А с фолдом это тогда как подружить потом?

Vadim
18.09.2017
10:28:55
Народ, на сколько это ужсано? itemsList.map(item => cache.set(item.code, item); item)

Google
Vadim
18.09.2017
10:29:57
Каке

Nikita
18.09.2017
10:30:03
use .foreach, luke

Mikhail
18.09.2017
10:30:08
Мне надо что бы если количество элементов в результирующем списке повторялось большее количество раз чем в эталонном - оно это показывало
ты уже несколько раз менял условия задачи. тебе стоит сначало формализовать задачу с перечислением всех необходимых условий и только потом приступать к ее решению(возможно тогда ты и своими силами справишься)

Vadim
18.09.2017
10:31:17
Мне надо лист возвращать

Фор ич не годится

Mikhail
18.09.2017
10:31:51
sq.distinct.map(r => (r, sq.count(_ == r))) Вот эта штука по идее вернет мне уникальные эелементы и их количество, так? А с фолдом это тогда как подружить потом?
seq.groupBy( x => x) - тоже даст инфу о количестве по ключу, и инфу об уникальных ключах. но с твоими формулировками кто ж знает что тебе там в действительности подойдет)

Nikita
18.09.2017
10:32:03
возврати существующий лист

Henadz
18.09.2017
10:32:06
Мне надо лист возвращать
itemsList.foreach(...) itemsList

Anatoliy
18.09.2017
10:33:05
ты уже несколько раз менял условия задачи. тебе стоит сначало формализовать задачу с перечислением всех необходимых условий и только потом приступать к ее решению(возможно тогда ты и своими силами справишься)
Потому что тот же фолд возвращает не совсем то что я изначально хотел) А вообще - надо получить ответ: в результируещем списке больше повторов уникальных элементов которые содержатся в эталонном списке или нет? всё sq.distinct.map(r => (r, sq.count(_ == r))) это я получаю повторы из эталоного списка Но вот как сделать сравнение правильно - я не понимаю. Отсда и такие вопросы разбросанные :)

Mikhail
18.09.2017
10:33:21
Мне надо лист возвращать
у тебя уже есть лист. зачем тебе формировать новый лист из тех же самых элементов?

Vadim
18.09.2017
10:33:46
тоже верно

Anatoliy
18.09.2017
10:35:13
seq.groupBy( x => x) - тоже даст инфу о количестве по ключу, и инфу об уникальных ключах. но с твоими формулировками кто ж знает что тебе там в действительности подойдет)
У меня есть эталонный массив: List(1,2,3,4,5,6,7,7) И есть куча других: List(1,1,2,3,4,5,6,7) List(1,7,2,3,4,5,6,7) List(1,2,2,3,4,5,6,7) List(1,1,7) Вот мне надо узнать когда повторов в не эталанном списке больше чем в эталонном. Всё. При этом самих уникальных элементов в не эталонном списке может быть и меньше чем в эталонном

Mikhail
18.09.2017
10:37:55
Потому что тот же фолд возвращает не совсем то что я изначально хотел) А вообще - надо получить ответ: в результируещем списке больше повторов уникальных элементов которые содержатся в эталонном списке или нет? всё sq.distinct.map(r => (r, sq.count(_ == r))) это я получаю повторы из эталоного списка Но вот как сделать сравнение правильно - я не понимаю. Отсда и такие вопросы разбросанные :)
Потому что тот же фолд возвращает не совсем то что я изначально хотел) - не хочу показаться слишком токсичным, но стоит поработать над логикой. я врятли когда-нибудь смогу понять почему факт "фолд возвращает не совсем то, что я хотел" может служить оправданием отсутствия толковой формулировки задачи

Anatoliy
18.09.2017
10:39:07
Потому что тот же фолд возвращает не совсем то что я изначально хотел) - не хочу показаться слишком токсичным, но стоит поработать над логикой. я врятли когда-нибудь смогу понять почему факт "фолд возвращает не совсем то, что я хотел" может служить оправданием отсутствия толковой формулировки задачи
Я изначально просто вообще про фолд ни слова не сказал. А когда мне его уже в пример привели - начал смотреть на него. Т.к. получил новый вариант с его использованием - пошло новое уточнение. Уж извиняюсь. Ладно, всем спасибо кто старался помочь, буду дальше разбираться.

разве это толковая формулировка?
Если покажете как правильно составляются толковые формулировки - я буду очень благодарен)

Mikhail
18.09.2017
10:46:30
Я изначально просто вообще про фолд ни слова не сказал. А когда мне его уже в пример привели - начал смотреть на него. Т.к. получил новый вариант с его использованием - пошло новое уточнение. Уж извиняюсь. Ладно, всем спасибо кто старался помочь, буду дальше разбираться.
все х*ня, давай по новой. начни с формулировки например хотя бы такой простонародной: есть List1[A], который состоит из не уникальных элементов типа A и List2[A] про который известно только то, что в нем элементы типа А и больше инфы нет. Требуется проверить, что List2.size == List1.size, для каждого элемента y из List2 выполняется List2.count(y) == List1.count(y) (выполнение этих двух условия покажет, что они полностью идентичны), а также вывести элементы из List2 для которых второе условие не выполняется с указанием List2.count(y) - ну тут дальше конкретизируй или вырезай и тогда годная помощь не заставит себя ждать. А потом еще котанов ученых можешь потормошить, чтобы тебе прям на русском математическом это все перефразировали)

KrivdaTheTriewe
18.09.2017
10:51:35
https://habrastorage.org/web/4cd/451/89b/4cd45189beb7492f90f3ca7c65d773d4.png

$ убрать и джава получится

Mikhail
18.09.2017
10:53:45
@Visteras // Информация о 1,2,3 - совершенно лишняя. Достаточно: List[Int], для уникальных ведь есть Set[Int] У меня есть эталонный массив: List(1,2,3,4,5,6,7,7) // На кой черт примеры других листов да еще и несколько? тут же не тесты выкладываешь. достаточно второго List[Int] . Можно просто def dojob(listA:List[Int], listB:List[Int]):What i need to return? И есть куча других: List(1,1,2,3,4,5,6,7) List(1,7,2,3,4,5,6,7) List(1,2,2,3,4,5,6,7) List(1,1,7) // вот это ниже вобще ни о чем и не понятно зачем, потому что никак не помогут в решении задачи). Совершенно непонятно нужны ли тебе сами элементы которые повторяются больше? нужны ли элементы которые повторятся меньше? или тебе просто факт неравенства? а если нужны, то нужно ли их количество? Второе предложение тоже никак требования к ответу никак не конкретизируют Вот мне надо узнать когда повторов в не эталанном списке больше чем в эталонном. Всё. При этом самих уникальных элементов в не эталонном списке может быть и меньше чем в эталонном

Google
Anatoliy
18.09.2017
10:58:53
@Visteras // Информация о 1,2,3 - совершенно лишняя. Достаточно: List[Int], для уникальных ведь есть Set[Int] У меня есть эталонный массив: List(1,2,3,4,5,6,7,7) // На кой черт примеры других листов да еще и несколько? тут же не тесты выкладываешь. достаточно второго List[Int] . Можно просто def dojob(listA:List[Int], listB:List[Int]):What i need to return? И есть куча других: List(1,1,2,3,4,5,6,7) List(1,7,2,3,4,5,6,7) List(1,2,2,3,4,5,6,7) List(1,1,7) // вот это ниже вобще ни о чем и не понятно зачем, потому что никак не помогут в решении задачи). Совершенно непонятно нужны ли тебе сами элементы которые повторяются больше? нужны ли элементы которые повторятся меньше? или тебе просто факт неравенства? а если нужны, то нужно ли их количество? Второе предложение тоже никак требования к ответу никак не конкретизируют Вот мне надо узнать когда повторов в не эталанном списке больше чем в эталонном. Всё. При этом самих уникальных элементов в не эталонном списке может быть и меньше чем в эталонном
Спасибо за пояснение, попробую исправиться. Мне нужно знать есть ли вообще элементы которые повторяются больше чем в эталонном списке. Если есть - я хочу просто выпилить этот список и всё.

Mikhail
18.09.2017
11:01:18
Спасибо за пояснение, попробую исправиться. Мне нужно знать есть ли вообще элементы которые повторяются больше чем в эталонном списке. Если есть - я хочу просто выпилить этот список и всё.
val listA = List[Int] val listB = List[Int] val groupA = listA.groupBy( x => x) // Map[Int, List[Int]] = Map[x, List[x]] val groupB = listB.groupBy(x => x) groupA.size == groupB.size groupA.forall( (x, list) => list.size == groupB(x).size )

Nikolay
18.09.2017
11:03:26
есть кто в Питере, у кого scalajs в продакшене? если react - так вообще круто

Mikhail
18.09.2017
11:03:36
соответственно и сфолдить можно, если нужны сами элементы. просто надо отталкиваться от того, что требуется. если требуются элементы из Б, тогда и фолдишь Б, если элементы из А, тогда и фолдишь А. это пишется прям вот за минутку, а об оптимизациях и феншуе потом можно подумать. К тому же, когда есть готовое простое решение его оптимизировать и феншуизировать гораздо проще

есть кто в Питере, у кого scalajs в продакшене? если react - так вообще круто
я не в питере и не реакт, но в продакшене скалажиэс есть)

Nikolay
18.09.2017
11:06:00
а что используете?

Mikhail
18.09.2017
11:06:29
Anatoliy
18.09.2017
11:06:43
соответственно и сфолдить можно, если нужны сами элементы. просто надо отталкиваться от того, что требуется. если требуются элементы из Б, тогда и фолдишь Б, если элементы из А, тогда и фолдишь А. это пишется прям вот за минутку, а об оптимизациях и феншуе потом можно подумать. К тому же, когда есть готовое простое решение его оптимизировать и феншуизировать гораздо проще
Да есть готовое решение, но оно считает около минуты, тогда как если сократить в начале количество вариантов считать анчнет за доли секунд... Это уже и есть оптимизация... Спасибо, сейчас буду пробовать) Мне просто сильно мозг проворачивал лист в мапе, мы ведь смотрим на сами элементы уже...

Igor
18.09.2017
11:07:17
кто-нибудь scala-exercises последнее время проходил? кнопка Run задизейблена, через гитхаб залогинен

Admin


Nikolay
18.09.2017
11:08:06
совсем свое, или что-то из scalajs экосистемы, типа diode?

Aleksei
18.09.2017
11:08:42
ну кстати https://scastie.scala-lang.org/ выдает 502 сегодня

Igor
18.09.2017
11:11:31
используй firefox
спасибо. в сафари тоже заработало, в отличие от хрома)

и в хроме с выключенным адблоком тоже)

KrivdaTheTriewe
18.09.2017
14:16:18
я не против
давайте соберемся

Nick
18.09.2017
14:36:23
@krivdaallstarts там наверное нет смысла брать чистых скалистов, нужно ж еще верстать и рисовать уметь)

Sergey
18.09.2017
14:38:27
не исключено , но думаю там если и верстать то не много

а кто идёт ?

Google
Nick
18.09.2017
14:39:18
не много, но на верстку может уйти тупо весь день)

Nick
18.09.2017
14:41:14
смотря кто судии

KrivdaTheTriewe
18.09.2017
14:41:27
ну нужно полъодящую секцию выбрать

если никто не пойдет , придётся го учить и товарища тащить в Питер

Oleksandr
18.09.2017
14:57:05
И эффективно ли юзать LongMap, когда нужно хранить Int-ключи? Ведь при каждом действии с мапой происходять преобразование toLong, toInt
scala> 1l.asInstanceOf[Int] res0: Int = 1 эффективно) к слову, тут можно почитать https://contributors.scala-lang.org/t/can-we-get-rid-of-cooperative-equality/1131, и почему LongMap куда шустрее обычной

и вообще, почему скаловские коллекции по перформансу раз в 2-5 хуже

KrivdaTheTriewe
18.09.2017
15:27:09
Добавил скалайк в зависимости , скала 2.10 (class java.lang.RuntimeException/error reading Scala signature of SQLSyntaxSupportFeature.class: package macros contains object and package with same name: blackbox было у кого подобное ? Сколько пользовался, не замечел такого глюка с неймспейсами у скалайка

Arthur
18.09.2017
15:53:24
мне интересен кейс в котором сервис уперся в перформанс коллекции

Grigory
18.09.2017
15:54:17
Arthur
18.09.2017
15:54:37
я прочитал текст не прочитав кто отправил, и сразу понял кто автор)

и представил этот смайлик)

Oleksandr
18.09.2017
15:54:52
хуже чего?
ну хотя бы стдлибы джавы

Arthur
18.09.2017
15:55:06
стдлиб джавы не иммутабельна вроде как

или я пропустил чет

KrivdaTheTriewe
18.09.2017
15:55:24
Oleksandr
18.09.2017
15:55:41
мне интересен кейс в котором сервис уперся в перформанс коллекции
ну на фоне 100500 ио монад [ either [ list [ future [ t ] ] ] разницы мб действительно нет, да

Arthur
18.09.2017
15:56:15
не ну серьезно, обычно проблема перфоманса лежит где-то на уровне запросов в бд или n^2 алгоритмов

Страница 940 из 1499