Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prośba o wytłumaczenie elementów skryptu
marlowe
post
Post #1





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


Witam,
bawię się właśnie JsHacker 1.0 :) ale niestety JavaScript znam tylko "z widzenia" i mam problem z trzecim etapem. Kod wygląda tak:
Kod
<script type="text/javascript" language="JavaScript">
<!--

  function rome(N,s,R,b,a,o) {
    R='IVXLCDM'.split(s=''),b=0,a=2;
    while(N) {
      o=N%(a=7-a);
      N=N/a^0;
      while(o)
        s=R[o-->3?b+N%2+(N&=~1,o=1):b]+s;
      b++;
    }
    return s;
  }

  function check_passwd(v) {                                                                                                                                                                                                                           with(top)
    rome(v) == MCMXXXIX ? location.href = 'p4_'+v+'.html' : alert('Hasło niepoprawne !!!   ');
    return false;
  }

//-->
</script>

Oczywiście wywoływany jest poprzez:
  1. <form onSubmit="return check_passwd(passwd.value)">
  2. Podaj hasło: <input type="password" name="passwd" size="8">
  3.  
  4. <input type="submit" value="Ok">
  5. </form>

Rzecz jasna, nie chcę prosić o podanie wyniku ;) tylko o wytłumaczenie paru elementów bym mógł sobie dalej kombinować:
  1. czy dobrze się domyślam, że wywołanie funkcji, która w definicji ma kilka parametrów, z jednym z parametrem, powoduje, że parametr ten odczytywany jest jako pierwszy z listy parametrów z definicji, a pozostałe są puste (tj, że wywołanie rome(v) wykona funkcję z parametrem N == v);
  2. czy pierwsza linia funkcji rome() oznacza, że najpierw jest wywoływana instrukcja split dla 'IVXLCDM' z parametrem s='' , której wynik jest zapisywany w R (co w praktyce, jak rozumiem, oznacza zapisanie w kolejnych rekordach tablicy R ciągów zawierających kolejne znaki I, V, X, ...) natomiast b=0,a=2 to po prostu ustalenie wartości tych zmiennych?
  3. jedna z instrukcji to N=N/a^0 - z informacji w książce, którą mam wynika, że najpierw wykonuje się operację dzielenia; chciałem się natomiast dowiedzieć czy słusznie mi się wydaje, że XOR z 0 może dawać co najwyżej... 0?
  4. co oznacza zapis R[o-->...] ?- mam oczywiście na myśli "strzałkę";
  5. co oznacza with(top) w funckji check_passwd()?
Z góry dziękuję za odpowiedzi.
Pozdrawiam.
Bartek

Ten post edytował marlowe 25.06.2004, 16:56:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Paul
post
Post #2





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


1. Tak

2. Tak

3. Tak, dzielenie jest pierwsze, mozna sobie to spawdzic porownujac wyniki przy dwoch ustawieniach nawiasow - N=(N/a)^0; i N=N/(a^0); - co ciekawe IE sie przy tym drugim wiesza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zauwaz tez, ze o jest rowne na zmiane 1,0,1,0,a a jest rowne na zmiane 5,2,5,2 przy przechodzeniu przez petle...

4. Nie wypowiem sie, bo nie wiem, ale wyglada szpanersko (poszukam czegos o tym - jak znajde to napisze) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

5. Chodzi oto, ze uzywa to zmiennej z obiektu top. Mozna to uzywac np. with(Math) i wtedy nie musisz pisac Math.round() tylko round().


PS. Jak otworzysz glowna ramke... Cos przypomina rzymskie cyfry... sprawdz to.... Mala podpowiedz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

PS2. Na te cyfry naprowadzilo mnie to, ze w 18 linii N musi byc liczba bo inaczej wyjdzie NaN....
Go to the top of the page
+Quote Post
marlowe
post
Post #3





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


@Paul: bardzo dziękuję, już byłem pewien, że nikt nie odnajdzie tego posta w czeluściach forum ;-) Dzięki za odpowiedzi. Tak- też myślałem nad tą rzymską liczbą w głownej ramce ;-) Daj proszę znać jakbyś rozszyfrował ten zapis "-->".
Pozdrawiam.
Bartek
Go to the top of the page
+Quote Post
Paul
post
Post #4





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


Szukalem troche, ale nie udalo mi sie znalezc.... Dlatego postanowailem zaeksperymenowac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Oto wyniiki eksperymentu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Kod
o = 2;

//s=o-->50; // false

//s=o--<50; // true

// s=o++==o++; // false

//s = o -- < 2; // false - ze spacjami tez dziala :)

//s=o--<=1; // false, a niby 1 <= 1 wiec powinno dac true;

s=o--==2; // true, a 1 == 2 wiec powinno dac false;


alert(s);
alert(o);



No i wyszlo mi na to, ze nie jest to stricte strzalka, ale jakas hybryda kilku innych operatorow skoro dziala i ze spacjami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Z poczatku myslalem, ze to zmiejsza wartosc zmiennej a potem porownuje... No ale, doszedlem do wniosku, ze to porownuje nie zmniejszone, a dopiero potem zmniejsza... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dobrze by bylo akby ktos mogl specyzowac to zagadnienie bo to co ja napisalem to tylko takie moje przypuszczenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marlowe
post
Post #5





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


Ja mam trzy refleksje na temat tej strzałki:
- o dziwo taka strzałka powoduje zakończenie komentarza HTML! Nawet jeśli nie ma przerw po bokach, to takie coś powoduje, że w przeglądarkach bez js pokaże się treść skryptu po tej strzałce (brak przerw po bokach strzałki nie ma tu znaczenia);
- dziwnie się zachowuje to wyrażenie- teoretycznie tak jak dekrementacja a potem porównanie ale z przykładu, który napisałem wynika, że jest to porównanie, nie wiadomo dlaczego, większe/mniejsze lub równe;
- zastanawiam się czy nie ma to związku może z wyrażeniem "dąży do" chociaż pojęcia nie mam co by to miało oznaczać w praktyce...

Ten post edytował marlowe 7.07.2004, 00:16:48
Go to the top of the page
+Quote Post

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: 24.08.2025 - 06:08