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 задизейблена, через гитхаб залогинен
Admin
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
не исключено , но думаю там если и верстать то не много
а кто идёт ?
Google
Nick
18.09.2017
14:39:18
не много, но на верстку может уйти тупо весь день)
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 алгоритмов