مسیرها
/
Clojure
Clojure
/
تمرین‌ها
/
مسطح کردن آرایه
مسطح کردن آرایه

مسطح کردن آرایه

متوسط

مقدمه

یک محموله از لوازم اضطراری رسیده است، اما یک مشکل وجود دارد. برای محافظت در برابر آسیب، اقلام (چراغ‌قوه‌ها، جعبه‌های کمک‌های اولیه، پتوها) داخل جعبه‌ها بسته‌بندی شده‌اند و بعضی از آن جعبه‌ها چند لایه تودرتو درون جعبه‌های دیگر جای گرفته‌اند!

برای آماده بودن در شرایط اضطراری، همه‌چیز باید به‌راحتی در یک جعبه در دسترس باشد. آیا می‌توانید همه‌ی لوازم را از جعبه‌ها بیرون بیاورید و آن‌ها را در یک جعبه‌ی واحد بگذارید، تا در زمانی که بیشترین نیاز به آن‌هاست آماده باشند؟

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

یک آرایه‌ی تودرتو با هر عمقی را بگیرید و یک آرایه‌ی کاملاً تخت‌شده برگردانید.

توجه داشته باشید که بعضی از مسیرهای زبان ممکن است مقادیر شبیه null را در آرایه‌ی ورودی بگنجانند و شیوه‌ی نمایش این مقادیر از مسیری به مسیر دیگر فرق می‌کند. چنین مقادیری باید از آرایه‌ی تخت‌شده حذف شوند.

علاوه بر این، ورودی بسته به مسیر ممکن است از نوع داده‌ی دیگری باشد و انواع متفاوتی را در خود داشته باشد.

برای جزئیات، مجموعه‌ی آزمون‌ها را بررسی کنید.

مثال

ورودی: [1, [2, 6, null], [[null, [4]], 5]]

خروجی: [1, 2, 6, 4, 5]

ضمیمه

Note

دستورالعمل‌های بالا با یک مخزن مشترک همگام‌سازی شده‌اند تا یکدستی در همه‌ی مسیرهای زبانی تضمین شود. این ضمیمه در صورت نیاز شفاف‌سازی بیشتری ارائه می‌دهد یا دستورالعمل‌ها را تغییر می‌دهد تا با اهداف مسیر Clojure هماهنگ‌تر شوند.

برای این تمرین در مسیر Clojure، می‌توانید فرض کنید که ورودی هر ترکیب تودرتویی از وکتورها است و خروجی یک وکتور است، همان‌طور که تست‌ها نشان می‌دهند. اما این یک الزام قطعی نیست؛ آزادید فرض کنید که ورودی هر ترکیب تودرتویی از موارد دنباله‌ای (لیست‌ها، وکتورها و غیره) باشد و خروجی یک دنباله باشد.

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

آماده‌اید مسطح کردن آرایه را شروع کنید؟

در Exercism ثبت‌نام کنید تا Clojure را همراه با 12 مفهوم105 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.