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: Diagonaly

Aktivity
Avatar
Cheethell
Člen
Avatar
Cheethell:8.11.2018 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.11.2018 22:03
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.11.2018 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.11.2018 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.