
Dmitry
04.12.2016
18:08:26

Alexander
04.12.2016
19:08:24
Короче так: есть n предметов, каждый имеет вес. Нужно разделить их на два множества так, чтобы xor по весам элементов этих множеств был одинаковый и размер первого множества был максимально возможным.
Веса - целые положительные.

Dmitry
04.12.2016
19:36:50

Google

Dmitry
04.12.2016
19:37:19
все равно вся эта дискретная хрень про рандом так или иначе. неплохой локальный минимум найдешь быстро

Alexander
04.12.2016
19:38:16
Да я вот думаю перебором. Хотел динамическое программирование приплести и как-то не вышло.

Dmitry
04.12.2016
19:39:51
ну и правильно. максимум на что бы я согласился - отжиг. но тот тоже к перебору скатывается если нужен хороший результат

Wystan
04.12.2016
19:59:05
я там выше ссылку привел на constraint programmin, deep search - не хочу. хочу бла-бла в чате, перебор и динмаческое программирование
и это скала-программисты?
одерски им компилятор дал, не хочу, хочу перебором…

Alexander
04.12.2016
20:40:23
Прости, мастер. Сроки горят.

Wystan
04.12.2016
21:37:38
А еще вопрос не по теме. Каким планировщиком пользуетесь в личной жизни? Я вот орг-мод для емакса использую + org-pomodoro, но думаю на что-то гуишное пересесть, чтобы можно было с телефона помодорки набивать.

James Tiberius Kirk ?
04.12.2016
21:40:24

Alexander
04.12.2016
21:40:36
я вообще не планирую жизнь, ке сера сера

Wystan
04.12.2016
21:40:50
ке пасо пасо

Lev
04.12.2016
22:09:05
Можно бота запилить, заинтегрироваться с емаксом и горя не знать
? в него кидать. Даже интерфейс не нужен. Пуши и клиенты на всех платформах в комплекте

Google

Aleksey
05.12.2016
03:09:09
Здравствуйте.

Dim
05.12.2016
03:15:18

Nikolay
05.12.2016
03:22:47
привет всем
здесь можно тупые вопросы по Scala задавать, если что? а то я только начал ее учить после питона

Юрий
05.12.2016
03:51:58
Просто задавай сразу вопрос

Nikolay
05.12.2016
03:57:20
есть функция чтения из Kafka, которая возвращает список записей заранее неизвестной длины - может, 1, может, 100, выглядит, допустим, так: consumer.poll(1000)
я хочу итератор, который при исчерпании текущего списка автоматом бы дергал эту функцию за следующей порцией и итерировался по ним
пока в готову пришло только вот что:
val records = Iterator.continually(consumer.poll(1000).toIterator).flatten
но я что-то не уверен, что оно правильно работает. Может кто подсказать, куда смотреть?
и да, если функция, например, возвращает пустой список долгое время - это все не превратится в вечный пустой цикл, жрущий проц, при попытке читать из итератора?

Mikhail
05.12.2016
05:26:51
А вы говорите скала джунов не бывает) Их все больше, скоро прям из детсада начнут вопросы задавать со всеми вытекающими)

Nikolay
05.12.2016
05:28:06
twitter futures, что ли?
я понимаю, что эту штуку можно написать руками легко довольно :)
мне интересно, есть ли сахар для этого, потому что в питоне, например, это реально одна-две строчки

Mikhail
05.12.2016
05:30:20
а какой тебе сахар то нужен? двое из ларца?

Nikolay
05.12.2016
05:31:11
ну, в питоне есть, например, itertools.chain.from_iterable

Mikhail
05.12.2016
05:35:55
https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html

Google

Nikolay
05.12.2016
05:37:01
спасибо, кэп
while (true), конечно, все решает, но вопрос был не про то
зачем мне это надо - затем, что я хочу делать records.take(10) в целях тестирования
а с while мне для этого потребуется внешний var counter

Mikhail
05.12.2016
05:38:58
Iterator.continually(consumer.poll(1000).toIterator) - это итератор итераторов. и flatten - у тебя подвиснет навечно

Nikolay
05.12.2016
05:39:27
почему подвиснет?

Mikhail
05.12.2016
05:39:27
хотя вру)

Nikolay
05.12.2016
05:39:34
не подвиснет ничего

Mikhail
05.12.2016
05:39:36
если там лейзи на выходе, то не подвиснет

Nikolay
05.12.2016
05:39:57
естественно, lazy
просто при таком синтаксисе я вот сомневаюсь, что он при исчерпании будет опять дергать poll()
или будет?

Mikhail
05.12.2016
05:40:27
будет
потому что continually принимает функцию

Aleksei
05.12.2016
05:40:46
вы чо в понедельник утром устроили тут! =)

Nikolay
05.12.2016
05:40:51
ну так функция - toIterator
а не poll()

Mikhail
05.12.2016
05:41:06
нет
consumer.poll(1000).toIterator
вот твой боди)

Google

Nikolay
05.12.2016
05:41:25
окей, то есть композицию будет дергать
спасибо, это уже полезно

Admin
ERROR: S client not available

Mikhail
05.12.2016
05:42:07
Iterator.continually(consumer.poll(1000).toIterator) =>
Iterator.continually( => {
return consumer.poll(1000).toIterator
})

Nikolay
05.12.2016
05:42:32
понятно

Mikhail
05.12.2016
05:42:36
только return в скале никогда не используй. это я для наглядности

Nikolay
05.12.2016
05:42:48
ну я понял

Mikhail
05.12.2016
05:43:10

Nikolay
05.12.2016
05:43:25
окей
тогда, получается, мой код верен?
flatten же не испортит малину?
то есть flatten может работать, как chain для итераторов в питоне, например?

Mikhail
05.12.2016
05:45:59
лейзи не испортит. я не знаю как работает чейн для итераторов в питоне, там вечно названия через жопу)

Nikolay
05.12.2016
05:46:18
ну, он просто клеит итераторы в один большой
нормальные названия там, не гони :)

Mikhail
05.12.2016
05:46:41
но если очень сомневаешься, то ты можешь посмотреть исходный код flatten и наверное все встанет на свои места)

Nikolay
05.12.2016
05:47:38
у меня еще пока есть проблемы с легким чтением кода на Scala, с кучей трейтов и всякой магией в виде +-A
но учусь)
для меня апофеоз ада - это я сейчас гляжу на finch после всех императивных веб-фреймворков и костылей

Aleksei
05.12.2016
05:48:51
это и для меня апофеоз ада чо уж )

Google

Nikolay
05.12.2016
05:49:31
ну а альтернатив-то нет толком

Aleksei
05.12.2016
05:49:41
акка хттп

Nikolay
05.12.2016
05:49:45
нужен мегалегкий фреймворк для микросервиса
ну, это тоже еще освоить надо
акторы, вот это все :) еще не дошел

Aleksei
05.12.2016
05:50:23
акка хттп не обязательно акторы
просто там в кишках акторы

Daniel
05.12.2016
05:50:38
этих фреймворков как грязи

Aleksei
05.12.2016
05:50:46
ага
но он именно финч выбрал

Grigory
05.12.2016
05:50:54
лифт