Δημοσιεύτηκε: 04 Μαρ 2012, 19:50
migf1 έγραψε:π.χ. η συνάρτηση: pos_isblocked() μπορεί να βελτιστοποιηθεί ώστε να μη τσεκάρει και στις 4 κατευθύνσεις, αλλά να επσιτρέφει μόλις βρει την 1η κατεύθυνση που ΔΕΝ είναι μπλοκαρισμένη
Θα μπορούσε να γίνει one-liner:
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
_Bool pos_isblocked( const int pos, const char tab[] )
{
return (ROW(pos) == 0 || '.' != tab[POSUP(pos)]) && (ROW(pos) == NROWS-1 || '.' != tab[POSDN(pos)]) && (COL(pos) == 0 || '.' != tab[POSLF(pos)]) && (COL(pos) == NCOLS-1 || '.' != tab[POSRT(pos)]);
}
Έτσι θα επιστέψει αμέσως μόλις βρει μία κατεύθυνση που δεν είναι μπλοκαρισμένη.
Βέβαια δυστυχώς είναι πολύ μεγάλη η γραμμή.
Τελικά το λάθος στην λογική του δικού μου κώδικα είναι αυτό ακριβώς που έγραψα: viewtopic.php?p=233546#p233546
Θα το διορθώσω και θα ποστάρω την δική μου λύση ξανά σε two dimensional array.