-
Notifications
You must be signed in to change notification settings - Fork 429
/
Copy pathxiaoxiole.py
105 lines (86 loc) · 2.37 KB
/
xiaoxiole.py
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# !/usr/bin/env python
# -*-coding:utf-8 -*-
"""
# File : b.py
# Time :2023/9/21 14:46
# Author :yujia
# version :python 3.6
# Description:
"""
import numpy as np
def q(matrix):
rows, cols = matrix.shape
for row in range(rows):
if np.all(matrix[row] == matrix[row][0]):
return True
for col in range(cols):
if np.all(matrix[:,col] == matrix[:,col][0]):
return True
return False
def fm(matrix, rows, cols, row, col, i):
if row != 0 and i == 1:
# 上
matrix[row][col], matrix[row - 1][col] = matrix[row - 1][col], matrix[row][col]
if row != rows - 1 and i == 2:
# 下
matrix[row][col], matrix[row + 1][col] = matrix[row + 1][col], matrix[row][col]
if col != 0 and i == 3:
# 左
matrix[row][col], matrix[row][col - 1] = matrix[row][col - 1], matrix[row][col]
if col != cols - 1 and i == 4:
# 右
matrix[row][col], matrix[row][col + 1] = matrix[row][col + 1], matrix[row][col]
return matrix
def md(p, y):
if y == 1:
p[0] = p[0] - 1
elif y == 2:
p[0] = p[0] + 1
elif y == 3:
p[1] = p[1] - 1
elif y == 4:
p[1] = p[1] + 1
return p
def mk(p, y):
if y == 1:
p = p - 3
elif y == 2:
p = p + 3
elif y == 3:
p = p - 1
elif y == 4:
p = p + 1
return p
def m(matr,rows, cols, row, col):
for i in range(1, 5):
matrix = matr.copy()
x = fm(matrix, rows, cols, row, col, i)
if q(x) is True:
return True, i
else:
return False, 0
def n(l):
matr = np.array(l).T
# print(matr)
k = ["上", "下", "左", "右"]
rows, cols = matr.shape
n = 1
for row in range(rows):
for col in range(cols):
x, y = m(matr,rows, cols, row, col)
if x:
print(f"{[row, col]}----->{md([row, col], y)}")
print(f"{n}----->{mk(n, y)}")
print(k[y - 1])
# break
# print(matr[2][1], matr[1][1])
return x
n = n + 1
return
if __name__ == '__main__':
l = [[0, 2, 3], [1, 1, 3], [3, 2, 1]]
# l = [[2, 1, 2], [3, 0, 2], [2, 3, 3]]
# l = [[1, 3, 2], [2, 1, 0], [2, 1, 1]]
# l = [[2, 1, 0], [2, 0, 2], [0, 0, 1]]
l = [[1, 2, 1], [3, 1, 2], [2, 0, 3]]
n(l)