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

Ходы коня — 2

31.03.2020, 11:31. Показов 15005. Ответов 12

Студворк — интернет-сервис помощи студентам
Ходы коня — 2

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

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

В двух строках входного файла заданы два числа — координаты нахождения коня. Числа во входном файле натуральные, не превосходящие 8 по значению.

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

Выведите координаты всех клеток, в которые может переместиться конь после второго хода. Клетки выводятся в следующем порядке: вначале клетки первого ряда слева направо, далее клетки второго ряда и т.д


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

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x, y = int(input()), int(input())
h = [[1, 2], [2, 1], [1, -2], [2, -1], [-1, 2], [-2, 1], [-1, -2], [-2, -1]]
nk = []
sc = []
d = [1, 2, 3, 4, 5, 6, 7, 8]
for i in h:
    if x + i[0] in d:
        if y + i[1] in d:
            nk.append([x + i[0], y + i[1]])
for i in nk:
    for j in h:
        if i[0] + j[0] in d:
            if i[1] + j[1] in d:
                sc.append([i[0] + j[0], i[1] + j[1]])
scc = []
for i in sc:
    if i not in scc:
        scc.append(i)
[print(*i) for i in scc]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2020, 11:31
Ответы с готовыми решениями:

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

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

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

12
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
31.03.2020, 12:12
KiritoSan, А можно пример, как он должен их вывести? Просто, первый ряд имеется ввиду с точки зрения матрицы, то есть верхний или с точки зрения шахматной доски, то есть нижний?
0
2 / 2 / 0
Регистрация: 26.03.2019
Сообщений: 35
31.03.2020, 13:04  [ТС]
Да, конечно:
Ввод:
5
7

Вывод:
3 3
5 3
7 3
2 4
4 4
6 4
8 4
1 5
5 5
2 6
4 6
6 6
8 6
1 7
3 7
5 7
7 7
2 8
4 8



Ввод:
7
3

Вывод:
3 1
7 1
4 2
6 2
8 2
3 3
5 3
7 3
4 4
6 4
8 4
3 5
7 5
4 6
6 6
8 6
5 7
7 7
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
31.03.2020, 13:45
Добавьте эту строку перед выводом:
Python
1
scc.sort(key=lambda x: (x[1], x[0]))
Добавлено через 17 минут
Цитата Сообщение от KiritoSan Посмотреть сообщение
Да, конечно:
Ввод:
5
7
Вывод:
3 3
5 3
7 3
2 4
4 4
6 4
8 4
1 5
5 5
2 6
4 6
6 6
8 6
1 7
3 7
5 7
7 7
2 8
4 8
Это точно весь вывод? Там больше нет 6 8 и 8 8?
1
2 / 2 / 0
Регистрация: 26.03.2019
Сообщений: 35
31.03.2020, 13:48  [ТС]
да, не все выделилось:

Вот полностью весь вывод:
3 3
5 3
7 3
2 4
4 4
6 4
8 4
1 5
5 5
2 6
4 6
6 6
8 6
1 7
3 7
5 7
7 7
2 8
4 8
6 8
8 8
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
31.03.2020, 13:49
вот вам в один ход, на два надеюсь переделать труда не возникнет:
Python
1
2
3
4
5
x = 7; y = 3
for j in range(1, 9):
    for i in range(1, 9):
        if abs((x-i)*(y-j)) == 2:
            print(i, j)
2
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
31.03.2020, 13:58
Цитата Сообщение от eaa Посмотреть сообщение
вот вам в один ход, на два надеюсь переделать труда не возникнет:
Python
1
2
3
4
5
x = 7; y = 3
for j in range(1, 9):
    for i in range(1, 9):
        if abs((x-i)*(y-j)) == 2:
            print(i, j)
PEP 8
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
31.03.2020, 14:04
ну нажмите кнопочку в редакторе. или за вас это сделать? совсем уже обленились.
0
2 / 2 / 0
Регистрация: 26.03.2019
Сообщений: 35
31.03.2020, 14:15  [ТС]
Вставил строку перед выводом, всё заработало, Спасибо!
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
31.03.2020, 14:16
Цитата Сообщение от eaa Посмотреть сообщение
ну нажмите кнопочку в редакторе. или за вас это сделать? совсем уже обленились.
Обленились??? Вы мне говорите о нажатии на кнопочку для грамотного редактирования кода и я ещё и обленился)))
Грамотный код нужно писать автоматически, а не ждать, пока его за вас исправит IDE. И кто ещё тут обленился.
0
4 / 3 / 1
Регистрация: 01.04.2020
Сообщений: 7
02.04.2020, 13:11
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def knightsTour(x0, y0, done, size=5):
    #создаем шахматную доску в виде 2го списка
    h = [[0 for j in xrange(size)] for i in xrange(size)]
    #начальная координата(1го хода)
    h[x0][y0] = 1
   
    #Возможные ходы
    dx = [2, 1, -1, -2, -2, -1, 1, 2]
    dy = [1, 2, 2, 1, -1, -2, -2, -1]
 
    def CanBeDone(u, v, i):
        h[u][v] = i
        done = tryNextMove(u, v, i)
        if not done:
            h[u][v] = 0
        return done
   
    def tryNextMove(x,y, i):
       
        #eos - показывает все ли варианты возможных 8ми ходов мы рассмотрели
        #done - показывает удачна ли данная ветка решения
        #k - порядковый номер рассмотренной попытки из 8 допустимых
        env = {'done': False, 'eos': False, 'u': x, 'v': y, 'k': -1}
 
        def next():
            x = env['u']
            y = env['v']
            while env['k'] < 8:
                env['k'] +=1;
                if env['k'] < 8:
                    env['u'] = x + dx[env['k']]
                    env['v'] = y + dy[env['k']]
                if (env['u'] >= 0 and env['u']<size) and (env['v']>=0 and env['v']<size) and h[env['u']][env['v']]==0:
                    break
            env['eos'] = (env['k']==8)
 
        if i < size**2:#если доска не заполнена
            next()
            while not env['eos'] and not CanBeDone(env['u'], env['v'], i+1):
                next()
            done = not env['eos']
        else:
            done = True
        return done
 
    tryNextMove(x0, y0, 1)
    print h
Добавлено через 9 минут
Пишите в телегу @Radio777GD у меня есть сто процентов рабочие решение на задачу. Сириус принял.
0
14 / 14 / 0
Регистрация: 03.04.2020
Сообщений: 16
03.04.2020, 19:30
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
xq = int(input())
yq = int(input())
e = []
for y in range(1, 9):
    for x in range(1, 9):
        if abs((xq-x)*(yq-y)) == 2:
            e.append([x, y])
for y in range(1, 9):
    for x in range(1, 9):
        for i in e:
            if abs((i[0] - x) * (i[1] - y)) == 2:
                print(x, y)
                break
1
0 / 0 / 0
Регистрация: 07.10.2021
Сообщений: 1
15.10.2021, 21:27
AlexandrGD, не находит в телеграмме
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2021, 21:27
Помогаю со студенческими работами здесь

Ходы коня
В левом верхнем углу прямоугольной доски NxM находится шахматный конь. Перемещаться по доске он может только двумя способами: на две клетки...

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

Задача: Ходы коня
Помогите решить задачу! Условия следующие: На шахматной доске 8×8 стоит конь. Напишите программу, которая отмечает положение коня на...

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru