2015-04-18 6 views
7

Quindi sono piuttosto turbato Non riesco a capire qualcosa di apparentemente banale dato che sono abbastanza esperto in Java, ma comunque il mio professore per introduzione a Python ci ha assegnato un laboratorio dove dobbiamo creare un modello con lettere in base alla posizione di riga e colonna. Niente loop o iterazioni, solo dichiarazioni condizionali.Determina la lettera in base a riga e col python

Ad esempio, questa funzione:

def letter(row, col): 
    if row>col: 
     return 'T' 
    else: 
     return 'W' 

sarebbe resa:

WWWWWWWWWWWWWWWWWWWW 
TWWWWWWWWWWWWWWWWWWW 
TTWWWWWWWWWWWWWWWWWW 
TTTWWWWWWWWWWWWWWWWW 
TTTTWWWWWWWWWWWWWWWW 
TTTTTWWWWWWWWWWWWWWW 
TTTTTTWWWWWWWWWWWWWW 
TTTTTTTWWWWWWWWWWWWW 
TTTTTTTTWWWWWWWWWWWW 
TTTTTTTTTWWWWWWWWWWW 
TTTTTTTTTTWWWWWWWWWW 
TTTTTTTTTTTWWWWWWWWW 
TTTTTTTTTTTTWWWWWWWW 
TTTTTTTTTTTTTWWWWWWW 
TTTTTTTTTTTTTTWWWWWW 
TTTTTTTTTTTTTTTWWWWW 
TTTTTTTTTTTTTTTTWWWW 
TTTTTTTTTTTTTTTTTWWW 
TTTTTTTTTTTTTTTTTTWW 
TTTTTTTTTTTTTTTTTTTW 

se eseguito attraverso il suo file di driver di riga e col entrambi pari 20.

Quello Sono bloccato con sta creando una funzione per il modello:

XOOOOOX 
OXOOOXO 
OOXOXOO 
OOOXOOO 
OOXOXOO 
OXOOOXO 
XOOOOOX 

Si prega di NON cucchiaio mi da la risposta, piuttosto indicarmi nella giusta direzione.

Finora so che le X per la diagonale sinistra-> destra possono essere identificate quando riga == col. È la diagonale destra-> sinistra con cui ho problemi.

Grazie mille.

+0

Potete chiarire come la funzione data produce l'output specificato - cioè, qual è il "file del driver" e come lo si "scorre"? – TigerhawkT3

+1

Per eseguire la diagonale in alto a destra -> in basso a sinistra, è necessario conoscere la larghezza (o l'altezza, poiché è quadrata). Nel tuo esempio, è 7. Potrebbe essere sufficiente per iniziare. – jedwards

+0

Oh, e il tuo professore considera la ricorsione come nella stessa categoria dei loop? : P – TigerhawkT3

risposta

6

Verificare la relazione tra la riga e la colonna di ciascuna posizione di X. Quindi, dividi questo problema in due: un aspetto di esso è la linea che va da sinistra a sinistra a destra in basso, e l'altro aspetto è la linea che va da in basso a sinistra a in alto a destra.

Guardiamo in alto a sinistra a in basso a destra X s:

row: column: 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 

Penso che si possa stabilire una relazione tra riga e colonna in base a questo.

Ora come circa l'altra linea, dal basso-sinistra a in alto a destra:

row: column: 
1 7 
2 6 
3 5 
4 4 
5 3 
6 2 
7 1 

vostro gentile suggerimento qui è "+".

Quindi, se la riga e la colonna di un elemento hanno la prima relazione specificata or il secondo, si inserisce uno X lì.

Spero che sia stata una buona dose di aiuto.

+1

Ottima spiegazione. Ma sospetto che 'row' e' col' siano a base 0, non a base 1. (Anche se l'OP potrebbe imparare qualcosa elaborando quello che il suo codice farebbe male se ha indovinato sbagliato in ogni modo, e poi eseguendolo per verificare ...) – abarnert

+0

Ehi, grazie mille! Questa è stata un'ottima risposta, e apprezzo il dolce suggerimento, haha! –

+0

Penso che in questo caso la spiegazione sia indipendente dall'indice - potrebbe essere stato 'n',' n + 1', ecc. Inoltre, ho provato una funzione usando questo algoritmo, eseguendola attraverso il driver che ci hai dato commento, e si è comportato come previsto. :) – TigerhawkT3

Problemi correlati