بکندباز

در این چالش یک لیست دو بعدی در ورودی به شما داده می شود که نشان دهنده یک “نقشه” با سه نوع علامت است:

  • بمب های “+”: وقتی فعال می شوند، انفجار آنها هر بمبی را که در چهار جهت بالا، پایین، چپ یا راست بمب “+” باشد، فعال می کند.
  • بمب های “x”: هنگامی که فعال می شوند، انفجار آنها هر بمبی را که در هر یک از چهار جهت مورب در کنار بمب “x” قرار می گیرد، فعال می کند.
  • فضاهای خالی “0”.

این لیست را در نظر بگیرید:

[
  ["+", "+", "0", "x", "x", "+", "0"],
  ["0", "+", "+", "x", "0", "+", "x"]
]

اگر بمب “+” بالا سمت چپ منفجر شود، واکنش زنجیره ای حاصل، بمب ها را به ترتیب اعداد زیر منفجر می کند:

[
  ["1", "2", "0", "x", "6", "8", "0"],
  ["0", "3", "4", "5", "0", "7", "8"]
]

توجه داشته باشید که دو عدد 8 وجود دارد زیرا دو بمب به طور همزمان منفجر می شوند. همچنین توجه داشته باشید که یکی از بمب های “x” در ردیف بالا منفجر نمی شود.

تابعی بنویسید که مشخص کند آیا انفجار زنجیره ای که با انفجار بمب “بالا سمت چپ” شروع می شود، همه بمب ها را نابود می کند یا خیر.

نمونه ورودی و خروجی

AllExplode([["+", "+", "+", "+", "+", "+", "x"]]) ➞ True

AllExplode([["+", "+", "+", "+", "+", "0", "x"]]) ➞ False

AllExplode([["+", "+", "0", "x", "x", "+", "0"], ["0", "+", "+", "x", "0", "+", "x"]]) ➞ False

نکته

  • هر دو بمب “+” و “x” فقط تا محدوده 1 خانه کنار خود را منفجر می کنند.
AllExplode([["+", "+", "+", "+", "+", "+", "x"]])  ➞ True
AllExplode([["+", "+", "+", "+", "+", "0", "x"]])  ➞ False
AllExplode([["+", "+", "0", "x", "x", "+", "0"], ["0", "+", "+", "x", "0", "+", "x"]])  ➞ False
AllExplode([["x", "0", "0"], ["0", "0", "0"], ["0", "0", "x"]])  ➞ False
AllExplode([["x", "0", "x"], ["0", "x", "0"], ["x", "0", "x"]])  ➞ True

پاسخ های کاربران به این تمرین

Reza.Bj
امتیاز:‌ 800
0 0
‎جاوا‎
14 مرداد 1402

برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید

نظرات

*
*