Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.99/181: Рейтинг темы: голосов - 181, средняя оценка - 4.99
1 / 1 / 0
Регистрация: 06.05.2020
Сообщений: 9

Ходы коня

11.05.2020, 18:38. Показов 37787. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые он бьет. Клетку, где стоит конь, отметьте английской буквой “K”. Клетки, которые он, отметьте символами “*”. Остальные клетки заполните точками.
Написала код, но что-то не получается:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
ki, kj = map(int, input().split())
b = [['.'] * 12] for i in range(12)]
moves = [[1, 2], [1, -2], [-1, 2], [-1, -2],
        [2, 1], [2, -1], [-2, 1], [-2, -1]]
ki += 1
kj += 1
for di, dj in moves:
    i = ki + di
    j = kj + dj
    b[i][j] = '*'
b[ki][kj] = 'k'
for row in b[2 : -2]:
    print(''. join(row[2 : -2]))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2020, 18:38
Ответы с готовыми решениями:

Ходы коня — 2
Ходы коня — 2 Конь находится на шахматной доске 8×8. Определите координаты всех клеток, куда можно прийти конём за два хода. ...

Ходы коня
Ход конем Дана прямоугольная доска N∗M (N строк и M столбцов). В левом верхнем углу находится шахматный конь, которого необходимо...

Ходы коня
На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые он бьет. Клетку, где стоит конь, отметьте английской...

24
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
11.05.2020, 22:27
Поправил 2 строку
Python
1
b = [['.'] * 12 for i in range(12)]
А что не получается? На каком тесте падает?
0
9 / 9 / 1
Регистрация: 31.03.2020
Сообщений: 19
12.05.2020, 13:01
ВОТ РЕШЕНИЕ:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Knight:
    def __init__(self, row, col, color):
        self.row, self.col = row, col
        self.color = color
 
    def correct_coords(self, row, col):
        return 0 <= row < 8 and 0 <= col < 8
 
    def set_position(self, row, col):
        self.row, self.col = row, col
 
    def char(self):
        return 'N'
 
    def get_color(self):
        return self.color
 
    def can_move(self, row, col):
        if not self.correct_coords(row, col):
            return False
        return (abs(self.row - row) == 2 and abs(self.col - col) == 1) or \
               (abs(self.row - row) == 1 and abs(self.col - col) == 2)
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
12.05.2020, 13:08
z0nGG, Ваш код тут вообще не по делу. Это не из лицея задача. И более того ваш код её не решает.
И вы вообще понимаете, что делаете медвежью услугу? Зачем вы просто сливаете свои решения в каждой теме? Такими темпами люди ничему не научатся.
1
1 / 1 / 0
Регистрация: 29.06.2020
Сообщений: 19
14.07.2020, 22:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a, n, m = [], int(input()) - 1, int(input()) - 1
for i in range(8):
    a.append(['.'] * 8)
a[n][m] = 'K'
for i in range(1, 9):
    if i == 1 and m + 2 <= 7 and n - 1 >= 0:
        a[n - 1][m + 2] = '*'
    elif i == 2 and m + 2 <= 7 and n + 1 <= 7:
        a[n + 1][m + 2] = '*'
    elif i == 3 and n + 2 <= 7 and m + 1 <= 7:
        a[n + 2][m + 1] = '*'
    elif i == 4 and n + 2 <= 7 and m - 1 >= 0:
        a[n + 2][m - 1] = '*'
    elif i == 5 and m - 2 >= 0 and n + 1 < 7:
        a[n + 1][m - 2] = '*'
    elif i == 6 and m - 2 >= 0 and n - 1 >= 0:
        a[n - 1][m - 2] = '*'
    elif i == 7 and m - 1 >= 0 and n - 2 >= 0:
        a[n - 2][m - 1] = '*'
    elif i == 8 and n - 2 >= 0 and m + 1 <= 7:
        a[n - 2][m + 1] = '*'
for i in range(8):
    print(' '.join(a[i]))
Это мой код.
Проверил работает.
1
3 / 2 / 1
Регистрация: 07.06.2019
Сообщений: 24
15.07.2020, 12:08
Задумка автора про отсечение полей понравилась.
После фикса вроде работает все.
Единственно для красоты добавил бы в вывод боковые пробелы "." --> " . " Так нагляднее
0
1 / 1 / 0
Регистрация: 29.06.2020
Сообщений: 19
15.07.2020, 19:53
Он с Сириуса копернул.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
16.07.2020, 13:05
Что такое Сириус? При чём тут Пайтон?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
16.07.2020, 13:42
Kuzia domovenok,

Сириус.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
16.07.2020, 16:19
DmFat, толсто
0
1 / 1 / 0
Регистрация: 29.06.2020
Сообщений: 19
16.07.2020, 20:47
Зайди сюда:
https://edu.sirius.online/#/co... /task_5824
0
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 1
21.08.2020, 15:49
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ki=int(input())
kj=int(input())
b = [['.'] * 12 for i in range(12)]
moves = [1, 2, 1, -2, -1, 2, -1, -2, 2, 1, 2, -1, -2, 1, -2, -1]
ki += 1
kj += 1
for ii in range(0,16,2):
    i = ki + moves[ii]
    j = kj + moves[ii+1]
    b[i][j] = '*'
b[ki][kj] = 'K'
for i in range(2,10):
    for j in range(2,10):
        if(j==9):
            print(b[i][j])
        else:
            print(b[i][j],end=' ')
оно работает.Я тоже долго думал - почему не работает?.Оказалось что в конце строки оставлять пробел нельзя.
0
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
27.03.2021, 11:43
cSERAFIMc,
Уважаемые корифеи Python!
Помогите... Задача именно про ход коня.
Ходы коня
На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые он бьет. Клетку, где стоит конь, отметьте английской буквой “K”. Клетки, которые он бьёт, отметьте символами “*”. Остальные клетки заполните точками.

Входные данные

Программа получает на вход два числа — координаты коня на шахматной доске. Координаты вводятся на одной строке через пробел. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8.

Выходные данные

Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.

Примеры
Ввод
42
Вывод
. . . . . . . .
* . * . . . . .
. . . * . . . .
. K . . . . . .
. . . * . . . .
* . * . . . . .
. . . . . . . .
. . . . . . . .

Вариант №1
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ki=int(input())
kj=int(input())
b = [['.'] * 12 for i in range(12)]
moves = [1, 2, 1, -2, -1, 2, -1, -2, 2, 1, 2, -1, -2, 1, -2, -1]
ki += 1
kj += 1
for ii in range(0,16,2):
    i = ki + moves[ii]
    j = kj + moves[ii+1]
    b[i][j] = '*'
b[ki][kj] = 'K'
for i in range(2,10):
    for j in range(2,10):
        if(j==9):
            print(b[i][j])
        else:
            print(b[i][j],end=' ')
ВЫДАЕТ ВЕРНЫЙ РЕЗУЛЬТАТ, НО НЕ УДОВЛЕТВОРЯЕТ ПРОВЕРКУ НА САЙТЕ СИРИУСА
Вариант №2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
ki, kj = map(int, input().split())
b = [['.'] * 12 for i in range(12)]
moves = [[1, 2], [1, -2], [-1, 2], [-1, -2], 
         [2, 1], [2, -1], [-2, 1], [-2, -1]]
ki += 1
kj += 1
for di, dj in moves:
    i = ki + di
    j = kj + dj
    b[i][j] = '*'
b[ki][kj] = 'K'
for row in b[2,-2]:
    print(''. join(row[2:-2]))
который разобран в видеоразборе - неверный....что в нём не так, неможем понять...
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
27.03.2021, 12:09
eiktyrnir,
Вариант №1
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ki, kj = map(int, input().split())
b = [['.'] * 12 for i in range(12)]
moves = [1, 2, 1, -2, -1, 2, -1, -2, 2, 1, 2, -1, -2, 1, -2, -1]
ki += 1
kj += 1
for ii in range(0, 16, 2):
    i = ki + moves[ii]
    j = kj + moves[ii + 1]
    b[i][j] = '*'
b[ki][kj] = 'K'
for i in range(2, 10):
    for j in range(2, 10):
        if (j == 9):
            print(b[i][j])
        else:
            print(b[i][j], end=' ')
Вариант №2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
ki, kj = map(int, input().split())
b = [['.'] * 12 for i in range(12)]
moves = [[1, 2], [1, -2], [-1, 2], [-1, -2],
         [2, 1], [2, -1], [-2, 1], [-2, -1]]
ki += 1
kj += 1
for di, dj in moves:
    i = ki + di
    j = kj + dj
    b[i][j] = '*'
b[ki][kj] = 'K'
for row in b[2:-2]:
    print(' '.join(row[2:-2]))
