![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 12.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym dodać do siebie kilka liczb we wszystkich możliwych kombinacjach, ale żeby działania się nie powtarzały.. Pokaże kod jaki zrobiłem
Problem w tym, że powtarza działania, czyli np. $liczby[1] = 111; $liczby[2] = 222; $liczby[3] = 333; W wyniku tego petla wyświetli: Liczba 111 + Liczba 111 = 222 //ok Liczba 111 + Liczba 222 = 333 //ok Liczba 111 + Liczba 333 = 444 //ok Liczba 222 + Liczba 111 = 333 //blad, ta kombinacja juz byla Będę wdzieczny za naprowadzenie na właściwy trop |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
takie coś:
Edit: Widzę, że akceptujesz też 1+1 a wiec takie coś:
Ten post edytował flashdev 10.09.2009, 19:21:15 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 12.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
u ~flashdev petla nie doda np. liczby[1] do liczby[1]
u ~wookieb doda Obydwa przykłady pomogły. Dzięki! // edit Ok, wszystko było fajnie do momentu gdy chciałem rozszerzyć funkcjonalność tego skryptu aby wyświetlał faktycznie wszystkie kombinacje sum. Rozważmy przykład:
W wyniku pokaże się: 1 + 2 = 3 1 + 2 + 3 = 6 1 + 2 + 4 = 7 1 + 3 = 4 1 + 3 + 4 = 8 1 + 4 = 5 2 + 3 = 5 2 + 3 + 4 = 9 2 + 4 = 6 3 + 4 = 7 Czyli brakuje kombinacji 1 + 2 + 3 + 4 = 10 A co jeśliby było 10 liczb? 10 pętli for? Musi być prostsze rozwiązanie.. Ten post edytował colachips 10.09.2009, 22:15:51 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie. Musisz zauważyć pewne zależności przy kolejnych kombinacjach i odpowiednio je zrealizować. Ale powiedz do czego ci to potrzebne?
Nie wiem czy wyszło mi dobrze ale sprawdź
Jeżeli coś nie pasuje to masz solidny początek, który możesz sobie zmodyfikować. Ten post edytował wookieb 11.09.2009, 09:41:43 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
proszę:
Rozwiązanie nie jest zbyt dobrze napisane (bardzo obciąża komputer), ale jest najprostsze w implementacji jakie udało mi się wymyślić. Prawdopodobnie jest to najgorsza z możliwych implementacji, ale za tą lepszą trzeba zapłacić (IMG:style_emoticons/default/smile.gif) Jedyna zaleta tego rozwiązania jest taka, że spełnia założenia. @wookieb Twoje rozwiązanie zwraca 56 wyników dla 6 liczb, więc chyba zapomniałeś o "kilku" (IMG:style_emoticons/default/winksmiley.jpg) Zwróć uwagę na ogranicznik mojej pętli
Tak, niestety jest to zależność potęgowa (x^x). |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wiem, ale dałem mu taką podstawę z której będzie mógł kombinować resztę.
// EDIT Ponieważ miałem sporo błędów to postanowiłem, zrobić to zupełnie inaczej.
Ten post edytował wookieb 11.09.2009, 12:04:10 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 12.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Imponujące! Muszę jeszcze zrozumieć JAK to wszystko działa.. (IMG:style_emoticons/default/sciana.gif) Kiedy pojmę to dam znać. Dzieki za pomoc!
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zapis bitowy ( dwójkowy) liczby pokazuje nam jakie liczby mamy wziąć do działania.
W zapisie bitowym liczby wyglądają np tak 1) 0001 2) 0010 3) 0011 4) 0100 5) 0101 6) 0110 7) 0111 ... Mamy teraz twoje liczby 1,2,3,4. Podstawmy twoje liczby na odpowiednie pozycje. Z pozycji gdzie jest 1 pobieramy odpowiadającą jej (pozycji) liczbę i wstawiamy do działania. Jeżeli w całym ciągu, jest tylko jedna 1 to olewamy Przykład: Kod 1 | 2 | 3 | 4 | wynik
----------------- 1) - 0 | 0 | 0 | 1 | ------ 2) - 0 | 0 | 1 | 0 | ------ 3) - 0 | 0 | 1 | 1 | 3 + 4 = 7 4) - 0 | 1 | 0 | 0 | ------ 5) - 0 | 1 | 0 | 1 | 2 + 4 = 6 6) - 0 | 1 | 1 | 0 | 2 + 3 = 5 7) - 0 | 1 | 1 | 1 | 2 + 3 + 4 = 9 8) - 1 | 0 | 0 | 0 | ------ 9) - 1 | 0 | 0 | 1 | 1 + 4 = 5 10) - 1 | 0 | 1 | 0 | 1 + 3 = 4 11) - 1 | 0 | 1 | 1 | 1 + 3 + 4 = 8 12) - 1 | 1 | 0 | 0 | 1 + 2 = 3 13) - 1 | 1 | 0 | 1 | 1 + 2 + 4 = 7 14) - 1 | 1 | 1 | 0 | 1 + 2 + 3 = 6 15) - 1 | 1 | 1 | 1 | 1 + 2 + 3 + 4 = 10 (dlatego na początku wstawiłem same 1 do ciągu i przeliczyłem na system dziesięty, przez co otrzymałem liczbę potrzebnych operacji. od tej wartości odejmiemy ilość liczb jakie mamy i otrzymujemy liczbę możliwych kombinacji (u nas 15 - 4 = 11) ) Ten post edytował wookieb 11.09.2009, 13:14:02 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Zapis bitowy ( dwójkowy) liczby pokazuje nam jakie liczby mamy wziąć do działania. W zapisie bitowym liczby wyglądają np tak 1) 0001 2) 0010 3) 0011 4) 0100 5) 0101 6) 0110 7) 0111 ... Pomijasz jeden mały szczegół: u ~flashdev petla nie doda np. liczby[1] do liczby[1] u ~wookieb doda Obydwa przykłady pomogły. Dzięki! |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A co za problem zrobić to poza pętlą? Albo nawet w niej
Kod if($numsAdded>1) { } else { // dodaj te same liczby } Z przykładu nie wynikało, że chciał takie działanie, więc może zmienił zdanie. Ten post edytował wookieb 11.09.2009, 13:31:56 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
A co za problem zrobić to poza pętlą? Albo nawet w niej Kod if($numsAdded>1) { } else { // dodaj te same liczby } Z przykładu nie wynikało, że chciał takie działanie, więc może zmienił zdanie. Jakie to proste (IMG:style_emoticons/default/smile.gif) A jak z tablicy 1, 2, 3 zrobisz: 1 + 1 + 2? (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie wiem czy zauwazyłeś ale z przykładu autor nie brał takiej kombinacji pod uwagę.. Ani nawet 1 + 1.
Ten post edytował wookieb 11.09.2009, 13:40:30 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 19:27 |