|
Придумать формулу соответствия | ☑ | ||
---|---|---|---|---|
0
Злопчинский
27.01.21
✎
14:24
|
есть множество из нескольких кортежей
(23,24,25,26),(27,28,29),(30,31,32,33),(34,35,36,37),(38,39,40),(41,42,43,44) то есть по количеству чисел в кортеже 4-3-4-4-3-4 итд. . можно ли придумать формулу с простыми арифметическими действиями, которая бы для любого числа (начиная с 23) возвращала первое значение соответсвующего кортежа..? то есть в примере - какое бы число из ряда мы не взяли - должно получиться одно из 23,27,30,34,38,41 итд... ? |
|||
1
Злопчинский
27.01.21
✎
14:28
|
Простые арифметические действия - плюс-минус-умножить-делить-цел-окр-делитьнацело%...
|
|||
2
Mikeware
27.01.21
✎
14:30
|
число минус номер в кортеже?
|
|||
3
Злопчинский
27.01.21
✎
14:31
|
(2) номер в кортеже явно не задан, исходная последовательность - просто числа...
23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44 . сорри за неточное описание первоначальное |
|||
4
Злопчинский
27.01.21
✎
14:33
|
.. и мы знаем что числовой ряд можно разбить на кортежи по правилу "4-3-4"
|
|||
5
ViSo76
27.01.21
✎
14:33
|
(3) Через соответствие и массив ссылок в виде значения легко решить, зачем формула?
|
|||
6
Mikeware
27.01.21
✎
14:33
|
(3) ну тогда возвращать всегда 1, и считать, что кортеж начинается с этого числа
|
|||
7
Злопчинский
27.01.21
✎
14:35
|
(5) это крайний вариант, но это бяково, так как требует задния дополнительных данных явно. это хреново, требует "квалификации"
|
|||
8
Злопчинский
27.01.21
✎
14:35
|
(6) сорри. я тупой, ничего не понял...
|
|||
9
Злопчинский
27.01.21
✎
14:37
|
можно считать что числовой ряд начинается с 1, если разбить на кортежи то тоже получится "4-3-4"...
|
|||
10
Mikeware
27.01.21
✎
14:39
|
(цел((число-23)%11)-7)%4+(цел((число-23)%11)-4)%3+(цел((число-23)%11))%4
|
|||
11
ViSo76
27.01.21
✎
14:40
|
(7) датам данных то с гулькин нос
Число в кортежах ограниченное значение в виде ключа, ну а массив ссылок на кортежи так же не шибко много отдирает. Начальное заполнение может быть не быстрым, а вот добавление кортежа быстрое, поиск очень быстрый - одни плюсы, нужна память можно поджать в хранилище ), потом развернуть при поиске |
|||
12
Ненавижу 1С
гуру
27.01.21
✎
14:41
|
(0) нужно знать периодичность, дальше арифметика
|
|||
13
Mikeware
27.01.21
✎
14:44
|
(12) периодичность - 11. внутри этого периода - три кортежа
|
|||
14
Злопчинский
27.01.21
✎
14:55
|
(10) не катит
Процедура Сформировать(ПараметрЧисло) врем1 = _GetPerformanceCounter(); Результат = (цел((ПараметрЧисло-23)%11)-7)%4+(цел((ПараметрЧисло-23)%11)-4)%3+(цел((ПараметрЧисло-23)%11))%4; Сообщить("число= "+параметрЧисло+", первое число кортежа= "+Результат+", время расчета= "+(_GetPerformanceCounter()-врем1)/1000); КонецПроцедуры // Сформировать . число= 23, первое число кортежа= -4, время расчета= 0 число= 24, первое число кортежа= -1, время расчета= 0 число= 25, первое число кортежа= -1, время расчета= 0.001 число= 26, первое число кортежа= 2, время расчета= 0 число= 27, первое число кортежа= -3, время расчета= 0 число= 28, первое число кортежа= 0, время расчета= 0 число= 29, первое число кортежа= 3, время расчета= 0 число= 30, первое число кортежа= 3, время расчета= 0 число= 31, первое число кортежа= 2, время расчета= 0 число= 32, первое число кортежа= 5, время расчета= 0 число= 33, первое число кортежа= 5, время расчета= 0 число= 34, первое число кортежа= -4, время расчета= 0 число= 35, первое число кортежа= -1, время расчета= 0 число= 36, первое число кортежа= -1, время расчета= 0 число= 37, первое число кортежа= 2, время расчета= 0 число= 38, первое число кортежа= -3, время расчета= 0.001 число= 39, первое число кортежа= 0, время расчета= 0 число= 40, первое число кортежа= 3, время расчета= 0 число= 41, первое число кортежа= 3, время расчета= 0 число= 42, первое число кортежа= 2, время расчета= 0 число= 43, первое число кортежа= 5, время расчета= 0.001 число= 44, первое число кортежа= 5, время расчета= 0 |
|||
15
8 bit
27.01.21
✎
14:56
|
Т.е. получается, что берем 1-е значение и это будет первое значение первого кортежа, потом надо пропустить 3 значения и вернуть 4-е, потом надо пропустить 2 значения и вернуть 3-е, потом 4-е и цикл повторить.
23 х х х 27 х х 30 х х х 34 х х х 38 х х 41 4________3______4________4________3______4 и т.д. ? |
|||
16
Garykom
гуру
27.01.21
✎
14:59
|
(0) Нет, нельзя
|
|||
17
Злопчинский
27.01.21
✎
15:00
|
(15) без циклов. операциями арифметическими.
. для упрощения можно считать, что числовой ряд с 1 начинается (4)1,2,3,4 - д.б. 1 (3)5,6,7 - д.б. 5 (4)8,9,10,11 - д.б. 8 - (4)12,13,14,15 - д.б. 12 (3)16,17,18 - д.б. 16 (4)19,20,21,22 - д.б. 19 - (4)23,24,25,26 - д.б. 23 (3)27,28,29 - д.б. 27 (4)30,31,32,33 - д.б. 30 - итд |
|||
18
Злопчинский
27.01.21
✎
15:01
|
(16) должно получиться..
тут же вроде как простая периодчность... |
|||
19
Garykom
гуру
27.01.21
✎
15:02
|
||||
20
Злопчинский
27.01.21
✎
15:04
|
пусть даже не одним оператором типа как в (10), пусть несколькими ;-)
|
|||
21
RomanYS
27.01.21
✎
15:07
|
(17)
Функция _(Ч) Ост = (Ч-1)%11+1; Нач = ?(Ост >= 8, 8, ?(Ост >= 5, 5, 1)); Возврат Ч - Ост + Нач; КонецФункции // () |
|||
22
Garykom
гуру
27.01.21
✎
15:07
|
(20) Можно попробовать через https://ru.wikipedia.org/wiki/Периодическая_функция
Только какую подобрать под 4-3-4-4-3-4-4-... и главное как ее без цикла считать? |
|||
23
Garykom
гуру
27.01.21
✎
15:08
|
(21) Ты цикл нашел?
|
|||
24
Garykom
гуру
27.01.21
✎
15:10
|
(23)+ 11, 22, 33 и т.д. типа?
|
|||
25
Mikeware
27.01.21
✎
15:10
|
(22) считать просто - как %11
|
|||
26
Garykom
гуру
27.01.21
✎
15:11
|
(25) согласен %11
|
|||
27
Злопчинский
27.01.21
✎
15:11
|
(21)
число= 1, первое число кортежа= 1, время расчета= 0 число= 2, первое число кортежа= 1, время расчета= 0 число= 3, первое число кортежа= 1, время расчета= 0 число= 4, первое число кортежа= 1, время расчета= 0 - число= 5, первое число кортежа= 5, время расчета= 0 число= 6, первое число кортежа= 5, время расчета= 0 число= 7, первое число кортежа= 5, время расчета= 0 - число= 8, первое число кортежа= 8, время расчета= 0 число= 9, первое число кортежа= 8, время расчета= 0 число= 10, первое число кортежа= 8, время расчета= 0 число= 11, первое число кортежа= 8, время расчета= 0 число= 12, первое число кортежа= 12, время расчета= 0 число= 13, первое число кортежа= 12, время расчета= 0 число= 14, первое число кортежа= 12, время расчета= 0 число= 15, первое число кортежа= 12, время расчета= 0 - число= 16, первое число кортежа= 16, время расчета= 0 число= 17, первое число кортежа= 16, время расчета= 0 число= 18, первое число кортежа= 16, время расчета= 0 - число= 19, первое число кортежа= 19, время расчета= 0 число= 20, первое число кортежа= 19, время расчета= 0 число= 21, первое число кортежа= 19, время расчета= 0 число= 22, первое число кортежа= 19, время расчета= 0 - число= 23, первое число кортежа= 23, время расчета= 0.001 число= 24, первое число кортежа= 23, время расчета= 0 число= 25, первое число кортежа= 23, время расчета= 0 число= 26, первое число кортежа= 23, время расчета= 0 - число= 27, первое число кортежа= 27, время расчета= 0 число= 28, первое число кортежа= 27, время расчета= 0 число= 29, первое число кортежа= 27, время расчета= 0 - число= 30, первое число кортежа= 30, время расчета= 0 число= 31, первое число кортежа= 30, время расчета= 0 число= 32, первое число кортежа= 30, время расчета= 0 число= 33, первое число кортежа= 30, время расчета= 0 - число= 34, первое число кортежа= 34, время расчета= 0 число= 35, первое число кортежа= 34, время расчета= 0 число= 36, первое число кортежа= 34, время расчета= 0 число= 37, первое число кортежа= 34, время расчета= 0 - число= 38, первое число кортежа= 38, время расчета= 0 число= 39, первое число кортежа= 38, время расчета= 0 число= 40, первое число кортежа= 38, время расчета= 0 - число= 41, первое число кортежа= 41, время расчета= 0 число= 42, первое число кортежа= 41, время расчета= 0 число= 43, первое число кортежа= 41, время расчета= 0 число= 44, первое число кортежа= 41, время расчета= 0 |
|||
28
Злопчинский
27.01.21
✎
15:12
|
(21) результат верный.
|
|||
29
Злопчинский
27.01.21
✎
15:13
|
есть варианты "проще", без условий...?
|
|||
30
Ненавижу 1С
гуру
27.01.21
✎
15:14
|
R = (N-(N-1)%11)+((N-1)%11-(N-1)%11%7)+((N-1)%11-(N-1)%11%4)*(1-((N-1)%11-(N-1)%11%7)/7);
|
|||
31
Малыш Джон
27.01.21
✎
15:16
|
(0)А последовательность кортежей любая или всегда 4-3-4-4-3-4-... ?
|
|||
32
Злопчинский
27.01.21
✎
15:17
|
(30) Результат верный
число= 1, первое число кортежа= 1, время расчета= 0 число= 2, первое число кортежа= 1, время расчета= 0 число= 3, первое число кортежа= 1, время расчета= 0 число= 4, первое число кортежа= 1, время расчета= 0 число= 5, первое число кортежа= 5, время расчета= 0 число= 6, первое число кортежа= 5, время расчета= 0 число= 7, первое число кортежа= 5, время расчета= 0 число= 8, первое число кортежа= 8, время расчета= 0 число= 9, первое число кортежа= 8, время расчета= 0 число= 10, первое число кортежа= 8, время расчета= 0 число= 11, первое число кортежа= 8, время расчета= 0 число= 12, первое число кортежа= 12, время расчета= 0.001 число= 13, первое число кортежа= 12, время расчета= 0 число= 14, первое число кортежа= 12, время расчета= 0 число= 15, первое число кортежа= 12, время расчета= 0.001 число= 16, первое число кортежа= 16, время расчета= 0 число= 17, первое число кортежа= 16, время расчета= 0 число= 18, первое число кортежа= 16, время расчета= 0 число= 19, первое число кортежа= 19, время расчета= 0 число= 20, первое число кортежа= 19, время расчета= 0 число= 21, первое число кортежа= 19, время расчета= 0 число= 22, первое число кортежа= 19, время расчета= 0 число= 23, первое число кортежа= 23, время расчета= 0 число= 24, первое число кортежа= 23, время расчета= 0 число= 25, первое число кортежа= 23, время расчета= 0 число= 26, первое число кортежа= 23, время расчета= 0.001 число= 27, первое число кортежа= 27, время расчета= 0 число= 28, первое число кортежа= 27, время расчета= 0 число= 29, первое число кортежа= 27, время расчета= 0 число= 30, первое число кортежа= 30, время расчета= 0 число= 31, первое число кортежа= 30, время расчета= 0 число= 32, первое число кортежа= 30, время расчета= 0 число= 33, первое число кортежа= 30, время расчета= 0 число= 34, первое число кортежа= 34, время расчета= 0 число= 35, первое число кортежа= 34, время расчета= 0 число= 36, первое число кортежа= 34, время расчета= 0 число= 37, первое число кортежа= 34, время расчета= 0 число= 38, первое число кортежа= 38, время расчета= 0.001 число= 39, первое число кортежа= 38, время расчета= 0 число= 40, первое число кортежа= 38, время расчета= 0 число= 41, первое число кортежа= 41, время расчета= 0 число= 42, первое число кортежа= 41, время расчета= 0 число= 43, первое число кортежа= 41, время расчета= 0 число= 44, первое число кортежа= 41, время расчета= 0.001 |
|||
33
RomanYS
27.01.21
✎
15:17
|
(29) Без условий или без "?(,,)"?
Без условий можно массив предварительно подготовить и использовать {1,1,1,1,5,5,5,8,8,8} |
|||
34
Злопчинский
27.01.21
✎
15:19
|
(31) в данном случае - 4-3-4
только, зараза, в ряду чисел кое-где встречаются числа не принадлежащие ни одному кортежу.. ;-) например, с 1 до 44 идет 4-3-4, потом блин 45 которое считается внекортежным, с 46 снова 4-3-4 |
|||
35
Злопчинский
27.01.21
✎
15:20
|
(33) можно, но трабла в "подготовить и использовать", это требует "квалификации" и ручных действий.
вариант (30) предпочтительнее |
|||
36
RomanYS
27.01.21
✎
15:21
|
(34) полки решил пронумеровать?
|
|||
37
Злопчинский
27.01.21
✎
15:21
|
задача тупо складская 4-3-4 - это стеллажи, по фронту на стеллаже "4яч-3яч-4яч"
|
|||
38
Злопчинский
27.01.21
✎
15:21
|
(36) если бы... пронумеровано уже.
|
|||
39
Злопчинский
27.01.21
✎
15:22
|
причем кривовато...
|
|||
40
RomanYS
27.01.21
✎
15:23
|
(35) А если ты понял (30) тогда - да, проще :)))
Сможешь же поправить формулу (30) для кортежей, например, 2-3-4-5? |
|||
41
Злопчинский
27.01.21
✎
15:25
|
https://www.screencast.com/t/tgcwDi3BO - расстановка стеллажей, сейчас показано как есть сейчас. нумеровали от стены (67яч). с учетом того, что стеллажи могут быть еще наращиваться влево по картинке от 22 вниз по числам.
. пронумеровали криво, нумеровать надо было с 68яч, потому что 22 яч которая сейчас на картинке - д.б. тоже проходом если стеллажи доставлять будут... |
|||
42
Злопчинский
27.01.21
✎
15:26
|
по факту - задача расчета номера резервной ячейки, которая общая для нескольких резервных ячеек
|
|||
43
Злопчинский
27.01.21
✎
15:28
|
исходя из картинки в (41) ячейка 22 -будет проходом, и нумерация получится от 0 до 21 тоже по принципу 4-3-4..
а это хреново, обычно ячейка 00 - нумеруется буферная, а тут будет занята под рабочую ячейку - НО ЭТО НЕПРИНЦИПИАЛЬНО. . |
|||
44
Mikeware
27.01.21
✎
15:29
|
(39) а в чем нужда именно арифметики?
|
|||
45
Garykom
гуру
27.01.21
✎
15:30
|
(44) бесконечный склад ))
|
|||
46
Злопчинский
27.01.21
✎
15:33
|
Теперь в формулу (30) надо внести периодичность что
1. числовой ряд начинается с 0, ячейки 22 и 45 - "внекортежные" 2. и рассчитывать по получившемуся первому номеру кортежа соседние вверх и соседние вниз "первые номера". . то есть для любой рабочей ячейки (из соответсвующего кортежа) определяется номер общей резервной ячейки этого кортежа, если резервная полученная ячейка занята - ищем по соседним резервным ячейкам свободную... . |
|||
47
RomanYS
27.01.21
✎
15:35
|
(46) Формула станет чуть-чуть длиннее, пора уже писать прогу для написания формулы :))
На (44) ответь. Что мешает один раз пронумеровать и забыть? |
|||
48
Злопчинский
27.01.21
✎
15:36
|
(44) упростить задание топологии и связи ячеек.
по большому счету иначе придется для каждой рабочей ячейки задавать связанную с ней резервную ячейку. это порядка 2500 записей. с учетом того, что эти 2500 записей связаных ячеек придется постоянно молотить, пусть даже и прочитав их единожды в память - хз как это на быстродействии скажется, потому как произведений и вычитаний таблиц и так немало еще до работы с резервными ячейками... |
|||
49
Злопчинский
27.01.21
✎
15:37
|
(47) у тя бухи/манагеры часто настравивают принципиальные моменты в программе, которые определяют поведение/расчет результата программы?
|
|||
50
Mikeware
27.01.21
✎
15:38
|
а что мешает взять массив из 11 ячеек, и один раз заполнить?
|
|||
51
Mikeware
27.01.21
✎
15:40
|
(48) "потому как произведений и вычитаний таблиц и так немало еще до работы с резервными ячейками" - ты "рюкзак" решаешь, чтоль?
|
|||
52
Fragster
гуру
27.01.21
✎
15:40
|
результат целочисленного деления на 11 и остаток от него спасут отца русской демократии
(37) а зачем ты на это забился? я когда адресацию делал отдельно стеллажи, отдельно ячейки нумеровал. типа А (проход) - 4 (стеллаж) - 3 (ярус) - 2 (ячейка) |
|||
53
RomanYS
27.01.21
✎
15:41
|
(49) Не)))... всё само считается по формула принесенным с форума
|
|||
54
Fragster
гуру
27.01.21
✎
15:41
|
вот еще лайфхак - если несколько вариантов маршрута по складу - то можно одному стеллажу несколько (виртуальных) адресов присваивать (для правильной сортировки при различных путях обхода)
|
|||
55
RomanYS
27.01.21
✎
15:42
|
(50) (52) Так одного остатка уже недостаточно, проход с номером появился
|
|||
56
Fragster
гуру
27.01.21
✎
15:43
|
(55) так я и говорю - задача возникла изначально из-за неправильной нумерации
|
|||
57
Fragster
гуру
27.01.21
✎
15:44
|
просто правило 4-3-4 легко перерастет в 2-2-2-2, 3-3-3-1 и прочее
|
|||
58
Fragster
гуру
27.01.21
✎
15:45
|
ну и да - прочитал из всей ветке выборочно сообщения три-четыре
|
|||
59
Fragster
гуру
27.01.21
✎
15:45
|
*ветки
|
|||
60
Garykom
гуру
27.01.21
✎
15:47
|
Визуальный редактор схемы склада с переводом в компактную форму хранения и функция работающая по этой компактной
|
|||
61
Злопчинский
27.01.21
✎
15:47
|
(56) если бы Я нумеровал - я бы нумеровал правильно.
|
|||
62
Fragster
гуру
27.01.21
✎
15:48
|
(61) ну прилепи свою абстракцию сверху
|
|||
63
Garykom
гуру
27.01.21
✎
15:48
|
А на эти ваши " формулу с простыми арифметическими действиями" следующий прогер будет громко матом ругаться - икать кто то устанет
|
|||
64
Fragster
гуру
27.01.21
✎
15:51
|
(63) согласен
|
|||
65
Злопчинский
27.01.21
✎
15:52
|
(52) варианты нумерации разные. с отдельнйо нумерацией стеллажей/секций - хорошо когда стеллажи КРУПНЫЕ.
когда туева хуча меочевки и один стеллаж/секция от другого визуально еще выцепить надо - однопроходный поиск найди ячейку 77 превращается в двух проходный найди стеллаж/секцию 7, на ней найди место 3. это канает на крупных секциях стеллажах, а когда мелочевка и место 3 на секции 7 отстоит от места 3 в секции 8 на расстоянии метра - ты нафиг "убьешься" от мельтешения в обозримом поле кучи одинаковых номеров 1-2-3-1-2-3-4-1-2-3-1-2-3 и сборщики накосячат вместо 7-1 возьмут 8-1. |
|||
66
Злопчинский
27.01.21
✎
15:53
|
(63) да, я тоже согласен.
|
|||
67
RomanYS
27.01.21
✎
15:54
|
(63) можно в комментариях @Ненавижу1С автором формулы указать, путь икает)
|
|||
68
Злопчинский
27.01.21
✎
15:54
|
(63) Предлагаешь все-таки остановиться на связных ячейках? задавать для каждой рабочей ячейки "подчиненную" резервную? так-то оно конечно "прозрачнее" будет. наверное к этому варианту склонюсь...
|
|||
69
Злопчинский
27.01.21
✎
15:55
|
(67) ;-) блин, ребята мозгоголовастые капец как! завидую прям хорошей завистью.
|
|||
70
Fragster
гуру
27.01.21
✎
16:14
|
(65) не возьмут, если сканить номера ячеек будут. да и никто не мешает вместо 3 писать полный адрес
|
|||
71
Mikeware
27.01.21
✎
16:16
|
(65) поэтому и используют нумерацию вида [I/II/III/IV]-[А/Б/В/Д/Е]-[1/2/3/4/5]-[А/Б/В/Д/Е]. Ну на крайняк просто цифра-буква-цифра
|
|||
72
RomanYS
27.01.21
✎
16:18
|
(69) Мы без злости, но (30) в продакшене не сильно лучше менеджеров делающих себе настройки)
|
|||
73
Злопчинский
27.01.21
✎
16:25
|
(70) сборщик должен быстро собирать и по минимум по возможности отвлекаться на РЕГУЛЯРНОЕ чтение множества цифр и букв.
|
|||
74
Злопчинский
27.01.21
✎
16:28
|
(70) возьмут, ибо скан ячейки не сеть физическое действие взятие товар а из ячейки. Скан всего лишь снижает вероятность ошибки. на крупных ячейках - ошибаться труднее, на куче мелких ячеек - сплошь и рядом. и каждый лишний скан на сборе кучи мелочевки - это потраченное время, отвлечение на скан, переключение с экрана (какую эячейку сосканирвоать) на сам скан. Понятно что тут идеальности не будет. надо точить собственно сами интерфейсы на ТСД и только опыт эксплуатации покажет что где как улучшить. пока - так.
|
|||
75
Aleksey
27.01.21
✎
16:50
|
(74) ну идёт отскана и замена на роботов которые сами по стойки заезжают и берут товар. Но это у супер крупняков
|
|||
76
Ненавижу 1С
гуру
27.01.21
✎
17:45
|
(67) да блин, чё сразу икает?
|
|||
77
Злопчинский
27.01.21
✎
18:52
|
(75) это хорошо для коробочной/паллетной сборки. для мелкоштучки - фиг вам. для мелкоштучки хорошо работает вертикальные конвеерные системы "товар к человеку", но ни стоят - мама не горюй.
|
|||
78
Злопчинский
27.01.21
✎
18:54
|
(68) не, делать надо не так, есть другие "штатные" методы. совокупности рабочих ячеек кортежа и родственной ячейке резерва присваивается одинаковый рейтинг, и операция размещения, при поиске ячеек-приемников, например, упорядочиваются по рейтингу.. и все получится... Попробуем.
|
|||
79
Йохохо
27.01.21
✎
19:05
|
(78) что такое ячейка резерва?
|
|||
80
Йохохо
27.01.21
✎
19:17
|
а, всё)
|
|||
81
Конструктор1С
27.01.21
✎
19:43
|
(10)(21)(30) омайгадбл! Отладчик рыдает, глаза выпадают...
|
|||
82
Йохохо
27.01.21
✎
20:32
|
(81) перепиши через ?(,,) =)
|
|||
83
Злопчинский
28.01.21
✎
03:16
|
(81) эх, такая хорошая формула в (30)...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |