|
"Для каждого" обход не сначала | ☑ | ||
---|---|---|---|---|
0
Anttonnio
22.03.16
✎
09:43
|
Добрый день!
А подскажите, пожалуйста, можно ли начать обход Для каждого не сначала а с середины? Поясню: У меня есть обработка, которая по моим подсчетам будет проводить вычисления несколько дней. Я его решил запускать на ночь, пока компьютер свободен, а промежуточный результат сохранять, чтобы потом продолжать с места где остановился Суть Следующая: Обход Матрицы больших размеров M*N Получается Для Каждого mi Из M Цикл для Каждого ni из N Цикл Если ОбходНеСначала тогда ni = ПоследняСохраненнаяСтрока; ОбходНеСначала = Ложь; Продолжить; КонецЕсли; ............. КонецЦикла; КонецЦикла; такой способ не дал результатов Или единственный способ это обходит второй цикл пока не подойдем к тому значению, которое было вчера? Для Каждого ni из N Цикл Если ОбходНеСначала и ni <> ПоследняСохраненнаяСтрока тогда Продолжить; Иначе ОбходНеСначала = Ложь; Продолжить; КонецЕсли; |
|||
1
Molinor
22.03.16
✎
09:44
|
Использовать другой цикл.
Пока ... Цикл |
|||
2
mehfk
22.03.16
✎
09:44
|
Используй цикл со счетчиком
|
|||
3
zak555
22.03.16
✎
09:45
|
что за обработка, работающая несколько дней ?
|
|||
4
Anttonnio
22.03.16
✎
09:59
|
(3) Чисто математическая Обход матрицы примерно 7000*7000
(1) (2) "Для каждого" как-то удобнее использовать в дальнейшем, тогда буду использовать второй вариант который я предложил |
|||
5
ObjectRelation Model
22.03.16
✎
10:01
|
(4) второй вариант тоже бред
|
|||
6
mehfk
22.03.16
✎
10:01
|
>> "Для каждого" как-то удобнее использовать в дальнейшем
3,14здец логика. |
|||
7
Anttonnio
22.03.16
✎
10:01
|
(5) Почему?
|
|||
8
ObjectRelation Model
22.03.16
✎
10:02
|
(7) потому что пустая трата времени на цикл
|
|||
9
Anttonnio
22.03.16
✎
10:03
|
(6) не вижу разницы между счетчиком и моим способом? да в первый проход надо будет пробежаться по второму циклу, но в рамках задачи это время будет не значительным, следовательно им можно пренебречь
|
|||
10
ObjectRelation Model
22.03.16
✎
10:03
|
заинтриговал, что за задача
|
|||
11
Карупян
22.03.16
✎
10:03
|
Для счетчик = 10 По 100 Цикл
|
|||
12
Timon1405
22.03.16
✎
10:04
|
так что мешает запоминать в константе последнюю обработанную за день строчку?
|
|||
13
Anttonnio
22.03.16
✎
10:10
|
(12) А что с этой строкой дальше делать? ведь второй обход цикла должен начаться с первого значения
|
|||
14
aleks_default
22.03.16
✎
10:11
|
(9) суп тоже вилкой хлебаешь?
|
|||
15
Anttonnio
22.03.16
✎
10:16
|
(14) И все таки обойти цикл с 7000 тыс записями с функцией "продолжить" не так затратно, А писать в каждом вызове n[i-1].Поле1 куда менее интересно, чем просто ni.Поле1
не вижу в этом особо чего не целесообразного |
|||
16
Карупян
22.03.16
✎
10:17
|
(15) Делай вначале ni = n[i-1]
|
|||
17
DDwe
22.03.16
✎
10:23
|
(15) "А писать в каждом вызове n[i-1].Поле1 куда менее интересно, чем просто ni.Поле1 " - Капец, куда катится мир....
|
|||
18
hhhh
22.03.16
✎
10:28
|
(16) это не по-пацански как-то
|
|||
19
sash-ml
22.03.16
✎
10:34
|
(15) в конструкции Для каждого, под капотом используется итератор. А он не доступен в контексте разработчика. Так что только через индекс.
|
|||
20
Mikeware
22.03.16
✎
10:34
|
М-дя...
Говорили мне, что "1986-х ты еще добрым словом вспоминать будешь", а я не верил... наверное, дело все-таки в константе? |
|||
21
Drac0
22.03.16
✎
10:44
|
Чо вы пристали? Человек - художник. Он так видит!
|
|||
22
Kiks
22.03.16
✎
10:57
|
Я, конечно, извиняюсь, но что это за задача такая в 1С, где надо матрицу 7000*7000 обходить?
|
|||
23
senior
22.03.16
✎
11:06
|
а потом говорят в 1с г**нокод
|
|||
24
АдинС
22.03.16
✎
11:36
|
(20) Так ТС же 89-й, по карточке...) Но по логике я с тобой согласен..)
|
|||
25
VladZ
22.03.16
✎
11:45
|
(0) "У меня есть обработка, которая по моим подсчетам будет проводить вычисления несколько дней." - что ты там делаешь? Пытаешь писать программу для игры в Го?
|
|||
26
Mikeware
22.03.16
✎
11:47
|
(24) дык я и говорю, по сравнению с ТС - 1986 были довольно умными ребятками...
"количество разума на земле - константа. а население растет..."© |
|||
27
Mikeware
22.03.16
✎
11:48
|
(25) пытается писать программу-г...о
|
|||
28
Tateossian
22.03.16
✎
12:05
|
(0) Разбей на несколько потоков.
|
|||
29
АдинС
22.03.16
✎
12:51
|
(28) В таком случае цикл для каждого придется не только начинать с определенного места, но еще и останавливать тоже в определенном.... Задача усложниться в два раза...))
|
|||
30
lodger
22.03.16
✎
13:54
|
рановато для пятничной ветки
|
|||
31
Лефмихалыч
22.03.16
✎
14:04
|
(0) цикл со счетчиком используй, Люк
|
|||
32
Kiks
22.03.16
✎
14:24
|
Можно еще на этапе заполнения матрицы влепить колонку с типом УИД, а потом при обходе проверять. Только зачем? Чем счетчик не по нраву?
|
|||
33
АНДР
22.03.16
✎
14:50
|
Предложу не прерывать цикл, а делать в нем паузу посредством Вопрос(,,Таймаут), который будет вызываться по проверке ТекущаяДата.
|
|||
34
Anttonnio
22.03.16
✎
15:53
|
Вообщем я так понял, что нельзя сразу сделать.
Сделал тогда как писал, первый обход в холостую до последнего места останова. Задача моя, какая разница какая у неё цель? поливать людей грязью каждый горазд) Вы ни разу не обосновали нецелесообразность моего метода - я и сам знал, что холостой обход потребует времени, но ничтожность этого времени можно пренебречь, чем мучаться с квадратными скобками по ходу всей обработки |
|||
35
Fish
22.03.16
✎
15:54
|
(34) Можно. Но для этого надо использовать правильный цикл, и не заниматься идиотизмом.
|
|||
36
Drac0
22.03.16
✎
15:55
|
(34) Т.е. (16) ты осознать не смог?
|
|||
37
lera01
22.03.16
✎
15:58
|
(33) А в компьютере сидит какой-то человечек, который страдает от необходимости рисовать квадратные скобки при каждом выполнении цикла? Напиши ты нормальный цикл с итераторами по каждому измерению.
|
|||
38
DDwe
22.03.16
✎
16:29
|
(34) Вот что значит, полное отсутствие образования. Что ЕГ с людьми делает, ужас.
|
|||
39
Anttonnio
22.03.16
✎
17:22
|
(38) Какие вы все тут злые))))
|
|||
40
mehfk
22.03.16
✎
20:34
|
(39) А ты, стало быть Д'Артаньян?
|
|||
41
Garykom
гуру
22.03.16
✎
20:42
|
ТС прикинь если сразу в процессе цикла "Для Каждого" по коллекции "обработанные значения" удалять из коллекции...
То прерывание и последующий запуск снова цикла "Для Каждого" на этой порезанной коллекции даст требуемый сабж. |
|||
42
Garykom
гуру
22.03.16
✎
20:43
|
(41)+ только удаляй в конце "обработки" перед "КонецЦикла;"
|
|||
43
Scandsv
22.03.16
✎
21:09
|
Вот я тоже не гений.
Но понимаю, что без постановки задачи, трудно решение предложить. Но. 1. Тупой перебор 49 млн. элементов по нескольку раз - 100% неэффективен. И люди тебе и говорят, что интересна задача, которая решается только перебором значений. 2. Кто мешает использовать цикл "Для.... По..." и начинай его с прерванного места? |
|||
44
Scandsv
22.03.16
✎
21:10
|
(34) так задачу у тебя никто и не отбирает.
Просто интересно, что за задача? |
|||
45
Drac0
22.03.16
✎
22:10
|
(43) 2. скваребракетфобия.
|
|||
46
Scandsv
22.03.16
✎
22:24
|
(45) Вот прям скопировал и себе сохраню....:)
|
|||
47
Anttonnio
23.03.16
✎
10:10
|
(44) (43) Почему не эффективен?) очень даже эффективен.
Скажем так получение статистических данных. и того что накапливается за ночь, мне достаточно, чтобы сделать некоторые выводы и переформировать обработку, чтобы запустить её с нуля. А когда процесс будет отлажен, то я буду готов подождать достаточного кол-ва времени для получения полноценного результата) З.Ы. это я сейчас ограничился 7к*7к а можно взять данных и на 15*15) по циклу "Для.... По..." уже предлагали, но я отказался, хотя идея ni = n[i-1] была стоящей Всё это не важно как я решаю задачу, цель поста была выяснить варианты продолжения перебора коллекции с конкретного места. Ответы я получил. Всем Спасибо за участие!) Дальше можете продолжить уже обсуждение на свободные темы |
|||
48
f_vadim
23.03.16
✎
10:29
|
(47) перевожу "я ни слова не понял что вы тут наговорили, разбираться не хочу, поэтому сливаюсь"
|
|||
49
Mikeware
23.03.16
✎
10:31
|
а все-таки интересно, что он считал? поля методом сеток?
|
|||
50
dmpl
23.03.16
✎
10:40
|
(0) Для Каждого означает, что цикл выполняется для каждого элемента коллекции. Более того, не факт что порядок следования элементов в этом цикле будет каждый раз один и тот же ;) Так что частичный "Для каждого" мало того что противоречит логике, но даже если удастся это реализовать - не факт что даст правильный результат.
|
|||
51
Garykom
гуру
23.03.16
✎
11:20
|
(49) больше похоже на битмайнинг в фоне пока компы простаивают...
|
|||
52
Drac0
23.03.16
✎
11:23
|
(51) битмайнинг на 1с? Гы
|
|||
53
Mikeware
23.03.16
✎
11:28
|
(51) я тут намедни сыну показывал разложение по фурье. Пытался показать расчет тепловых полей. сходу не осилил. грустно осознавать себя поглупевшим до состояния первокурсника.
|
|||
54
1Cancer
23.03.16
✎
11:30
|
(0) для каждого ...
внутренний итератор + + + волшебное слово continue. и того имеем цикл для каждого который пропускает ряд итераций :D по условию например. |
|||
55
1Cancer
23.03.16
✎
11:31
|
(54) а матрица у тебя где хранится эта?
|
|||
56
Garykom
гуру
23.03.16
✎
11:34
|
(53) смешнее ситуация была, я тогда только на заочке восстановился и попросил друзей недавно закончивших очку универа помочь решить интегралы... так после 1,5 года после универа они уже не помнили совсем как их решать :)
|
|||
57
Mikeware
23.03.16
✎
11:39
|
(56) ну дык я кагбэ программированием все-таки занимаюсь...
а задания по вышке в прошлом году делал (для одной сотрудницы) чисто ради прикола - 2/3 решил не заглядывая в справочники, для остатков хватило википедии. Хотя в профессиональной деятельности мало что использовал. |
|||
58
PR третий
23.03.16
✎
11:42
|
Простой вопрос.
Абсолютно исчерпывающий ответ в (1). И полсотни постов еще о чем-то. Рукалицо |
|||
59
DDwe
23.03.16
✎
11:46
|
(58) Он не хочет, скобочки не любит.
|
|||
60
PR третий
23.03.16
✎
11:48
|
(59) Раз дурак, пусть использует, че.
Для каждого не гарантирует даже последовательность выборки, так что пусть набивает шишки лбом, раз слушать не хочет. Ветка в любом случае исчерпала себя после первого поста. |
|||
61
Живой Ископаемый
23.03.16
✎
11:58
|
2(47) Нужно из коллекции просто удалить те элементы, которые уже отработаны. Сделать это не трудно
|
|||
62
DDwe
23.03.16
✎
12:01
|
(61) Нужно делать все по уму , а не через анальное отверстие.
|
|||
63
Живой Ископаемый
23.03.16
✎
12:03
|
2(62) А Волга в какое море впадает?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |