[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JS калькулятор
RCuPeR
Ребят, прошу помощи в алгоритме.
Под конец для не вывожу уже. sad.gif

Значит так, есть лист метала. Размеры: 10 х 20. Этот лист метала стоит 24 тугрика.
Сколько будет стоять лист метала 48 х 125, если шаг стороны А (10) при + 10см - 13 тугриков, шаг стороны Б (20) при + 20см - 1.6 тугриков, при + 50см - 1.9 тугриков, при + 80см - 2.4 тугрика.

Если в таком толковании не очень понятно, вот скрин:
http://dl.dropbox.com/u/14712568/%D0%B7%D0...D0%BA%D0%B0.png



Спустя 8 минут, 53 секунды (2.11.2011 - 19:53) Игорь_Vasinsky написал(а):
biggrin.gif весёлая головоломка...

что за шаг стороны?

Спустя 16 минут, 25 секунд (2.11.2011 - 20:09) redreem написал(а):
ПОДСКАЖИТЕ??? да тут подсказкой не обойдется. это задача оптимизации раскроя. по ней некоторые диссертации защищают smile.gif у вас конечно вроде тривиальный случай, но тем не менее....

Спустя 1 час, 2 минуты (2.11.2011 - 21:11) RCuPeR написал(а):
Цитата
весёлая головоломка...

Не то слово...

Цитата
что за шаг стороны?

Увеличение определенной стороны на n раз.

Цитата
ПОДСКАЖИТЕ??? да тут подсказкой не обойдется. это задача оптимизации раскроя. по ней некоторые диссертации защищают  у вас конечно вроде тривиальный случай, но тем не менее....

ohmy.gif ohmy.gif ohmy.gif
И что же теперь делать ? Я уже 2 часа сижу мозгую....

Спустя 4 минуты, 24 секунды (2.11.2011 - 21:16) Игорь_Vasinsky написал(а):
Цитата
10 х 20

Цитата
Увеличение определенной стороны на n раз.


тут 2 стороны - ширина и высота, что каждой?


Спустя 5 минут (2.11.2011 - 21:21) RCuPeR написал(а):
Ну смотри:
у нас прямоугольник 10х20см. Стоит это прямоугольник 24 рубля.
Как узнать цену прямоугольника с размером 15х20см, т.е шаг стороны А + 5 ?

Спустя 13 минут, 2 секунды (2.11.2011 - 21:34) Игорь_Vasinsky написал(а):
Так я понял

10-20 -> 24
10-?? -> 13
??-20 -> 1.6
??-50 -> 1.9
??-80 -> 2.4
------------------------------
48-125 -> ???


на что то похоже...



Спустя 6 минут, 36 секунд (2.11.2011 - 21:40) RCuPeR написал(а):
Цитата (Игорь_Vasinsky @ 2.11.2011 - 18:34)
Так я понял

10-20 -> 24
10-?? -> 13
??-20 -> 1.6
??-50 -> 1.9
??-80 -> 2.4
------------------------------
48-125 -> ???


на что то похоже...

Чуть-чуть не то rolleyes.gif

Ща подумаю как правильно описать - отпишу.

Спустя 3 минуты, 17 секунд (2.11.2011 - 21:44) Игорь_Vasinsky написал(а):
не не.. я со стороны вижу что не правильно обрисовал - я то в суть въехал

меня смущает что расчёт нужен для стороны А = 48, а шаг указан в 10

1. Высчитать сколько стоит шаг стороны A в 1 см
А для Б - то 3 цены для 3х шагов.

Это наверно человек придумал, который хочет чтоб его бухгалтер застрелился biggrin.gif

Спустя 8 минут, 54 секунды (2.11.2011 - 21:53) redreem написал(а):
у тебя задача минимизации цены или оптимального раскроя (экономия материала)? это 2 разных подхода к решению.

Спустя 1 минута, 18 секунд (2.11.2011 - 21:54) Игорь_Vasinsky написал(а):
redreem
шаришь?

Спустя 2 минуты, 16 секунд (2.11.2011 - 21:56) redreem написал(а):
Игорь_Vasinsky, шарю, но бухой, просто наводящие вопросы способен задавать smile.gif

Спустя 28 минут, 5 секунд (2.11.2011 - 22:24) RCuPeR написал(а):
Так мужики, я честно говоря уже сам запутался.
Давайте перенесем сие толкование к завтрашнему утру ?

Спустя 1 час, 46 минут, 58 секунд (3.11.2011 - 00:11) Игорь_Vasinsky написал(а):
мне кажется что к завтрашнему утру я сию науку не осилю.. я php то 11 год учу и всё в ламмерах...

Спустя 5 минут, 51 секунда (3.11.2011 - 00:17) Winston написал(а):
Цитата (Игорь_Vasinsky @ 2.11.2011 - 23:11)
я php то 11 год учу и всё в ламмерах.

blink.gif Офигеть тебя в книгу Гиннесса за такой рекорд записать нужно smile.gif

Спустя 3 минуты, 50 секунд (3.11.2011 - 00:21) Игорь_Vasinsky написал(а):
как самого тупого? biggrin.gif biggrin.gif biggrin.gif

Спустя 3 минуты, 39 секунд (3.11.2011 - 00:25) Winston написал(а):
Самый долгий путь к профессионализму, так и не достигнув его smile.gif tongue.gif

PS: если бы ты все 11 лет так активно изучал язык, как сейчас, то был бы не хуже наших экспертов.

Спустя 1 минута, 33 секунды (3.11.2011 - 00:26) Игорь_Vasinsky написал(а):
biggrin.gif да я утрирую. 11 лет назад я кликнул по страничке правой кнопкой и увидел HTML код и начал эксперементировать. дурак (почему мышки не однокнопочные).

а PHP лет 5

Спустя 1 минута, 18 секунд (3.11.2011 - 00:27) Winston написал(а):
Цитата (Игорь_Vasinsky @ 2.11.2011 - 23:26)
а PHP лет 5

Не показатель smile.gif Ты на Твина посмотри, всего 3 года smile.gif

Спустя 4 минуты, 26 секунд (3.11.2011 - 00:32) Игорь_Vasinsky написал(а):
оОоо.. так я дикарём. про форум то когда узнал.. 1,5 года назад. эх... сразу бы.

Спустя 49 минут, 20 секунд (3.11.2011 - 01:21) RCuPeR написал(а):
Так, а ну брысь в чат флудить !

Спустя 11 часов, 10 минут, 41 секунда (3.11.2011 - 12:32) RCuPeR написал(а):
Хєлоу пипл !
Вернемся к нашим птичкам ?!

Значит так:
Как узнать сколько стоит 1 квадратный метр если известно, что кусок 10Х20см стоит 24рубля ?

Спустя 6 минут, 2 секунды (3.11.2011 - 12:38) redreem написал(а):
вчера были тугрики. это кардинально меняет условие!

Спустя 1 минута, 9 секунд (3.11.2011 - 12:39) Игорь_Vasinsky написал(а):
тут это правило не канает т.к. :
Цитата
если шаг стороны А (10) при + 10см - 13 тугриков, шаг стороны Б (20) при + 20см - 1.6 тугриков, при + 50см - 1.9 тугриков, при + 80см - 2.4 тугрика.


вообще исходя из

Цитата
Размеры: 10 х 20. Этот лист метала стоит 24 тугрика.


10х20 = 200 кв. см ->24

1кв. см = 24/200 -> 8.33 тугрика

Спустя 2 минуты, 4 секунды (3.11.2011 - 12:41) redreem написал(а):
я вчера спросил:
Цитата
у тебя задача минимизации цены или оптимального раскроя (экономия материала)? это 2 разных подхода к решению.
- где ответ?

Спустя 4 минуты, 48 секунд (3.11.2011 - 12:46) RCuPeR написал(а):
Цитата
вчера были тугрики. это кардинально меняет условие!

Не суть.

Цитата
10х20 = 200 кв. см ->24

1кв. см = 24/200 -> 8.33 тугрика

Чудесно. Следую из этого квадрат 141х314 стоит 5315, так?

Спустя 41 секунда (3.11.2011 - 12:47) RCuPeR написал(а):
Цитата
где ответ?

Я не знаю biggrin.gif
Скорей "оптимального раскроя".

Спустя 8 минут, 52 секунды (3.11.2011 - 12:55) Игорь_Vasinsky написал(а):
141х314х8.33 тугрика

Спустя 4 минуты, 57 секунд (3.11.2011 - 13:00) RCuPeR написал(а):
Цитата
( 141 х 314 ) / 8.33

Скорей так.

Спустя 20 секунд (3.11.2011 - 13:01) redreem написал(а):
значится такс...
1. делаем массив (P-patterns) со значениями шагов, упорядоченными по убыванию и соответствующими им ценами. P['x'][0]=... P['x'][1]... для Y аналогично.
2. делаем функцию, которая будет формировать "шаговые куски". работет она так:
- функция формирует некий глобальный массив-координатную матрицу (T-tiles) раскроя.
- функции передается имя рабочего массива (P['x'] например), текущий индекс (при первом запуске 0) и линейный размер листа A.
- ф. разбивает переданный линейный размер на целое количество шагов по текущему индексу массива P, заполняет массив T получившимся количеством, вычисляет сколько там от куска осталось и вызывает сама себя со следующим индексом массива P.

Вызываем эту функцию 2 раза (для 2-х линейных размеров).
В результате имеем массив T, который пробегаем 2-мя вложенными циклами с вычислением стоимости каждого куска.


Спустя 2 минуты, 15 секунд (3.11.2011 - 13:03) RCuPeR написал(а):
Цитата (redreem @ 3.11.2011 - 10:01)
значится такс...
1. делаем массив (P-patterns) со значениями шагов, упорядоченными по убыванию и соответствующими им ценами. P['x'][0]=... P['x'][1]... для Y аналогично.
2. делаем функцию, которая будет формировать "шаговые куски". работет она так:
- функция формирует некий глобальный массив-координатную матрицу (T-tiles) раскроя.
- функции передается имя рабочего массива (P['x'] например), текущий индекс (при первом запуске 0) и линейный размер листа A.
- ф. разбивает переданный линейный размер на целое количество шагов по текущему индексу массива P, заполняет массив T получившимся количеством, вычисляет сколько там от куска осталось и вызывает сама себя со следующим индексом массива P.

Вызываем эту функцию 2 раза (для 2-х линейных размеров).
В результате имеем массив T, который пробегаем 2-мя вложенными циклами с вычислением стоимости каждого куска.

blink.gif blink.gif blink.gif
Ты хочешь окончательно разнести мой мозг в хлам ?

Спустя 2 минуты, 33 секунды (3.11.2011 - 13:06) redreem написал(а):
это самый просто вариант. по идее наворачивать метод можно бесконечно. например для каждого промежуточного куска рассчитывать оптимальную заполяемость всеми меньшими шаблонами.

Спустя 31 секунда (3.11.2011 - 13:06) redreem написал(а):
я сразу сказал, что по этой задаче диссертации пишут. ты хочешь 3-мя строчками ее решить - неполучится.

Спустя 1 минута, 18 секунд (3.11.2011 - 13:07) Игорь_Vasinsky написал(а):
взрыв мозга biggrin.gif

Спустя 4 минуты, 50 секунд (3.11.2011 - 13:12) redreem написал(а):
вот твоя задача - там еще какой-то онлайн калькулятор есть - можешь глянуть http://ru.wikipedia.org/wiki/Задача_об_упаковке_в_контейнеры

Спустя 30 минут, 18 секунд (3.11.2011 - 13:42) RCuPeR написал(а):
А мне кажется, тут все куда проще.
Значит так, мой алгоритм. Условие в картинке:Картинка
Заготовка: Заготовка
  • 1. Вычисляем цену на 1 кв. см (10х20 = 200 кв. см ->24 | 1кв. см = 24/200 -> 8.33).
  • 2. Проверяем размер каждых сторон:

    A: если размер А больше 20 (исходный размер + шаг 10см), то где-то там, в хранилище дописываем + 13 тугриков (т.е 20х20 будет стоять 37 тугриков, 30х20 - 50 тугриков). Узнать количество шагов А можно следуя следующей формуле:
    var a = указанный размер (дефолтный 10).
    var b = шаг (10см.)
    var n = количество шагов.
    n = a / b;
    Следуя из этого в наше хранилище поступает число которое содержит сумму стороны А (n * 13);

    B: вычисляем сторону В по той же схеме. Только у нас дано 3 шага. Если число В > 40 (исходный размер 20 + 20 - размер первого шага) то:
    var a = указанный размер (дефолтный 10).
    var b = шаг (20см.)
    var n = количество шагов.
    n = a / b;
    В хранилище поступает B(n * 1.6);
    По той же схеме с остальными двумя шагами.
  • 3. Составляем цену за 1 кв.см с учетом всех шагов. Т.е, хранилище А + хранилище В; var new_sum = A(array) + B(array);
  • 4. И последнее, узнаем стоимость нашего указанного куска метала. ( А * B ) / new_sum;

Спустя 16 минут (3.11.2011 - 13:58) redreem написал(а):
да как хочешь. я ж говорю - четкого решения нет - это задача последовательных приближений. если тебя (твоего заказчика) метод устраивает - ради бога.

Спустя 9 минут, 33 секунды (3.11.2011 - 14:08) RCuPeR написал(а):
Я так понял, ты разбираешься, проанализируй мой метод. Он будет работать ?

Свернутый текст
Заказчик я сам.

Спустя 11 минут, 28 секунд (3.11.2011 - 14:20) redreem написал(а):
считать будет видимо что-то. еслиб ты рассказал конкретное приложение этих рассчетов, то тогда можно было бы судить об их корректности. что считаем? доски, листы какие-нибудь, или что? какие есть уловия по раскрою? например стандартные листы или любые и т.п. что делается с обрезками потом? на выброс?

Спустя 2 минуты, 38 секунд (3.11.2011 - 14:22) RCuPeR написал(а):
Да это не суть. Не воспринимай так буквально. Нужно просто узнать цену указанного квадрата с учетом известных шагов на обе стороны.

Спустя 41 минута, 37 секунд (3.11.2011 - 15:04) redreem написал(а):
я не могу говорить о корректности расчетов, если не знаю как проверить эту корректность на "пальцах" или "листке бумаги".

Спустя 5 минут, 23 секунды (3.11.2011 - 15:09) Игорь_Vasinsky написал(а):
ну просчитай 3 листа с разными размерами
Вычесли во сколько обошолся каждый размер - для 1 кв. см

сложи эти 3 величины и раздел на 3 - получишь среднюю стоимость 1 кв см и сравни с 8.33 тугрика

И увидишь.

Спустя 19 минут, 7 секунд (3.11.2011 - 15:28) RCuPeR написал(а):
Игорь, а цена за 1 кв. см то не правильная. нужно так: 24 / (10 * 20);
А у нас было (10 * 20) / 24; Т.е, мы площадь делили на цену, а нужно наоборот, походу unsure.gif .


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.