Hirdetés

Új hozzászólás Aktív témák

  • Miracle
    senior tag

    Sziasztok!

    Új problémával állok elő. Szóval van egy 2 dimenziós tömb, amiben azt vizsgálom, hogy egy adott elemtől indulva az elemet körbevevú 8 irányban találok-e még legalább 3 ugyanolyan elemet (amőba jellegű a dolog). A probléma azt, hogy a tömb belsejében tökéletesen működik a dolog, de a széleken mintha összeadná az összes találatot. Emiatt megcsináltam úgy, hogy minden irányban új változó tárolja a találatot, de így sem működik. Nincs ötletem, hogy mi a hiba. Természtesen a tömböknél figyelni kell, hogy ne lépje túl a tömb határait. Bemásolom ide az adott függvény kódját, hátha valaki rátalála hibára:

    public boolean searchEngine() //need to check
    {
    int clone1=0;
    int clone2=0;
    int clone3=0;
    int clone4=0;
    int clone5=0;
    int clone6=0;
    int clone7=0;
    int clone8=0;

    for(row=0;row<size;row++)
    {
    for(col=0;col<size;col++)
    {
    for(int count=1;row+count<game.length;count++){
    if (game[row+count][col].equals(game[row][col])) {
    clone1++;
    if (clone1>=3) return true;}
    else clone1=0;
    }
    for(int count=1;row-count>-1;count++)
    if (game[row-count][col].equals(game[row][col])) {clone2++;
    if (clone2>=3) return true;}
    else clone2=0;
    for(int count=1;col+count<game.length;count++)
    if (game[row][col+count].equals(game[row][col])) {clone3++;
    if (clone3>=3) return true;}
    else clone3=0;
    for(int count=1;col-count>-1;count++)
    if (game[row][col-count].equals(game[row][col])) {
    clone4++;
    if (clone4>=3) return true;}
    else clone4=0;
    for(int count=1;(row+count<game.length) && (col+count<game.length);count++)
    if (game[row+count][col+count].equals(game[row][col])) {clone5++;
    if (clone5>=3) return true;}
    else clone5=0;
    for(int count=1;(row-count>-1) && (col-count>-1);count++)
    if (game[row-count][col-count].equals(game[row][col])) {
    clone6++;
    if (clone6>=3) return true;}
    else clone6=0;
    for(int count=1;(row+count<game.length)&& (col-count>-1);count++)
    if (game[row+count][col-count].equals(game[row][col])) {clone7++;
    if (clone7>=3) return true;}
    else clone7=0;
    for(int count=1;(row-count>-1) && (col+count<game.length) ;count++)
    if (game[row-count][col+count].equals(game[row][col])) {clone8++;
    if (clone8>=3) return true;}
    else clone8=0;
    }
    }
    return false;
    }

    Akinek van ötlete, ne kíméljen!

    mondjuk azt nem vágom, hogy mit akar az a hosszú függvény amit leírtál, mert a kommenteknél csak a whitespacekkel bántál fukarabbul(jó, ez lehet, hogy a PH), nomeg hajnali 2 van... de abból amit mondtál talán segíthet, hogy ha n*m-es a meződ, akkor (n+2)*(m+2) méretű tömbben tárolod, aminek a szélső soraiban és oszlopaiban nincsen csak 0 vagy az, amivel jelölöd, hogy nincs ott semmi, és okosan írod meg a hozzáférő-függvényeket, úgy, hogy a felhasználó ebből semmit se lásson, tobábbra is n*m-esként kell paraméterezni. azaz amikor kap egy n*mes paramétert, hozzáad egyet egyet.
    mondjuk nyilván van elegéns megoldás is a problémára, de ahoz egy szépen igazított kód kellene ide bekommentelve.

Új hozzászólás Aktív témák