Цитата Сообщение от eiktyrnir Посмотреть сообщение
что в нём не так, неможем понять
12 строка
2
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
27.03.2021, 12:44
unfindable_404, 12 строка
Уважаемый подскажите...
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
27.03.2021, 13:39
А что подсказать-то? Я же уже исправленные варианты выложил.
У вас не правильно написан срез.
Python
1
2
3
4
5
# у вас
b[2, -2]
 
# должно быть
b[2:-2]
0
1 / 1 / 0
Регистрация: 28.03.2021
Сообщений: 1
28.03.2021, 15:22
Python
1
2
3
4
5
kx, ky = map(int, input().split(maxsplit=1))
for x in range(1, 9):
    for y in range(1, 9):
        print({0:"K", 5:"*"}.get((x - kx)**2 + (y - ky)**2, "."), end=" ")
    print()
Добавлено через 1 минуту
Python
1
2
3
4
5
kx, ky = map(int, input().split(maxsplit=1))
for x in range(1, 9):
    for y in range(1, 9):
        print({0:"K", 5:"*"}.get((x - kx)**2 + (y - ky)**2, "."), end=" ")
    print()
1
4 / 4 / 0
Регистрация: 28.03.2021
Сообщений: 5
28.03.2021, 21:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
ki, kj = map(int, input().split())
b = [['.']*12 for i in range(12)]
moves = [[1, 2], [1, -2], [-1, 2], [-1, -2], [2, 1], [2, -1], [-2, 1], [-2, -1]]
kj += 1
ki += 1
for di, dj in moves:
    i = ki + di
    j = kj + dj
    b[i][j] = '*'
b[ki][kj] = 'K'
for row in b[2:-2]:
    print(' '.join(row[2:-2]))
4
4 / 4 / 0
Регистрация: 20.03.2021
Сообщений: 54
29.03.2021, 18:42
Mvbalakirev, unfindable_404, ОГРОМНОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!! КАК ВСЕГДА ОЧЕНЬ ВЫРУЧИЛИ И ПОМОГЛИ!!!
1
 Аватар для LeonidVR
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 6
07.08.2021, 14:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
a = []
inputtik = input().split()
n = int(inputtik[0])
m = int(inputtik[1])
n = n - 1
m = m - 1
for gg in range(8):
    a.append(['.'] * 8)
a[n][m] = str('K')
for i in range(1, 9):
    if i == 1 and m + 2 <= 7 and n - 1 >= 0:
        a[n - 1][m + 2] = '*'
    elif i == 2 and m + 2 <= 7 and n + 1 <= 7:
        a[n + 1][m + 2] = '*'
    elif i == 3 and n + 2 <= 7 and m + 1 <= 7:
        a[n + 2][m + 1] = '*'
    elif i == 4 and n + 2 <= 7 and m - 1 >= 0:
        a[n + 2][m - 1] = '*'
    elif i == 5 and m - 2 >= 0 and n + 1 < 7:
        a[n + 1][m - 2] = '*'
    elif i == 6 and m - 2 >= 0 and n - 1 >= 0:
        a[n - 1][m - 2] = '*'
    elif i == 7 and m - 1 >= 0 and n - 2 >= 0:
        a[n - 2][m - 1] = '*'
    elif i == 8 and n - 2 >= 0 and m + 1 <= 7:
        a[n - 2][m + 1] = '*'
for t in range(8):
    print(' '.join(a[t]))
Всё работает. А вот Сириус ошибку выдаёт. ЧТО НЕ ТАК :?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.08.2021, 14:45
Помогаю со студенческими работами здесь

Ходы ферзя
Ходы ферзя На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки, которые он бьет. Клетку, где стоит ферзь,...

Ходы ферзя
На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки, которые он бьет. Клетку, где стоит ферзь, отметьте буквой...

Возможные ходы ладьи
Пусть есть шахматная доска 8х8 и номера клеток a и b, где стоит ладья. Покажите символом *, где стоит ладья и символами ! - все ...

Определить все возможные ходы для следующих фигур
Даны исходная координата клетки (например, B6), где стоит фигура. Определить все возможные ходы для следующих фигур: 8.1. Конь 8.2....

Задача про ход коня
Как известно, в шахматах горизонтальные строки обозначаются цифрами от 1 до 8, считая от расположения белых фигур, стоящих внизу доски, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru