Wpis z mikrobloga

Dobry wieczór Mirki:)
Zagadka programistyczna:
Czy potrafiłby mi ktoś wskazać jak można napisać skrypt (np. w php) który rozwiąże poniższe równanie?
((3*x1)+ (7*x2)+ (1*x3) + (3*x4)+ (7*x5)+ (1*x6) + (3*x7) + (7*x8)) == 10

Chodzi o podanie takich zestawów kombinacji x1,x2... które dawałyby w tym równaniu 10.
x1,x2,x3... itd {0-10}

Czy w ogóle da się to zrobić bez znacznego obciążenia procesora?

Dziękuję!:)
#php
  • 29
@bercik999: tak też w pierwszej chwili pomyślałam, ale zauważ, że tu rozwiązaniem nie będą liczby całkowite więc 8 pętli z wykorzystaniem 10 kombinacji 1-10 nie da rady.

@mrsomeone: inna sprawa to to, że liczby z przedziału {1,10} jako rozwiązanie tego równania odpadają, bo nawet gdybyś wziął najmniejszą z nich czyli 1 jako wartość każdego z parametrów, to nijak nie wyjdzie 10.

więc rozwiązań tego równania dla podanego przez ciebie przedziału
@mrsomeone: Dobra, po dwóch drinkach nie zauważyłam, że przedział jest (0,10> ( ͡° ͜ʖ ͡°)
rozwiązaniem na pewno będą liczby z przedziału (0,1>
nie będą na pewno to liczby rzeczywiste, więc bruteforce nie ma szans żeby dał radę
@mrsomeone: Wydaje mi się, że w przedziale (0,1> ta funkcja jest rosnąca (bo x^8 w tym przedziale jest rosnące). Ergo, rozwiązanie jest jedno.
Najłatwiej wyliczalne metodą kolejnych przybliżeń. Liczysz wartość dla środka przedziału (0, 1> i sprawdzasz, po której stronie tego środka jest wynik. Ten środek stanie się odpowiednio początkiem lub końcem nowego przedziału. Sprawdzasz wartość środka tego nowego przedziału i znowu ograniczasz przedział. W końcu trafisz :)
@singollo: Jak masz równanie z więcej niż 1 zmienną, a tylko 1 równanie, to wynik (wykres) nie będzie nigdy tylko jeden. W najprostszym przykładzie x + y = 10 jeżeli x i y są liczbami rzeczywistymi, a nie masz do tego układu drugiego równania, to masz już nieskończoną ilość rozwiązań.
@mrsomeone: @katinka: to konieczne są jeszcze jakieś ograniczenia, bo w chwili obecnej jest nieskończenie wiele rozwiązań. Np:
wszystkie niewiadome muszą być różne od siebie
wszystkie muszą być całkowite albo choćby wymierne
... ale to pewnie też pozostawia olbrzymią ilość rozwiązań...
ograniczeniem jest to, ze zmienne x1, x2 itd. do x8 moga posiadac liczby naturalne ze zbioru {0,1,2,3,4,5,6,7,8,9}. To skutecznie ogranicza ilosc rozwiazan. Problemem jest dla mnie napisanie takiego skryptu..., zastanawialem sie nad wrzuceniem tego w 8 (ilosc zmiennych) petli for (i=0, i<=9, i++) i tak po kolei :) ale cos nie wychodzi... :(