ログインしてください。
提出 #27966757
ソースコード 拡げる
import sys
import fileinput
lines = []
for l in sys.stdin:
lines.append(l.rstrip('\r\n'))
class Mass:
def __init__(self, i, j, wall_top = False, wall_right = False, wall_bottom = False, wall_left = False):
self.i = i
self.j = j
self.wall_top = wall_top
self.wall_right = wall_right
self.wall_bottom = wall_bottom
self.wall_left = wall_left
self.is_cleared = False
def clear(self):
self.is_cleared = True
def init_floor_info(N, h, v, floor):
for i in range(N):
for j in range(N):
mass = floor[i][j]
if j < N-1:
right_mass = floor[i][j+1]
if i < N-1:
bottom_mass = floor[i+1][j]
# 外壁
if i == 0:
mass.wall_top = True
if i == N-1:
mass.wall_bottom = True
if j == 0:
mass.wall_left = True
if i == N-1:
mass.wall_right = True
# その他の壁
if j < N-1 and h[i][j] == "1":
mass.wall_right = True
right_mass.wall_left =True
if i < N-1 and v[i][j] == "1":
mass.wall_bottom = True
bottom_mass.wall_top = True
class Robot:
def __init__(self, i, j):
self.i = i
self.j = j
# 0, 1, 2, 3 で上右下左
self.direction = 0
self.root = []
self.count_turn = 0
# self.clearned = []
def turn_reft(self):
d = self.direction
if d == 0:
d = 3
else:
d -= 1
self.count_turn +=1
self.root.append("L")
def turn_reft_if_wall(self):
d = self.direction
if d == 0:
d = 3
else:
d -= 1
self.count_turn +=1
self.root.append("l")
def turn_right(self):
d = self.direction
if d == 3:
d = 0
else:
d += 1
self.count_turn +=1
self.root.append("R")
def turn_right_if_wall(self):
d = self.direction
if d == 3:
d = 0
else:
d += 1
self.count_turn +=1
self.root.append("r")
def go_forward(self):
self.root.append("F")
def move_top(self):
self.j -= 1
self.go_forward()
def move_right(self):
self.i += 1
self.go_forward()
def move_bottom(self):
self.j += 1
self.go_forward()
def move_left(self):
self.i -= 1
self.go_forward()
# def FunctionName(args):
def main(lines):
N = 20
h = lines[1:N+1]
v = lines[N+1:]
s_i, s_j = int(lines[0].split()[0]), int(lines[0].split()[1])
floor = [[Mass(i, j) for j in range(N)] for i in range(N)]
init_floor_info(N, h, v, floor)
rob = Robot(s_i, s_j)
while i < 5000:
i += 1
curr_mass = floor(rob.i, rob.j)
direction = rob.direction
constraint = True
if rob.count_turn == 4:
rob.count_turn = 0
constraint = False
if constraint:
if direction == 0:
top_mass = floor[rob.i-1][rob.j]
if not curr_mass.wall_top and not top_mass.is_cleared:
rob.move_top()
top_mass.clear()
else:
rob.turn_right_if_wall()
continue
if direction == 1:
right_mass = floor[rob.i][rob.j+1]
if not curr_mass.wall_right and not right_mass.is_cleared:
rob.move_right()
else:
rob.turn_right_if_wall()
continue
if direction == 2:
bottom_mass = floor[rob.i+1][rob.j]
if not curr_mass.wall_bottom and not bottom_mass.is_cleared:
rob.move_bottom()
else:
rob.turn_right_if_wall()
continue
if direction == 3:
left_mass = floor[rob.i][rob.j-1]
if not curr_mass.wall_left and not left_mass.is_cleared:
rob.move_left()
else:
rob.turn_right_if_wall()
continue
else:
if direction == 0:
top_mass = floor[rob.i-1][rob.j]
if not curr_mass.wall_top:
rob.move_top()
top_mass.clear()
else:
rob.turn_right_if_wall()
continue
if direction == 1:
right_mass = floor[rob.i][rob.j+1]
if not curr_mass.wall_right:
rob.move_right()
else:
rob.turn_right_if_wall()
continue
if direction == 2:
bottom_mass = floor[rob.i+1][rob.j]
if not curr_mass.wall_bottom:
rob.move_bottom()
else:
rob.turn_right_if_wall()
continue
if direction == 3:
left_mass = floor[rob.i][rob.j-1]
if not curr_mass.wall_left:
rob.move_left()
else:
rob.turn_right_if_wall()
continue
print("".join(rob.root))
main(lines)
提出情報
| 提出日時 | |
|---|---|
| 問題 | A - Code Golf for Robot Vacuums |
| ユーザ | 88888888_kota |
| 言語 | Python (3.8.2) |
| 得点 | 0 |
| コード長 | 5651 Byte |
| 結果 | RE |
| 実行時間 | 27 ms |
| メモリ | 8980 KiB |
ジャッジ結果
| セット名 | test_ALL | ||
|---|---|---|---|
| 得点 / 配点 | 0 / 100000000 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| test_ALL | test_0000.txt, test_0001.txt, test_0002.txt, test_0003.txt, test_0004.txt, test_0005.txt, test_0006.txt, test_0007.txt, test_0008.txt, test_0009.txt, test_0010.txt, test_0011.txt, test_0012.txt, test_0013.txt, test_0014.txt, test_0015.txt, test_0016.txt, test_0017.txt, test_0018.txt, test_0019.txt, test_0020.txt, test_0021.txt, test_0022.txt, test_0023.txt, test_0024.txt, test_0025.txt, test_0026.txt, test_0027.txt, test_0028.txt, test_0029.txt, test_0030.txt, test_0031.txt, test_0032.txt, test_0033.txt, test_0034.txt, test_0035.txt, test_0036.txt, test_0037.txt, test_0038.txt, test_0039.txt, test_0040.txt, test_0041.txt, test_0042.txt, test_0043.txt, test_0044.txt, test_0045.txt, test_0046.txt, test_0047.txt, test_0048.txt, test_0049.txt, test_0050.txt, test_0051.txt, test_0052.txt, test_0053.txt, test_0054.txt, test_0055.txt, test_0056.txt, test_0057.txt, test_0058.txt, test_0059.txt, test_0060.txt, test_0061.txt, test_0062.txt, test_0063.txt, test_0064.txt, test_0065.txt, test_0066.txt, test_0067.txt, test_0068.txt, test_0069.txt, test_0070.txt, test_0071.txt, test_0072.txt, test_0073.txt, test_0074.txt, test_0075.txt, test_0076.txt, test_0077.txt, test_0078.txt, test_0079.txt, test_0080.txt, test_0081.txt, test_0082.txt, test_0083.txt, test_0084.txt, test_0085.txt, test_0086.txt, test_0087.txt, test_0088.txt, test_0089.txt, test_0090.txt, test_0091.txt, test_0092.txt, test_0093.txt, test_0094.txt, test_0095.txt, test_0096.txt, test_0097.txt, test_0098.txt, test_0099.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| test_0000.txt | RE | 19 ms | 8748 KiB |
| test_0001.txt | RE | 22 ms | 8964 KiB |
| test_0002.txt | RE | 25 ms | 8784 KiB |
| test_0003.txt | RE | 17 ms | 8852 KiB |
| test_0004.txt | RE | 17 ms | 8768 KiB |
| test_0005.txt | RE | 19 ms | 8748 KiB |
| test_0006.txt | RE | 16 ms | 8716 KiB |
| test_0007.txt | RE | 17 ms | 8760 KiB |
| test_0008.txt | RE | 20 ms | 8756 KiB |
| test_0009.txt | RE | 17 ms | 8764 KiB |
| test_0010.txt | RE | 21 ms | 8768 KiB |
| test_0011.txt | RE | 22 ms | 8928 KiB |
| test_0012.txt | RE | 23 ms | 8852 KiB |
| test_0013.txt | RE | 18 ms | 8964 KiB |
| test_0014.txt | RE | 18 ms | 8752 KiB |
| test_0015.txt | RE | 19 ms | 8788 KiB |
| test_0016.txt | RE | 17 ms | 8768 KiB |
| test_0017.txt | RE | 17 ms | 8752 KiB |
| test_0018.txt | RE | 19 ms | 8736 KiB |
| test_0019.txt | RE | 17 ms | 8748 KiB |
| test_0020.txt | RE | 17 ms | 8756 KiB |
| test_0021.txt | RE | 18 ms | 8784 KiB |
| test_0022.txt | RE | 19 ms | 8980 KiB |
| test_0023.txt | RE | 19 ms | 8744 KiB |
| test_0024.txt | RE | 17 ms | 8760 KiB |
| test_0025.txt | RE | 18 ms | 8760 KiB |
| test_0026.txt | RE | 18 ms | 8964 KiB |
| test_0027.txt | RE | 17 ms | 8760 KiB |
| test_0028.txt | RE | 19 ms | 8832 KiB |
| test_0029.txt | RE | 20 ms | 8760 KiB |
| test_0030.txt | RE | 22 ms | 8744 KiB |
| test_0031.txt | RE | 18 ms | 8876 KiB |
| test_0032.txt | RE | 17 ms | 8968 KiB |
| test_0033.txt | RE | 21 ms | 8756 KiB |
| test_0034.txt | RE | 22 ms | 8756 KiB |
| test_0035.txt | RE | 17 ms | 8756 KiB |
| test_0036.txt | RE | 20 ms | 8756 KiB |
| test_0037.txt | RE | 17 ms | 8764 KiB |
| test_0038.txt | RE | 18 ms | 8868 KiB |
| test_0039.txt | RE | 20 ms | 8884 KiB |
| test_0040.txt | RE | 17 ms | 8880 KiB |
| test_0041.txt | RE | 18 ms | 8968 KiB |
| test_0042.txt | RE | 27 ms | 8756 KiB |
| test_0043.txt | RE | 25 ms | 8760 KiB |
| test_0044.txt | RE | 18 ms | 8876 KiB |
| test_0045.txt | RE | 17 ms | 8928 KiB |
| test_0046.txt | RE | 22 ms | 8760 KiB |
| test_0047.txt | RE | 20 ms | 8740 KiB |
| test_0048.txt | RE | 17 ms | 8876 KiB |
| test_0049.txt | RE | 17 ms | 8880 KiB |
| test_0050.txt | RE | 19 ms | 8732 KiB |
| test_0051.txt | RE | 17 ms | 8752 KiB |
| test_0052.txt | RE | 18 ms | 8792 KiB |
| test_0053.txt | RE | 22 ms | 8880 KiB |
| test_0054.txt | RE | 23 ms | 8744 KiB |
| test_0055.txt | RE | 18 ms | 8876 KiB |
| test_0056.txt | RE | 17 ms | 8736 KiB |
| test_0057.txt | RE | 20 ms | 8760 KiB |
| test_0058.txt | RE | 19 ms | 8736 KiB |
| test_0059.txt | RE | 19 ms | 8928 KiB |
| test_0060.txt | RE | 23 ms | 8892 KiB |
| test_0061.txt | RE | 21 ms | 8792 KiB |
| test_0062.txt | RE | 18 ms | 8876 KiB |
| test_0063.txt | RE | 17 ms | 8800 KiB |
| test_0064.txt | RE | 20 ms | 8756 KiB |
| test_0065.txt | RE | 17 ms | 8740 KiB |
| test_0066.txt | RE | 17 ms | 8736 KiB |
| test_0067.txt | RE | 23 ms | 8868 KiB |
| test_0068.txt | RE | 24 ms | 8868 KiB |
| test_0069.txt | RE | 20 ms | 8840 KiB |
| test_0070.txt | RE | 18 ms | 8732 KiB |
| test_0071.txt | RE | 18 ms | 8884 KiB |
| test_0072.txt | RE | 19 ms | 8760 KiB |
| test_0073.txt | RE | 18 ms | 8760 KiB |
| test_0074.txt | RE | 17 ms | 8732 KiB |
| test_0075.txt | RE | 20 ms | 8968 KiB |
| test_0076.txt | RE | 17 ms | 8740 KiB |
| test_0077.txt | RE | 17 ms | 8876 KiB |
| test_0078.txt | RE | 19 ms | 8968 KiB |
| test_0079.txt | RE | 17 ms | 8868 KiB |
| test_0080.txt | RE | 25 ms | 8732 KiB |
| test_0081.txt | RE | 21 ms | 8876 KiB |
| test_0082.txt | RE | 23 ms | 8852 KiB |
| test_0083.txt | RE | 18 ms | 8928 KiB |
| test_0084.txt | RE | 20 ms | 8752 KiB |
| test_0085.txt | RE | 18 ms | 8960 KiB |
| test_0086.txt | RE | 23 ms | 8876 KiB |
| test_0087.txt | RE | 23 ms | 8764 KiB |
| test_0088.txt | RE | 24 ms | 8752 KiB |
| test_0089.txt | RE | 19 ms | 8844 KiB |
| test_0090.txt | RE | 17 ms | 8884 KiB |
| test_0091.txt | RE | 17 ms | 8964 KiB |
| test_0092.txt | RE | 19 ms | 8868 KiB |
| test_0093.txt | RE | 23 ms | 8788 KiB |
| test_0094.txt | RE | 17 ms | 8756 KiB |
| test_0095.txt | RE | 17 ms | 8732 KiB |
| test_0096.txt | RE | 19 ms | 8768 KiB |
| test_0097.txt | RE | 21 ms | 8748 KiB |
| test_0098.txt | RE | 18 ms | 8756 KiB |
| test_0099.txt | RE | 18 ms | 8788 KiB |