Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie ciągu liczb
Forum PHP.pl > Forum > PHP
diamondking
Cześć.

Chciałbym zrobić skrypt, który raz dziennie w bazie aktualizuje kod z 5 różnych liczb np. (71683) - tu problemu nie będę mieć.

Chciałbym też by użytkownik poprzez formularz mógł wysłać swoją odpowiedź.
Problem pojawia się tu bo chciałbym zrobić skrypt, który sprawdzi:

1 - ile liczb jest poprawnych
2- ile liczb jest na właściwym miejscu.

Jeżeli użytkownik dla przykładu wpisze kod 28643

to powinien wyjść wynik:

3 liczby są poprawne
2 liczby są w odpowiednim miejscu.

Pomożecie mi jak za to się zabrać.
Z góry dziękuję.
nospor
Bierzesz pierwsza cyfre z ciagu i patrzysz czy wystepuje w ciagu wzorcowy. Jak tak, to masz pierwsza liczbe poprawna
Bierzesz druga cyfre z ciagu i patrzysz czy wystepuje w ciagu wzorcowy. Jak tak, to masz kolejna liczbe poprawna
Itd.

Co do wlasciwej pozycji to robisz podobnie z ta roznica ze nie szukaz w calym ciagu wzorcowy a tylko w okreslonej pozycji

W czym problem?
kreatiff
Ja bym rozbił obie liczby na tablicę cyfr i teraz:
1. array_intersect() wskaże tablicę z cyframi w obu liczbach, wystarczy policzyć ile ich jest.
2. pięciokrotna pętla, a w środku licznik wzrastający gdy obie cyfry na każdej kolejne pozycji z obu tablic są takie same.

edycja: ja się sugerowałem, że to ma działać tak jak taka stara gra, gdzie odgaduje się jakiś kod w oparciu o wskazówki, które się dostaje odnośnie pozycji cyfr, które zgadujemy. Moje rozwiązanie nie wskaże Ci np. drugiej ósemki w zgadywanej kombinacji jako prawidłowej, gdy w kodzie do zgadnięcia jest tylko jedna ósemka. Rozwiązanie nade mną wskaże obie ósemki jako dostępne w kodzie.
Takie drobne różnice, które już sam musisz uznać czy zasadne.
diamondking
Poradziłem sobie w taki sposób:

  1. $kodpost = ''.$_POST['code'].'';
  2. for($i = 0, $length = strlen($kodpost); $i < $length; ++$i){
  3. $kodpost[$i] = $kodpost[$i];
  4. }
  5.  
  6. $kodwynik = "".$druidcode -> fields['value']."";
  7. $tablica = array();
  8. for($i = 0, $length = strlen($kodwynik); $i < $length; ++$i){
  9. $kodwynik[$i] = $kodwynik[$i];
  10. $tablica[] = $kodwynik[$i];
  11. }
  12.  
  13. $dobremiejsca = 0;
  14. $poprawne = 0;
  15. for($i = 0; $i <= 4; ++$i){
  16. if($kodpost[$i] == $kodwynik[$i])
  17. {
  18. $dobremiejsca = $dobremiejsca+1;
  19. }
  20.  
  21. if (in_array("".$kodpost[$i]."", $tablica))
  22. {
  23. $poprawne = $poprawne+1;
  24. }
  25. }


Co sądzicie o takim rozwiązaniu?
nospor
$kodpost = ''.$_POST['code'].'';
for($i = 0, $length = strlen($kodpost); $i < $length; ++$i){
$kodpost[$i] = $kodpost[$i];
}

Po co te ciapki '' przed i po ?

Albo to: $kodpost[$i] = $kodpost[$i]; Co to niby ma robic?

Dalej nie sprawdzam wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.