মান লেই একটি অনন্ত গ্রিডে একটি রোবট আছে যা (0, 0) পয়েন্ট থেকে শুরু করে। এটি উত্তর দিকের দিকে মুখ করে। এখন রোবট তিনটি টাইপের কমান্ড পেতে পারে −
- -2: বামে ৯০ ডিগ্রি ঘুরুন
- -1: ডানে ৯০ ডিগ্রি ঘুরুন
- ১ থেকে ৯: সামনে x ইউনিট আগে যান
- কিছু গ্রিড স্কয়ার আছে যেগুলো অবস্ট্রাকল।
- position_offset := [(0, 1), (1, 0), (0, -1), (-1, 0)]
- x, y, direction, max_distance ০ দিয়ে ইনিশিয়ালাইজ
- প্রতিটি command commands-এ,
- যদি command == -2 হয়, তবে
- direction := (direction - 1) mod 4
- অন্যথায় যদি command == -1 হয়, তবে
- direction := (direction + 1) mod 4
- অন্যথায়,
- (x_off, y_off) := position_offset[direction]
- যখন command নন-জিরো, লুপ
- যদি (x + x_off, y + y_off) obstacles-এ না থাকে, তবে
- x := x + x_off
- y := y + y_off
- command := command - 1
- যদি (x + x_off, y + y_off) obstacles-এ না থাকে, তবে
- max_distance = max(max_distance, x^2 + y^2)
- যদি command == -2 হয়, তবে
- max_distance রিটার্ন
আমাদের আরেকটি অ্যারে আছে obstacles, যেটা ইন্ডিকেট করে i-তম অবস্ট্রাকল grid point (obstacles[i][0], obstacles[i][1])-এ আছে। যদি রোবট সেখানে যেতে চায়, তবে রোবট আগের গ্রিড স্কয়ারে থাকবে।
আমাদের রোবট অরিজিন থেকে সর্বোচ্চ ইউক্লিডিয়ান ডিস্ট্যান্সের বর্গ বের করতে হবে।
সেজন্য, যদি ইনপুট হয় commands = [4,-1,4,-2,4], obstacles = [[2,4]], তবে আউটপুট হবে ৬৫, কারণ রোবট (1, 4)-এ আটকে যাবে বামে ঘুরা এবং (1, 8)-এ যাওয়ার আগে।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −
বেস্টার বোঝার জন্য নিচের ইম্প্লিমেন্টেশন দেখুন −
উদাহরণ
class Solution:
def robotSim(self, commands, obstacles):
position_offset = [(0, 1), (1, 0), (0, -1), (-1, 0)]
obstacles = set(map(tuple, obstacles))
x, y, direction, max_distance = 0, 0, 0, 0
for command in commands:
if command == -2:
direction = (direction - 1) % 4
elif command == -1:
direction = (direction + 1) % 4
else:
x_off, y_off = position_offset[direction]
while command:
if (x + x_off, y + y_off) not in obstacles:
x += x_off
y += y_off
command -= 1
max_distance = max(max_distance, x**2 + y**2)
return max_distance
ob = Solution()
print(ob.robotSim([4,-1,4,-2,4], [[2,4]]))
ইনপুট
[4,-1,4,-2,4],[[2,4]]
আউটপুট
65