Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde
Avatar
Cheethell
Člen
Avatar
Cheethell:8. listopadu 22:03

Ahoj, napsal jsem kod, ktery by podle mych predstav mel scitat hodnoty, ktere lezi na diagonalach a maji stejnou hodnotu jako moje prvne zvolena souradnice v tabulce. Jenze program to pocita spatne a ja nevim proc.

Zkusil jsem:

def diagonala(row, column, data):
    value = data[row][column]
    same = 0

    while(row >= 0 and column >= 0):
        if data[row][column]== value:
            same += 1
            column = column-1
            row = row-1
            continue
        else:
            break

    while(row >= 0 and column <= len(data[column])):
        if data[row][column]== value:
            same += 1
            column = column+1
            row = row-1
            continue
        else:
            break

    while(row <= len(data[row]) and column <= len(data[column])):
        if data[row][column]== value:
            same += 1
            column = column+1
            row = row+1
            continue
        else:
            break

    while(r <= len(data[row]) and column >= 0):
        if data[row][column]== value:
            same += 1
            column = column-1
            row = row+1
            continue
        else:
            break




    return(same)

if __name__ == "__main__":
    row = 2
    column = 2
    data = [ \
        [0, 1, 1, 1, 1, 0, 0, 0], \
        [1, 1, 0, 1, 0, 1, 1, 1], \
        [0, 1, 1, 0, 0, 1, 0, 1], \
        [1, 1, 1, 0, 1, 1, 0, 1], \
        [0, 1, 0, 0, 0, 0, 1, 1], \
        [1, 0, 1, 1, 0, 0, 0, 0], \
        [0, 1, 1, 1, 0, 1, 1, 1], \
        [1, 1, 0, 1, 0, 1, 1, 1]]
    print(diagonala(row, column, data))

Chci docílit: secteni hodnot v 2D poli ktere se nachazi na diagonalach a maji stejnou hodnotu jako jsem si napocatku zvolil lib.policko v poli. Scitani na diagonalach probiha do doby nez na diagonale se najde cislo ktere je odlisne od hodnoty, kterou melo napocatku zvolene policko v poli.
same - scita stejne hodnoty jako je hodnota na prvne zvolenem policku v poli.

 
Odpovědět 8. listopadu 22:03
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9. listopadu 15:31

Diagonala je
x-1, y-1
x-1, y+1
x+1, y-1
x+1, y+1
To tam tak nejak mas.

Pokud plati kod

if data[row][column]== value: // dvourozmerne pole data [row, col]

Pak tento kod nedava smysl

column <= len(data[column]) // data pole [col]

A mozna ta mas i jine chyby. Doporucuji zacit znovu a pouzivat nazvy promennych, ktere ti budou davat smysl. treba x, y misto col, row.

Pokud bys vyzadoval rychlost, vyhni se funkcim v podminkach pro cyklus

while(r <= len(data[row]) and column >= 0): // pomala funkce, spousti se v kazdem cyklu, znovu a znovu kontroluje delku pole (ta se mohla zmenit!)
while(r <= 8 and column >= 0): // cislo je rychlejsi
while(r <= u and column >= 0): // promenna je skoro stejne rychla jako cislo
 
Nahoru Odpovědět 9. listopadu 15:31
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 2 zpráv z 2.