
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

Nikita
18.09.2017
10:01:07
ну как долго, сложность O(N) должна быть
быстрее можно сделать только если эксплуатировать знания о том какие элементы

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

Anatoliy
18.09.2017
10:02:56

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

Google

KrivdaTheTriewe
18.09.2017
10:04:31
но вообще нужен хэшсет

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

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)

Henadz
18.09.2017
10:29:44
а, понятно )

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

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

Henadz
18.09.2017
10:32:06

Anatoliy
18.09.2017
10:33:05

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
У меня есть эталонный массив: 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)
Вот мне надо узнать когда повторов в не эталанном списке больше чем в эталонном. Всё. При этом самих уникальных элементов в не эталонном списке может быть и меньше чем в эталонном
разве это толковая формулировка?


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

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

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

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 задизейблена, через гитхаб залогинен

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

?Ivan
18.09.2017
11:08:21

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

Mikhail
18.09.2017
11:09:14

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

KrivdaTheTriewe
18.09.2017
14:16:18

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

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

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

Google

KrivdaTheTriewe
18.09.2017
14:40:43
в прототипе

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

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

Oleksandr
18.09.2017
14:57:05
и вообще, почему скаловские коллекции по перформансу раз в 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
было у кого подобное ? Сколько пользовался, не замечел такого глюка с неймспейсами у скалайка

Alexander
18.09.2017
15:51:59

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

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