# Python3 — шахівниця через матрицю, використовує слайси
# Працює без зовнішніх бібліотек (тільки стандартна бібліотека)
import sys
def make_chessboard(n=8, dark='■', light='□'):
"""
Повертає матрицю n x n з символами шахівниці.
Використано слайси: first_row[:] щоб копіювати, second_row = first_row[::-1] щоб отримати інверсію.
"""
# створимо перший рядок (сітка починається світлим на (0,0))
first_row = [light if j % 2 == 0 else dark for j in range(n)]
# інвертований рядок — просто реверс першого (це демонстрація слайсу[::-1])
second_row = first_row[::-1]
# важливо копіювати списки (через slice [:]) щоб кожен рядок був окремим об'єктом
board = []
for i in range(n):
if i % 2 == 0:
board.append(first_row[:]) # копія першого рядка
else:
board.append(second_row[:]) # копія інвертованого
return board
def print_board(board):
for row in board:
# друкуємо з пробілами; можна змінити формат
print(' '.join(row))
def main():
# читаємо необов'язковий розмір n з stdin (наприклад: в Ideone можна ввести 8)
data = sys.stdin.read().strip().split()
if data:
try:
n = int(data[0])
if n <= 0:
raise ValueError
except ValueError:
print("Перший аргумент має бути додатнім цілим числом, використовується 8.")
n = 8
else:
n = 8
board = make_chessboard(n)
print_board(board)
if __name__ == "__main__":
main()
IyBQeXRob24zIOKAlCDRiNCw0YXRltCy0L3QuNGG0Y8g0YfQtdGA0LXQtyDQvNCw0YLRgNC40YbRjiwg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GUINGB0LvQsNC50YHQuAojINCf0YDQsNGG0Y7RlCDQsdC10Lcg0LfQvtCy0L3RltGI0L3RltGFINCx0ZbQsdC70ZbQvtGC0LXQuiAo0YLRltC70YzQutC4INGB0YLQsNC90LTQsNGA0YLQvdCwINCx0ZbQsdC70ZbQvtGC0LXQutCwKQppbXBvcnQgc3lzCgpkZWYgbWFrZV9jaGVzc2JvYXJkKG49OCwgZGFyaz0n4pagJywgbGlnaHQ9J+KWoScpOgogICAgIiIiCiAgICDQn9C+0LLQtdGA0YLQsNGUINC80LDRgtGA0LjRhtGOIG4geCBuINC3INGB0LjQvNCy0L7Qu9Cw0LzQuCDRiNCw0YXRltCy0L3QuNGG0ZYuCiAgICDQktC40LrQvtGA0LjRgdGC0LDQvdC+INGB0LvQsNC50YHQuDogZmlyc3Rfcm93WzpdINGJ0L7QsSDQutC+0L/RltGO0LLQsNGC0LgsIHNlY29uZF9yb3cgPSBmaXJzdF9yb3dbOjotMV0g0YnQvtCxINC+0YLRgNC40LzQsNGC0Lgg0ZbQvdCy0LXRgNGB0ZbRji4KICAgICIiIgogICAgIyDRgdGC0LLQvtGA0LjQvNC+INC/0LXRgNGI0LjQuSDRgNGP0LTQvtC6ICjRgdGW0YLQutCwINC/0L7Rh9C40L3QsNGU0YLRjNGB0Y8g0YHQstGW0YLQu9C40Lwg0L3QsCAoMCwwKSkKICAgIGZpcnN0X3JvdyA9IFtsaWdodCBpZiBqICUgMiA9PSAwIGVsc2UgZGFyayBmb3IgaiBpbiByYW5nZShuKV0KICAgICMg0ZbQvdCy0LXRgNGC0L7QstCw0L3QuNC5INGA0Y/QtNC+0Log4oCUINC/0YDQvtGB0YLQviDRgNC10LLQtdGA0YEg0L/QtdGA0YjQvtCz0L4gKNGG0LUg0LTQtdC80L7QvdGB0YLRgNCw0YbRltGPINGB0LvQsNC50YHRg1s6Oi0xXSkKICAgIHNlY29uZF9yb3cgPSBmaXJzdF9yb3dbOjotMV0KCiAgICAjINCy0LDQttC70LjQstC+INC60L7Qv9GW0Y7QstCw0YLQuCDRgdC/0LjRgdC60LggKNGH0LXRgNC10Lcgc2xpY2UgWzpdKSDRidC+0LEg0LrQvtC20LXQvSDRgNGP0LTQvtC6INCx0YPQsiDQvtC60YDQtdC80LjQvCDQvtCxJ9GU0LrRgtC+0LwKICAgIGJvYXJkID0gW10KICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgIGlmIGkgJSAyID09IDA6CiAgICAgICAgICAgIGJvYXJkLmFwcGVuZChmaXJzdF9yb3dbOl0pICAgIyDQutC+0L/RltGPINC/0LXRgNGI0L7Qs9C+INGA0Y/QtNC60LAKICAgICAgICBlbHNlOgogICAgICAgICAgICBib2FyZC5hcHBlbmQoc2Vjb25kX3Jvd1s6XSkgICMg0LrQvtC/0ZbRjyDRltC90LLQtdGA0YLQvtCy0LDQvdC+0LPQvgoKICAgIHJldHVybiBib2FyZAoKZGVmIHByaW50X2JvYXJkKGJvYXJkKToKICAgIGZvciByb3cgaW4gYm9hcmQ6CiAgICAgICAgIyDQtNGA0YPQutGD0ZTQvNC+INC3INC/0YDQvtCx0ZbQu9Cw0LzQuDsg0LzQvtC20L3QsCDQt9C80ZbQvdC40YLQuCDRhNC+0YDQvNCw0YIKICAgICAgICBwcmludCgnICcuam9pbihyb3cpKQoKZGVmIG1haW4oKToKICAgICMg0YfQuNGC0LDRlNC80L4g0L3QtdC+0LHQvtCyJ9GP0LfQutC+0LLQuNC5INGA0L7Qt9C80ZbRgCBuINC3IHN0ZGluICjQvdCw0L/RgNC40LrQu9Cw0LQ6INCyIElkZW9uZSDQvNC+0LbQvdCwINCy0LLQtdGB0YLQuCA4KQogICAgZGF0YSA9IHN5cy5zdGRpbi5yZWFkKCkuc3RyaXAoKS5zcGxpdCgpCiAgICBpZiBkYXRhOgogICAgICAgIHRyeToKICAgICAgICAgICAgbiA9IGludChkYXRhWzBdKQogICAgICAgICAgICBpZiBuIDw9IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHByaW50KCLQn9C10YDRiNC40Lkg0LDRgNCz0YPQvNC10L3RgiDQvNCw0ZQg0LHRg9GC0Lgg0LTQvtC00LDRgtC90ZbQvCDRhtGW0LvQuNC8INGH0LjRgdC70L7QvCwg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8gOC4iKQogICAgICAgICAgICBuID0gOAogICAgZWxzZToKICAgICAgICBuID0gOAoKICAgIGJvYXJkID0gbWFrZV9jaGVzc2JvYXJkKG4pCiAgICBwcmludF9ib2FyZChib2FyZCkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCkK