IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zistenie hodnoty

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Člen
Člen
Avatar
Člen:3.12.2014 9:39

Ahojte :)
Mám kód:

private boolean b(String paramString)
  {
    if (this.jdField_a_of_type_JavaLangString.length() != 23)
      return false;
    String str = paramString.substring(0, 5);
    str = str + paramString.substring(6, 11);
    str = str + paramString.substring(12, 17);
    int i = Integer.parseInt((paramString = str += paramString.substring(18, 23)).substring(0, 3));
    int j = Integer.parseInt(paramString.substring(3, 6));
    int k = Integer.parseInt(paramString.substring(6, 9));
    int m = Integer.parseInt(paramString.substring(9, 12));
    int n = Integer.parseInt(paramString.substring(12, 15));
    Integer.parseInt(paramString.substring(15, 17));
    int i1 = Integer.parseInt(paramString.substring(17, 20));
    int i2 = 0;
    i2 = (i2 = (i2 = (i2 = (i2 = 0x23 ^ i) ^ j) ^ k) ^ m) ^ n;
    i2 += 381;
    return i2 %= 1000 == i1;

A potrebujem zistiť hodnotu kedy sa bude výraz

i2 = (i2 = (i2 = (i2 = (i2 = 0x23 ^ i) ^ j) ^ k) ^ m) ^ n;
    i2 += 381;
    return i2 %= 1000 == i1;

rovnať hodnote i1 (kedy bude návrat TRUE)
Ďakujem za pomoc :)

Odpovědět
3.12.2014 9:39
...
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Člen
Ondřej Štorc:3.12.2014 9:47

Nevim co přesně chceš, ale jestli myslíš ten return tak by to mělo vypadat spíš takto:

return (i2 % 1000) == i1
Editováno 3.12.2014 9:47
Nahoru Odpovědět
3.12.2014 9:47
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Člen
Člen
Avatar
Odpovídá na Ondřej Štorc
Člen:3.12.2014 10:15

Pridávam pseudokód:

str = paramString.substring(0, 21);
int i = parseInt(str.substring(0, 3));
int j = parseInt(str.substring(3, 6));
int k = parseInt(str.substring(6, 9));
int m = parseInt(str.substring(9, 12))
int n = parseInt(str.substring(12, 15));
if (!IsInteger(str.substring(15, 17)))
throw new Exception("");
int i1 = parseInt(str.substring(17, 20));
int i2 = (((((35 ^ i) ^ j) ^ k) ^ m) ^ n) + 381;
i2 = i2 % 1000
if (i2 == i1)
return 1;
return 0;

i až n sú 3miestne inty, dôležité sú čísla 14 (prvých 14 čísel) a posledné 3 (čísla 17. až 19.)
Porovnáva sa, či je zvyšok výrazu

(35 (umocnené postupne až po n) + 381)

po vydelení 1000 rovnaký ako hodnota v i1 (vracia sa true alebo false)

Editováno 3.12.2014 10:15
Nahoru Odpovědět
3.12.2014 10:15
...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.