نقاط زینی

نقاط زینی

متوسط

مقدمه

قصد دارید در جنگل نزدیک خانه‌تان یک خانه‌ی درختی بسازید تا بتوانید طلوع و غروب خورشید را تماشا کنید.

از یک شرکت نقشه‌برداری محلی داده‌هایی به دست آورده‌اید که ارتفاع هر درخت را در هر بخش مستطیلی نقشه نشان می‌دهند. باید هر شبکه روی نقشه را تحلیل کنید تا درخت‌های مناسب برای خانه‌ی درختی خود را پیدا کنید.

درخت مناسب هر دو ویژگی زیر را دارد:

  • از هر درختی در شرق و غرب بلندتر است تا بهترین منظره‌ی ممکن از طلوع‌ها و غروب‌های خورشید را داشته باشید.
  • از هر درختی در شمال و جنوب کوتاه‌تر است تا میزان بالا رفتن از درخت را به کمترین حد برسانید.

دستورالعمل‌ها

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

شرکت داده‌ها داده‌ها را به شکل شبکه‌هایی ارائه می‌دهد که ارتفاع درخت‌ها را نشان می‌دهند. سطرهای شبکه جهت شرق به غرب را نشان می‌دهند و ستون‌ها جهت شمال به جنوب را.

یک درخت قابل قبول درختی است که در سطر خودش بزرگ‌ترین و در ستون خودش کوچک‌ترین باشد.

ممکن است یک شبکه اصلاً هیچ درخت مناسبی نداشته باشد. یا ممکن است یکی داشته باشد، یا حتی چندین درخت.

این شبکه‌ای است که دقیقاً یک درخت نامزد دارد.

    1  2  3  4
  |-----------
1 | 9  8  7  8
2 | 5  3  2  4  <--- potential tree house at row 2, column 1, for tree with height 5
3 | 6  6  7  1
  • سطر ۲ مقادیر ۵، ۳، ۲ و ۴ را دارد. بزرگ‌ترین مقدار ۵ است.
  • ستون ۱ مقادیر ۹، ۵ و ۶ را دارد. کوچک‌ترین مقدار ۵ است.

پس نقطه‌ی [2, 1] (سطر: ۲، ستون: ۱) جای عالی برای یک خانه‌ی درختی است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Scala Exercism

آماده‌اید نقاط زینی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Scala را همراه با 95 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.