Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> "Magiczny kwadrat", generowanie 9 cyfr na podstawie kryteriów
kornel-php
post
Post #1





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Załóżmy, że:

  1. <?php
  2.  
  3. $suma = 33;
  4.  
  5. $a1 = 9;
  6.  
  7.  
  8. $a1 + $a2 + $a3 = $suma;
  9. $b1 + $b2 + $b3 = $suma;
  10. $c1 + $c2 + $c3 = $suma;
  11. $a1 + $b1 + $c1 = $suma;
  12. $a2 + $b2 + $c2 = $suma;
  13. $a3 + $b3 + $c3 = $suma;
  14.  
  15. ?>


Jak wygenerować i wyświetlić kolejne zmienne (a2, a2, a3...).

Wydawało mi się to proste, ale po skrypt:

  1. <?php
  2. echo ($a1);
  3. echo (' ');
  4. echo ($a2);
  5. echo (' ');
  6. echo ($a3);
  7. echo ('<br><br>');
  8. echo ($b1);
  9. echo (' ');
  10. echo ($b2);
  11. echo (' ');
  12. echo ($b3);
  13. echo ('<br><br>');
  14. echo ($c1);
  15. echo (' ');
  16. echo ($c2);
  17. echo (' ');
  18. echo ($c3);
  19. ?>


wyświetla:

  1. 9 33
  2.  
  3. 33
  4.  
  5. 33 33 33


Proszę o szybką pomoc...

Ten post edytował kornel-php 6.08.2006, 21:03:00
Go to the top of the page
+Quote Post
Albitos
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 4
Dołączył: 6.08.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


A nie latwiej to w html?
  1. <?php
  2. echo '<table><tr>';
  3. echo '<td>'.$a1.'<td>'.$a2.'<td>'.$a3.'</tr>';
  4. echo '<tr><td>'.$b1.'<td>'.$b2.'<td>'.$b3.'</tr>';
  5. echo '<tr><td>'.$c1.'<td>'.$c2.'<td>'.$c3.'</tr></table>';
  6. ?>


W ogole, radze zastosowac tablice i petle foreach().
Go to the top of the page
+Quote Post
kornel-php
post
Post #3





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Cytat
A nie latwiej to w html?


Nie rozumiem, o co Ci chodzi z tym html...

Czekam na jakieś inne pomysły, ewentualnie rozwinięcie pomysłu Albitosa, bo nie wiem, co miał na myśli...
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Ale co ty chcesz w ogole osiagnac: wygenerowac magiczny kwadrat czy go wypisac?
Go to the top of the page
+Quote Post
MagnuM
post
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


Omg.. nie wiesz czym jest html ?

Chodziło o wstawienie tych danych do tabel i jej komórek. To jest najbardziej prawidłowy sposób w tym przypadku.
Go to the top of the page
+Quote Post
kornel-php
post
Post #6





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Co to jest html wiem....

Mając sumę liczb w jednej linii i podaną jedną z liczb chce wygenerować kwadrat...
Go to the top of the page
+Quote Post
byq_pl
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.02.2004
Skąd: z piekla

Ostrzeżenie: (0%)
-----


Cytat
Co to jest html wiem....


Nie wystarczy wiedziec co to jest html, trzeba go trochę znać. Nie jestem ekspertem od php ale i tak wiem, ze html to podstawa.

Albitos pisał o tym, żebyś umieścił w tabelce te zmienne coby to lepiej wyglądało.

Szczerze mówiąc pogubiłem się w tym Twoim kwadracie, narysuj może w Paint-cie i pokaż to co chcesz zrobić, będzie łatwiej..

Pozdrawiam
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Co to za język?
  1. <?php
  2. $a1 + $a2 + $a3 = $suma;
  3. ?>


To nie ma prawa zadziałać i dlatego nie działa. (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
kornel-php
post
Post #9





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


  1. 1 | 8 | 2
  2. 9 | 1 | 1
  3. 1 | 2 | 8


Oto mój magiczny kwadrat (przykładowy)...

Suma liczb w każdym jego wierszu i kolumnie musi być równa (w tym przypadku 11)...

Chcę stworzyć generator, który wyświetli mi taki magiczny kwadrat po podaniu jego pierwszej cyfry oraz sumy liczb w linii...

Proszę nie robić mi wykładów na temat tego co to jest html, bo to wiem, nie zrozumiałem po prostu wypowiedzi kolegi Albitosa...

Czekam na jakiś pomysł skryptu, mi nic nie przychodzi do głowy, a Google zamiast mi pomagać robią jeszcze większy mętlik w głowie...

@Cysiaczek - to powiedz mi jak to mam zapisać...

(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Co do kwadratu magicznego, to się nie wypowiem, ale sam zapis to musisz zrobic dokładnie odwrotnie
  1. <?php
  2. $suma=$a1 + $a2 + $a3; // to jest poprawne przypisanie do $suma sumy zmiennych a1-a3
  3. //teraz możesz sobie sprawdzić, czy pola maja dobrą wartosć
  4.  
  5. if ($suma==11){ //jesli suma tych liczb wynosi 11, to: 
  6. //zrób coś
  7. }
  8. else{ //w przeciwnym wypadku
  9. //zrób coś innego
  10. }
  11. ?>
Go to the top of the page
+Quote Post
kornel-php
post
Post #11





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Dlaczego wpisałeś w kod instrukcję warunkową (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) ?

Jest mi ona nie potrzebna..

Ta zmiana zapisu nie wiele daje... Właściwie ona nic nie daje...

Widzę, że długa noc przede mną.

Pozdrawiam - Kornel
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #12





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




No przecież chcesz wygenerowac kwadrat magiczny - jak chcesz sprawdzić, czy jest prawidłowy?
Ja bym na słowo nie uwierzył (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
kornel-php
post
Post #13





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


To, czy jest prawdziwy sam bym sprawdził (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

W sumie to liczyć chyba jeszcze umiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #14





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




No to nie rozumiem - chcesz liczyć na piechotę? Jak już bedziesz miał kwadrat wyświetlony na ekranie?
To niby skąd php ma wiedzieć, że liczby, które podstawi pod zmienne będę dobre?

Sam piszesz, że na wejściu dajesz tylko sumę pierwszego wiersza i jedną liczbę ($a1?).
to masz np tak: 11= 3 + x + y -dwie niewiadome w równaniu. Szukamy x oraz y.
php wyliczy sobie np, że te liczy to 3 i 5 - podstawi do równania i sprawdzi. Niestety php znajdzie też możliwość 4 i 4, 1 i 7, 2 i 6. Jest tego sporo.

Czy na pewno chcesz kwadrat generować?
Go to the top of the page
+Quote Post
kornel-php
post
Post #15





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Ale php powinien wyświetlić prawidłowe liczby, gdyż nie mamy doczynienia z pojedyńczym równaniem, a z układem równań...

Poprawność wygenerowanego kwadratu sprawdze licząc w pamięci, ew. na palcach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale php powinien wyświetlić prawidłowe liczby, gdyż nie mamy doczynienia z pojedyńczym równaniem, a z układem równań...
Ale php samo z siebie nie rozwiązuje ukladow rownan. zeby to wyliczyc musisz uzyc algorytmow do rozwiazywania ukladow rownan. ale to musisz ty sam napisac...

To tak jakbyc napisal przepis na ciasto z truskawami i czekal az samo sie zrobi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #17





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Najpierw ten układ równań trzeba zaprogramować (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Życie nie jes takie proste, ze php zrobi za Ciebie wszystko (podobno kawy nie parzy, ale niedługo wersja 6.0 więc kto wie... ) To tak, jakbyś kupił puzzle, wysypał i został Harry Potterem - "Puzzzllooo" i ułożone (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Niestety musisz rozwiązać sobie to na kartce, a nastepnie przenieść do komputera w postaci kodu php, który się wykona i przedstawi wyniki.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #18





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Mozna tez brute force, przeciez to tylko 7! = 5040 permutacji (1 pozycja znana, a w srodku zawsze chyba musi byc 5)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #19





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Może to Ci trochę pomoże.

http://pl.wikipedia.org/wiki/Kwadrat_magic...28matematyka%29
Go to the top of the page
+Quote Post
kornel-php
post
Post #20





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


To zabieram się za przekształcanie układów równań... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Jeszcze jedno pytanie: nie natknął się ktoś gdzieś na gotowy skrypt lub chociaż jakiś opis jak to zrobić?

Teraz to już w ogóle nic nie wiem... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Alkagar
post
Post #21





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Witam,
Sory za kod srednio czytelny, szybki etc. ale pisalem przed wyjsciem do pracy rano :-p.

  1. <?php
  2. $l[11] = 5;
  3. do{
  4. $max = 10 - $l[11]; //pomocnicza;
  5. $l[12] = rand(1, $max);
  6. $l[13] = 11 - $l[11] - $l[12];
  7. $l[21] = rand(1, $max);
  8. $l[31] = 11 - $l[11] - $l[21];
  9. if($l[12] > $l[31])
  10. {
  11. $max = 10 - $l[12];
  12. }else
  13. {
  14. $max = 10 - $l[31];
  15. }
  16. $l[32] = rand(1,$max);
  17. $l[33] = 11 - $l[31] - $l[32];
  18.  
  19. $l[22] = 11 - $l[12] - $l[32];
  20. $l[23] = 11 - $l[13] - $l[33];
  21.  
  22.  
  23. }while(
  24. $l[11] <= 0 ||
  25. $l[12] <= 0 ||
  26. $l[13] <= 0 ||
  27. $l[21] <= 0 ||
  28. $l[22] <= 0 ||
  29. $l[23] <= 0 ||
  30. $l[31] <= 0 ||
  31. $l[32] <= 0 ||
  32. $l[33] <= 0 
  33. );
  34.  
  35.  
  36.  
  37. echo($l[11].' '.$l[12].' '.$l[13].'<br>');
  38. echo($l[21].' '.$l[22].' '.$l[23].'<br>');
  39. echo($l[31].' '.$l[32].' '.$l[33].'<br>');
  40.  
  41. ?>


Mam nadzieje ze o coś takiego chodziło, działa dla pierwszej wprowadzonej liczby(lewy gorny rog) i dla dowolnej sumy liczb w rzedzie. Żeby zmienić sume pozmieniaj po prostu 11 na ta liczbę co chcesz mieć(a tam gdzie sa 10 na o jeden mniejsza, albo najlepiej wprowadz sobie zmienna jakąś zamiast tego).

P.S.
Potraktuj ten Kod jako wskazowke raczej bo jest pisany na szybko i można to zrobić duzo lepiej :-P.

Pozdrawiam,
Alk

Ten post edytował Alkagar 7.08.2006, 07:35:45
Go to the top of the page
+Quote Post
kornel-php
post
Post #22





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Dzięki, zaraz to rozbiorę na częsci pierwsze i coś z tym pokombinuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jakby ktoś kiedyś kombinował coś podobnego to pełny kodzik:

  1. <?php
  2.  
  3. $liczba = $_POST['liczba'];
  4. $suma = $_POST['suma'];
  5.  
  6.  
  7. $l[11] = $liczba;
  8. do{
  9. $max = 10 - $l[11];
  10. $l[12] = rand(1, $max);
  11. $l[13] = $suma - $l[11] - $l[12];
  12. $l[21] = rand(1, $max);
  13. $l[31] = $suma - $l[11] - $l[21];
  14. if($l[12] > $l[31])
  15. {
  16. $max = 10 - $l[12];
  17. }else
  18. {
  19. $max = 10 - $l[31];
  20. }
  21. $l[32] = rand(1,$max);
  22. $l[33] = $suma - $l[31] - $l[32];
  23.  
  24. $l[22] = $suma - $l[12] - $l[32];
  25. $l[23] = $suma - $l[13] - $l[33];
  26.  
  27.  
  28. }while(
  29. $l[11] <= 0 ||
  30. $l[12] <= 0 ||
  31. $l[13] <= 0 ||
  32. $l[21] <= 0 ||
  33. $l[22] <= 0 ||
  34. $l[23] <= 0 ||
  35. $l[31] <= 0 ||
  36. $l[32] <= 0 ||
  37. $l[33] <= 0
  38. );
  39.  
  40.  
  41. echo ('<table><tr>');
  42. echo ('<td>'.$1[11].'<td>'.$1[12].'<td>'.$1[13].'</tr>');
  43. echo ('<tr><td>'.$1[21].'<td>'.$1[22].'<td>'.$1[23].'</tr>');
  44. echo ('<tr><td>'.$1[31].'<td>'.$1[32].'<td>'.$1[24].'</tr></table>');
  45.  
  46. ?>


Mało czytelny, ale działa bez zarzutu...

Dzięki Alkagar - wisze Ci duże piwo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował kornel-php 7.08.2006, 11:04:28
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:15