2015-04-18 13 views
7

Vì vậy, tôi khá thất vọng Tôi không thể hình dung điều này có vẻ tầm thường khi tôi khá thông thạo Java, nhưng dù sao giáo sư của tôi được giới thiệu về Python đã gán cho chúng tôi một phòng thí nghiệm nơi chúng ta phải tạo một mẫu với các chữ cái dựa trên vị trí hàng và cột. Không có vòng lặp hoặc lặp lại, chỉ là câu lệnh có điều kiện.Xác định chữ dựa trên hàng và col - python

Ví dụ, chức năng này:

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

sẽ mang lại:

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

nếu chạy qua tập lái xe của mình với hàng và cột cả hai bằng 20.

Người Tôi bị mắc kẹt với việc tạo chức năng cho mẫu:

XOOOOOX 
OXOOOXO 
OOXOXOO 
OOOXOOO 
OOXOXOO 
OXOOOXO 
XOOOOOX 

Xin vui lòng KHÔNG spoonfeed tôi câu trả lời, thay vì chỉ cho tôi đi đúng hướng.

Cho đến nay tôi biết rằng dấu X cho đường chéo bên trái - bên phải có thể được xác định khi hàng == col. Đó là right-> left diagonal Tôi đang gặp vấn đề.

Thanks a lot.

+0

Bạn có thể làm rõ cách các chức năng cho sản xuất sản lượng nhất định - tức là, "tài xế tập tin" là gì và làm thế nào để "chạy qua" nó? – TigerhawkT3

+1

Để làm góc trên bên phải -> đường chéo dưới cùng bên trái, bạn sẽ cần phải biết chiều rộng (hoặc chiều cao, vì nó là hình vuông). Trong ví dụ của bạn, đó là 7. Điều đó có thể đủ để bạn bắt đầu. – jedwards

+0

Ồ, giáo sư của bạn có xem xét đệ quy để có cùng danh mục với vòng lặp không? : P – TigerhawkT3

Trả lời

6

Nhìn vào mối quan hệ giữa hàng và cột của từng vị trí của X. Sau đó, chia nhỏ vấn đề này thành hai: một khía cạnh của nó là dòng đi từ trên trái sang dưới cùng bên phải, và khía cạnh khác là dòng đi từ dưới cùng bên trái lên trên cùng bên phải.

Hãy nhìn vào phía trên bên trái xuống dưới bên phải X s:

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

Tôi nghĩ rằng bạn có thể xác định một mối quan hệ giữa hàng và cột dựa trên đó.

Bây giờ làm thế nào về đầu dây bên kia, từ phía dưới bên trái để trên bên phải:

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

gợi ý nhẹ nhàng của bạn ở đây là "+".

Vì vậy, nếu hàng và cột của phần tử có mối quan hệ được chỉ định đầu tiên or thứ hai, bạn đặt X tại đó.

Tôi hy vọng đó là số tiền trợ giúp phù hợp.

+1

Giải thích tuyệt vời. Nhưng tôi nghi ngờ 'hàng' và' col' là 0 dựa trên, không dựa trên 1. (Mặc dù OP có thể học một cái gì đó bằng cách làm việc ra những gì mã của mình sẽ làm sai nếu ông đoán sai mỗi cách, và sau đó chạy nó để xác minh ...) – abarnert

+0

Hey, cảm ơn rất nhiều! Đây là một câu trả lời tuyệt vời, và tôi đánh giá cao gợi ý nhẹ nhàng, haha! –

+0

Tôi nghĩ rằng trong trường hợp này giải thích là chỉ số bất khả tri - nó có thể là 'n',' n + 1', v.v. Ngoài ra, tôi đã thử nghiệm một hàm sử dụng thuật toán này, chạy nó thông qua trình điều khiển bạn đã đưa vào bình luận, và nó cư xử như mong đợi. :) – TigerhawkT3

Các vấn đề liên quan