2015-04-18 4 views
7

Так что я очень расстроен. Я не могу понять что-то такое, казалось бы, тривиальное, поскольку я довольно хорошо разбираюсь в Java, но в любом случае мой профессор для введения в Python назначил нам лабораторию где мы должны создать шаблон с буквами на основе строки и столбца. Нет циклов или итераций, просто условных операторов.Определить букву на основе строки и col-python

Например, эта функция:

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

уступит:

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

если пробежать его файл драйвера с строки и седловине как сравнявшись 20.

одной я застрял с созданием функции для рисунка:

XOOOOOX 
OXOOOXO 
OOXOXOO 
OOOXOOO 
OOXOXOO 
OXOOOXO 
XOOOOOX 

Пожалуйста, не наденьте мне ответ, скорее укажите мне в правильном направлении.

До сих пор я знаю, что X для левой-правой диагонали можно идентифицировать, когда строка == col. У меня проблемы с правой и левой диагональю.

Большое спасибо.

+0

Можете ли вы пояснить, как данная функция производит данный вывод - то есть, что такое «файл драйвера» и как он «прогоняет» его? – TigerhawkT3

+1

Чтобы сделать верхнюю правую -> нижнюю левую диагональ, вам нужно знать ширину (или высоту, так как она квадратная). В вашем примере это 7. Этого может быть достаточно, чтобы вы начали. – jedwards

+0

О, и ваш профессор рассматривает рекурсию в той же категории, что и петли? : P – TigerhawkT3

ответ

6

Посмотрите на соотношение между строкой и столбцом каждой позиции X. Затем разделите эту проблему на две части: один из аспектов - это линия, которая идет от верхнего левого к нижнему правую, а другой аспект - это линия, которая идет от нижнего левого к верхнему праву.

Давайте посмотрим на верхний левый в правый нижний X с:

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

Я думаю, вы можете определить связь между строкой и столбцом на его основе.

Теперь как насчет другой линии, снизу-слева сверху справа:

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

Ваш нежный намек здесь «+».

Итак, если строка и столбец элемента имеют первую указанную связь or, вы ставите там X.

Я надеюсь, что это была правильная сумма помощи.

+1

Отличное объяснение. Но я подозреваю, что 'row' и' col' основаны на 0, а не 1. (Хотя ОП мог бы чему-то научиться, выработав то, что его код будет делать неправильно, если он угадал неправильно, и затем запустил его, чтобы проверить ...) – abarnert

+0

Эй, спасибо большое! Это был отличный ответ, и я ценю нежный намек, ха-ха! –

+0

Я думаю, что в этом случае объяснение является индексом-агностиком - оно могло быть «n», «n + 1» и т. Д. Кроме того, я тестировал функцию, используя этот алгоритм, запуская ее через драйвер, который вы указали в этом комментарий, и он вел себя так, как ожидалось. :) – TigerhawkT3