
Vladimir
12.12.2017
14:45:01

Evgeny
12.12.2017
14:45:06
не факт, что в этой покажут

Alex
12.12.2017
14:45:11
скала же JVM

Dmitry
12.12.2017
14:45:12
Может кто конкретнее задачу объяснить?

Google

Dmitry
12.12.2017
14:45:17
А то я по тексту не понял

Slava
12.12.2017
14:45:33
вот вся суть с примером

Dmitry
12.12.2017
14:46:52
Фаил содержит кучу строк
И в каждой строке 5 цифр
В которых почему-то всегда одна цифра в скобочках

Slava
12.12.2017
14:47:23
нет-нет, в файле куча строк, в каждой из которых по одному числу
в общем

Dmitry
12.12.2017
14:47:55
Окей.
Т.е. в файле по одному числу.
Я фаил еще не смотрел

Slava
12.12.2017
14:48:29
у тебя есть массив со всякими числами типа -10, 560 и т.д.
ты начинаешь с нулевого элемента и зависимости от того, что в нем написано "прыгаешь" на такой индекс, при этом инкрементишь на единицу то значение, откуда прыгаешь

Alexey
12.12.2017
14:48:48
а индексы с ноля?

Slava
12.12.2017
14:48:52
заканчиваешь прыгать по этому массиву тогда, когда выбираешься за его пределы

Google

Slava
12.12.2017
14:48:57
да

Alexey
12.12.2017
14:51:27
и суть в чем? время померять, когда он бегать закончит?
или сколько прыжков?

Slava
12.12.2017
14:51:38
сколько прыжков

Alexey
12.12.2017
14:52:35
начинать с нулевого?

Slava
12.12.2017
14:55:10
а начинался разговор вообще с того, что эрланг как-то очень плохо справляется с такого рода задачами (про скалу и jvm не понял. скала не иммутабельная что ли? если там все иммутабельно, то причем тут vm?).
я подумал о том что, в рубях и питоне такие проблемы решают с помощью c extensions. отдельный сервис - наверное можно, но это все немного усложняет и меня пугает, что там в итоге будет оверхед на коммуникацию с этим сервисом. порты, я так понял, вообще по stdin/stdout общаются с другими процессами, это как-то совсем стремно.

Alexey
12.12.2017
14:55:46
прыгать надо с нулевого индекса?

Slava
12.12.2017
14:56:24
начинаешь с нулевого индекса, да.
если в нем написано 2, то ты прыгаешь на current index + 2, при этом в current index меняешь значение с 2 на 3
(это я описываю задачу для первой части, во второй там еще декремент и if добавляется, соотвественно кол-во пробежок по массиву сильно растет)

Dmitry
12.12.2017
15:01:19
0
2
2
Итак
Значит нужно потом в массиве чтобы было 0 == 1 2 == 1 4 == 1
Правильно?

Evgeny
12.12.2017
15:03:15
на моем древнем компе программа на языке D считает какие-то тысячные доли
у меня ответ 359348

Slava
12.12.2017
15:03:51
ответ должен быть 27688760 steps

Evgeny
12.12.2017
15:04:05
хех, может ошибся

Slava
12.12.2017
15:04:07
на сайтике ответ сверяется, так что это правильный ответ :)
а

Google

Slava
12.12.2017
15:04:20
стоп
извини
все правильно
27688760 это для второй части

Evgeny
12.12.2017
15:05:20
вторая часть?
где она?

Slava
12.12.2017
15:06:02
а вообще все здесь:
https://adventofcode.com/2017/day/5
только если зарегаетесь, то не забудьте что вам сгенерится свой файлик с числами, соответственно и ответ будет другой

Alexey
12.12.2017
15:07:33
так. у меня тоже 359349

Slava
12.12.2017
15:09:39
359348 должно быть)

Evgeny
12.12.2017
15:13:05
для второй части
steps = 27688760
real 0m0.148s
user 0m0.149s
sys 0m0.000s

Evgeny
12.12.2017
15:13:31
но это D, фактически по скорости как плюсы
программа крошечная
d
import std.stdio;
import std.conv;
import std.array;
import std.algorithm;
void main() {
auto list = File("input5.txt").byLine.map!(l => l.to!int).array;
int p = 0;
int steps = 0;
do {
auto offset = list[p];
list[p] += offset > 2 ? -1 : 1;
p += offset;
steps++;
} while(p >=0 && p < list.length);
writefln("steps = %s", steps);
}

Slava
12.12.2017
15:15:23
вот я и говорю, на го у меня тоже все очень быстро пробегает
кстати, а как в D с многопоточностью?

Evgeny
12.12.2017
15:16:10
с многопоточностью нормально
а вот сборщик мусора ужасен
и это все портит на корню
или ты про многопоточное выполнение этой задачи?

Google

Evgeny
12.12.2017
15:18:56
в D есть встроенные корутины ака файберы, кооперативная многозадачность
я вот с D на эликсир пытаюсь перелезть ибо достали глюки и сложность отладки
у меня в проекте тысяч 10 таких корутин вертится
должно отлично лечь на эликсировские процессы
но D куда менее многословен
парсинг файла с числами - одна строка:
auto list = File("input5.txt").byLine.map!(l => l.to!int).array;

Slava
12.12.2017
15:27:29

Evgeny
12.12.2017
15:28:07
особо не течет, тормозной

Slava
12.12.2017
15:28:28
а, паузы слишком длинные?

Evgeny
12.12.2017
15:28:55
не обязательно, просто много времени отнимает

Admin
ERROR: S client not available

Evgeny
12.12.2017
15:29:19
скажем 20% времени работы программы - сборка мусора. Это нормально?
паузы можно твикать туда-сюда
но у меня таки тек
правда непонятно GC течет или сторонняя либа
хер отладишь это говно

Slava
12.12.2017
15:31:10
понятно, спасибо

Evgeny
12.12.2017
15:31:27
но GC тоже может течь, ибо Boehm–Demers–Weiser garbage collector
но все равно терзаюсь. в фениксе слишком много магии на мой вкус
хер поймешь как оно работает

Google

Evgeny
12.12.2017
15:35:53
ну и на самом эликсире простые вещи пишутся сложно, разве что паттерн-матчинг радует

Slava
12.12.2017
15:36:25
в го с магией все сильно проще, все как на ладони начиная с стдлибы.
но вот писать на нем в целом - никакого удовольствия, почему-то

Evgeny
12.12.2017
15:37:01
на D писать очень приятно, имхо самый дружелюбный язык в плане синтаксиса

Marat
12.12.2017
15:38:54

Slava
12.12.2017
15:39:45
при этом какой-то альтернативы го я не вижу вменяемой.
раст куда-то не в ту степь совсем, не очень интересно возиться с ownership'ом и прочим, мне бы именно какой приятный язык с GC, параллелизмом и нормальной производительностью.
java и друзья (и родственники в лице дотнета) - спасибо, но не хочется.

Evgeny
12.12.2017
15:40:17
ну попробуй D и фреймворк vibe.d для параллелизма

Slava
12.12.2017
15:40:20
так вот ты говоришь что у D проблемы есть такие :)

Evgeny
12.12.2017
15:40:43
Ну смотря какая задача
мой проект работает, нагрузку держит

Marat
12.12.2017
15:41:52
D за 16 лет как-то вообще не взлетел, как был языком для энтузиастов отдельных так и остался

Evgeny
12.12.2017
15:42:04
ну не совсем так
популярность растет
активно разрабатывается
коммьюнити очень отзывчивое
охотно отвечает на вопросы новичков

Slava
12.12.2017
15:43:13

Evgeny
12.12.2017
15:43:15
потихоньку фичи из D переползают в плюсы :)
кто-то вон игры пилит

Slava
12.12.2017
15:44:20
я помню что опенсорсный клон morrowind'a пилился сначала на D, а потом все переписали на с++

Evgeny
12.12.2017
15:44:48
ага, в те времена D вообще неюзабельный был
сейчас-то почти любое говно можно найти, и в отличие от плюсов есть вменяемый пакетный менеджер
на плюсы я уже никогда добровольно не вернусь