Автор Тема: Софтуер за изработване на комбинации  (Прочетена 7154 пъти)

go_fire

  • Участник
  • *****
  • Публикации: 5211
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Здравейте,

Обръщам се най-вече към инжѝнерите. Ddantgwyn гледам към теб.

Трябва ми нещо, може дори на bash да е, какво да е, но нещо, което може да създава (генерира) комбинации от определени условия.

Това за мен е нова материя. Нямам идея от къде и как да започна търсене. Нямам идея, какво може да представлява. Представям си, че в работата е вложена някаква случайна величина или величини. Понеже е математика (и може би статистика), се опасявам, че решението може да се казва R или Octave. От това настръхвам.

Като да ме сърби, ама да не ща сам да се почешам, че ще заболи.

Някаква надежда?

=*=

За съжаление решението не се казва Либре офис. Мога да твърдя, че познавам Цалц поне около средно ниво и не ми идва на идея, как може да се изпълни там.

Понеже не съм най-бос по Информатика, предполагам, че това може да стане със система от рангове. Сега да не си помислите, че помня нещо от часовете в техникума?

Нищо подобно. Просто това е ръчния начин за филтриране и сортиране в споменатия Цалц. От там го знам. И понеже Цалц наподобява Excel, а Excel е щуротия на M$, то това е много обемна и бавна задача. Струва ми се невъзможна за разгръщане до много условия и много данни.

=*=

А какъв е моя случай? Прозаичен. Може да се нарече модерно-средновековен. Оказвам се в една абсурдна ситуация. Трябва да изготвя отчет за продажби. И незнайно защо е възможно на тая планета да има обект, в които всичко не влиза и излиза с barcode. И още по-малко вероятно е, как това се случва на мен.

Ситуацията е много проста. За който не е имал досег до касов апарат, това е просто един дълъг бон, който се изкарва в края на месеца.

В него има записана много проста информация. Ама проста, та проста. Като за праисторията. Вътре име група артикули и за всяка група, какво точно количество е продадено, и за колко пари общо.

И тук идва катастрофата. Защото задачата е, от това да се измислят, повтарям да се измислят, истинските продажби.

А се измислят, защото зад тази група артикули могат да седят съвсем реални сто неща, на сто различни цени и със сто различни наличности. Нямаш информация, кое точно от стоте е продадено, какво количество от него е продадено и дори на каква цена. Единственото, което знаеш е, че нещо е продадено, общата бройка на нещата, които са продадени и за колко общо пари. А ти трябва да си магьосник, врачка или извънземен, за да възстановиш фактическото положение.

Идея си нямам, как са се справяли хората преди мен с тази задача. Само съм чувал легенди за разправяне с лентички по цял месец. И вече вярвам. Днес, като видях това и бях на път да получа сърдечен пристъп. Това е една от най-големите идиотщини, които съм виждал. А подозренията ми са, че в нашата татковина е масова практика.

После, ако попитате, защо икономиката ни не върви, ето ви една причина. Ако нямаш информация, какво се случва, няма и как да го анализираш. Ако не анализираш, ти си един шибан комарджия. Цяло, билейско чудо е, че може с десетки години да съществува бизнес с подобни практики.
« Последна редакция: Юли 17, 2018, 18:34 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Участник
  • *****
  • Публикации: 2637
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #1 -: Юли 17, 2018, 19:29 »
На мен ми стана интересно.... Може нищо да не помогна ама поне ще поспамя >:D

Значи това което майче разбрах.
Знаем:
S - общата цена
N - общият брой проданени артикули в групата (S)
s1, s2, s3, s4...... Цената на всеки артикул


ТърСим
n1, n2 n3, n4...... Бройката продадени артикули от всеки вид.

Това ли е заданието???

Ако е това тогава
S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....
N=n1 + n2 + n3 + n4 +...
N  и   n1 n2 n3 n4.... Са целочислени. Не може да продадеш 1.3 артикула

Пс има още дапиша... Така ли е засега?
« Последна редакция: Юли 17, 2018, 19:38 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Участник
  • *****
  • Публикации: 5211
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Софтуер за изработване на комбинации
« Отговор #2 -: Юли 17, 2018, 19:37 »
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

Точно това ми е проблема. Да имам нещо, което може да ми каже възможни комбинации, без да се налага на ръка да ги сборувам и измислям. А тук слагаме и още едно ограничение. Нямаме безкрайни бройки. От всяко нещо имаме точно определени. Например в примера горе двете неща по 5 лв., може да имаме само една налична бр. Значи не можем да продадем две. Трябва да измислим нова комбинация.

СПАМА Е ВИНАГИ ДОБРЕ ДОШЪЛ!!!
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

stealth01

  • Участник
  • *****
  • Публикации: 665
  • Distribution: Debian testing
  • Window Manager: KDE
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #3 -: Юли 17, 2018, 19:41 »
go_fire, здрасти! ;D

Има фирми, където всичко си се води, както трябва. Но неофициално. Официално артикулите се обединяват в няколко общи групи и пада мъглата. В последствие разбрах и каква точно е целта, но това е друга тема.

А ако трябва да се стъкмява всичко за всички реални артикули, които са по-сериозно количество (1000, 10000...)... аз дори не бих почвал да го мисля. Вероятно е възможно да се направи нещо де, но само ако има много подобни фирми, от които можеш да вземеш неброени пари... Иначе е много работа за нищо.

П.П. Аааа... ама ти само продажбите на каса ли ще измисляш? Това е по-лек частен случай :)
Активен

Naka

  • Участник
  • *****
  • Публикации: 2637
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #4 -: Юли 17, 2018, 19:45 »
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

От един арткул или говориш за различни артикули?
Да не искаш да кажеш че един артикул може да е продаден на някого с отстъпка и цената на който му е продан не съответства на цената под която е заведен в склада. - малките s-чета.

Ако етака гориш. Щях дати предложа да извъртиш един  цикъл(и)

S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....

 и евентуално да намериш много възможни решения. (почти го измислих ::))
s1, s2, s3, s4...... Константи ли са?
« Последна редакция: Юли 17, 2018, 20:27 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

ddantgwyn

  • Global Moderator
  • Участник
  • *****
  • Публикации: 1092
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #5 -: Юли 17, 2018, 20:18 »
Здравейте,

Обръщам се най-вече към инжѝнерите. Ddantgwyn гледам към теб.

Трябва ми нещо, може дори на bash да е, какво да е, но нещо, което може да създава (генерира) комбинации от определени условия.

Това за мен е нова материя. Нямам идея от къде и как да започна търсене. Нямам идея, какво може да представлява. Представям си, че в работата е вложена някаква случайна величина или величини. Понеже е математика (и може би статистика), се опасявам, че решението може да се казва R или Octave. От това настръхвам.

Като да ме сърби, ама да не ща сам да се почешам, че ще заболи.

Някаква надежда?

Дискретна математика, респективно комбинаторика. Но определено е математика ::)

Искаш да направиш някакъв набор от артикули, сумата от цените на които да дава някаква точно определена крайна сума. Това ли е задачата?
Активен

--
the lamer's team honourable member

ddantgwyn

  • Global Moderator
  • Участник
  • *****
  • Публикации: 1092
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #6 -: Юли 17, 2018, 20:26 »
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

Да не искаш да кажеш че един артикул може да е продаден на някого с отстъпка и цената на който му е продан не съответства на цената под която е заведен в склада. - малките s-чета.

Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)

Тогава може би е по-добре да се работи направо с цените.
Активен

--
the lamer's team honourable member

go_fire

  • Участник
  • *****
  • Публикации: 5211
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Софтуер за изработване на комбинации
« Отговор #7 -: Юли 17, 2018, 20:32 »
Точно така са заведени и в склада. Какво нещо е, на каква цена. Да речем код 101001 Това означава хляб (101) за 1 лев (001). Не е хранителен магазин, но за онагледяване.

Иначе и аз забелязах, че нещо заведено с продажна цена 3,50 да речем може да бъде продадено, за 3; 3,33; 3,50; 4,00 според клиента, отстъпката и закупеното количество. Само като си помисля за това и ме заболява глава.

Но преди да решавам тоя въпрос, поне да реша основния. Да имам някакви, поне някакви полуготови комбинации, отколкото да изписвам листи по бабашкия метод да натъманявам нещо и да преглеждам десетки страници с наличности.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Участник
  • *****
  • Публикации: 2637
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #8 -: Юли 17, 2018, 20:33 »
Цитат
Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)
Ами аз същото написах

S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....

Примерно върти един цикъл по всички възможни комбиации на n1, n2, n3, n4
Смята се сумата дали съвпада на S
Ако съвпада (или е много близка) значи това   n1 n2 n3 n4    едно от възможните решения
Ако не съвпада се продължава нататък

Междувременно се отхвърлят всичи комбинации за коитто
  n1 +n2 +n4 +n4 != N   т. Е на общият брой продажби.
« Последна редакция: Юли 17, 2018, 20:41 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Участник
  • *****
  • Публикации: 5211
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Софтуер за изработване на комбинации
« Отговор #9 -: Юли 17, 2018, 20:37 »
А, да. Продажбите по банка (но само в общия случай) имам, какво точно е купено, какви бройки и на каква цена. И там се намират фактури, в които нищо не е уточнено, но в повечето случаи имам инфо. Но продажбите в брой са много, много повече от тези по банка и това не ми помага особено.

S1, S2, SN цени ли са? Да речем, че са константи, защото ми става лошо, като се замисля и за това.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

remotexx

  • Участник
  • *****
  • Публикации: 782
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #10 -: Юли 17, 2018, 20:43 »
Подсказка
http://putridparrot.com/blog/the-vending-machine-change-problem/

https://en.wikipedia.org/wiki/Change-making_problem

като не забравяме че има и наличност т.е. не може да продадеш 100 х 1 лв. при положение че към тая (предна) дата е имало налични само 50 бр.

Проблема си е баш тоя от линка - даже там имат варианти - 1) с мин бр. 2) с макс бр. и т.н. единственото което няма в линка е ако исккаш/знаеш напр. твърдо че някои неща са продадени , да ги зачукаш тях да не ги маха т.е. да почва от някакво знайно състояние и вече да работи с наличностите е склад

..иначе то най-лесно , ако имаш артикул по 1 ст. - само изписваш необходимия бр. ст. ... т.е. бройки :-)

П.П. ето жив /нагледен/ пример - не знам само колко време ще стои на тоя сайт (щото е безплатен) т.е. който иска да копира кода веднага (ще върви и на .Net Core а то е безплатно - също като джава) - сори ама от бързане нямам време за друго

https://dotnetfiddle.net/GAWqFw

Алгоритъна е алчен и ще гледа да минимизира бройките т.е. първо ще блъска по-скъпите неща докато може...

П.П.П. за който няма (и/ли не му се инсталират) /Куорове, жаби и пр./ може да ги пуска напараво от тоя (и подбните му) сайт... за .. до няколко хил. артикула няма да направят проблем ..предполагам  >:D
« Последна редакция: Юли 17, 2018, 21:33 от remotexx »
Активен

Naka

  • Участник
  • *****
  • Публикации: 2637
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #11 -: Юли 17, 2018, 20:45 »
Ами да цени са. Да кажем че са константни цени.  [_]3 [_]3
Схвана ли идеята?

Например. За четири артикула товаможе да стане с четери вложени цикикъла един в друг по n1 n2 n3 n4.

n1
   n2
      n3
          n4


Като всяко n върти от 1 до бройката в склада.
Както каза това е още едно ограничение защото не може да продадеш повече от единартикул от колкото имаш в склада. Но това не е ограничение ами е голямо опростяване щото цикъла става по малък и ограничен.
« Последна редакция: Юли 17, 2018, 20:53 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

ddantgwyn

  • Global Moderator
  • Участник
  • *****
  • Публикации: 1092
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #12 -: Юли 17, 2018, 20:45 »
Цитат
Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)

Ами аз същото написах

Ама аз не те упреквам.

Иначе задачата си плаче за дипломна работа на някой магистър от ФМИ (примерно) :D
Активен

--
the lamer's team honourable member

Naka

  • Участник
  • *****
  • Публикации: 2637
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #13 -: Юли 17, 2018, 21:14 »
Например. За четири артикула товаможе да стане с четери вложени цикикъла един в друг по n1 n2 n3 n4.

n1
   n2
      n3
          n4
           n1 +n2 +n4 +n4 != N

           n1*s1 + n2*s2 + n3*s3 + n4*s4
           равно ли е (прилича ли) на S
         


Като всяко n върти от 0 до бройката в склада.
В най вътрешният първо отхърляш всични невъзможни комбинации за N.
След това смяташ сумата S. Ако прилича на S изпринтваш n1, n2, n3, n4

Така си ги представям нещата на първо четене. Но понятие си нямам какво би станало ако има случайна величина някъде и как трябва да се подходи в този случай?
« Последна редакция: Юли 17, 2018, 22:30 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

remotexx

  • Участник
  • *****
  • Публикации: 782
    • Профил
Re: Софтуер за изработване на комбинации
« Отговор #14 -: Юли 17, 2018, 21:34 »
Аз не разбрах
това няма ли да свърши работа
или... ще искаме първо от по-евтините артикули да се отървем

https://dotnetfiddle.net/GAWqFw

или сега ще искаме е динамично програмиране - щото напр. накрая (на месеца) установяваме че сме продали 100 бири обаче индивидуално фактурирани само 50 т.е. можем да разпърснем по "общите"-като сума фактури макс. 50 бири - макар че, това става и с гормия код - само задаваш в касичката 50 монети със ст-т на една бира като налични т.е. Coins ще съдържа само едичнни цени и налични бр, (но само налични за разпределяне - т.е. след като си установил че липсват 100 бири ама 55 имаш "поименно" фактурирани някъде, ще вкараш като налични 45)

иначе опираме до още по-сложен проблем (с баща ми бояджията)
https://en.wikipedia.org/wiki/Partition_problem
http://www.techiedelight.com/k-partition-problem-print-all-subsets/
https://en.wikipedia.org/wiki/Knapsack_problem
« Последна редакция: Юли 17, 2018, 21:46 от remotexx »
Активен