2014-02-09 4 views
0
s = [0,2,6,4,7,1,5,3] 


def row_top(): 
    print("|--|--|--|--|--|--|--|--|") 

def cell_left(): 
    print("| ", end = "") 

def solution(s): 
    for i in range(8): 
     row(s[i]) 

def cell_data(isQ): 
    if isQ: 
     print("X", end = "") 
     return() 
    else: 
     print(" ", end = "") 


def row_data(c): 
    for i in range(9): 
     cell_left() 
     cell_data(i == c) 

def row(c): 
    row_top() 
    row_data(c) 
    print("\n") 


solution(s) 

Мой вывод имеет пространство каждые две строки, когда не должно быть, я не уверен, где он создает эту дополнительную строку.Создание шахматной доски для головоломки 8 Queens

Выход предполагает, чтобы выглядеть следующим образом:

|--|--|--|--|--|--|--|--| 
| | | | | | X| | | 
|--|--|--|--|--|--|--|--| 
| | | X| | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | | X| | | | 
|--|--|--|--|--|--|--|--| 
| | | | | | | | X| 
|--|--|--|--|--|--|--|--| 
| X| | | | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | X| | | | | 
|--|--|--|--|--|--|--|--| 
| | X| | | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | | | | X| | 
|--|--|--|--|--|--|--|--| 

Я знаю, что шахматная доска не очень квадратная, но это только черновик в данный момент.

+0

http://stackoverflow.com/questions/21654443/ascii-art-in-python-not-printing-in-one-line? одна и та же ? –

+0

читать комментарии по этому поводу ... – pakiboii

+1

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

ответ

0

Вы по-прежнему печати дополнительный символ новой строки:

def row(c): 
    row_top() 
    row_data(c) 
    print("\n") 

Снимите явный «» \ n'` характер:

def row(c): 
    row_top() 
    row_data(c) 
    print() 

или еще лучше, следовать мой предыдущий ответ более тесно и печать закрытие | бар:

def row(c): 
    row_top() 
    row_data(c) 
    print('|') 
1

Вот альтернативная реализация:

def make_row(rowdata, col, empty, full): 
    items = [col] * (2*len(rowdata) + 1) 
    items[1::2] = (full if d else empty for d in rowdata) 
    return ''.join(items) 

def make_board(queens, col="|", row="---", empty=" ", full=" X "): 
    size = len(queens) 
    bar = make_row(queens, col, row, row) 
    board = [bar] * (2*size + 1) 
    board[1::2] = (make_row([i==q for i in range(size)], col, empty, full) for q in queens) 
    return '\n'.join(board) 

queens = [0,2,6,4,7,1,5,3] 
print(make_board(queens)) 

что приводит к

|---|---|---|---|---|---|---|---| 
| X | | | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | X | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | | X | | 
|---|---|---|---|---|---|---|---| 
| | | | | X | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | | | X | 
|---|---|---|---|---|---|---|---| 
| | X | | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | X | | | 
|---|---|---|---|---|---|---|---| 
| | | | X | | | | | 
|---|---|---|---|---|---|---|---| 

Это сейчас очень легко изменить ширину платы за счет изменения строк, передаваемых грести, пустой, полный; Я добавил дополнительный символ для каждого, в результате чего (несколько) квадратная доска.

Смежные вопросы