برنامه نویسی

چالش نام و نام خانوادگی

در زیر یک تمرین کوچک است که در این دوره یافت می شود هاسکل
در دانشگاه هلسینکی موجود است.

چالش

لیستی از نام و نام خانوادگی:

  • نام ها: ["Eva", "Mike"]
  • نام خانوادگی: ["Smith", "Wood", "Odd"]

فهرستی را برگردانید که عناصر آن فقط افراد دارای جفت طولانی هستند.

مثال بازگشت

  • ["EvaSmith", "EvaOdd", "MikeWood"]

راه حل در Haskell

الگوی مجوز Haskell مطابق با y list comprehensions.

[whole | first <- ["Eva", "Mike"],
         last <- ["Smith", "Wood", "Odd"],
         let whole = first ++ last,
         even (length whole)]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

محلول در اکسیر

اگرچه راه حل در اکسیر به این کوتاهی نیست هاسکل
به همان زیبایی است.

require Integer

for first <- ~w[Eva Mike],
  last <- ~w[Smith Wood Odd],
  name <- [first <> last],
  name
  |> String.length()
  |> Integer.is_even(), do: name
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای این ما از ویژگی های استفاده می کنیم for comprehensions.

راه حل در جاوا اسکریپت

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

امری ضروری

const nombres = ["Eva", "Mike"];
const apellidos = ["Smith", "Wood", "Odd"];

const output = [];

for(let i = 0; i < nombres.length; i++){
    for(let j = 0; j < apellidos.length; j++){
        const fullName = `${nombres[i]}${apellidos[j]}`;
        if(fullName.length % 2 == 0){
            output.push(fullName);
        }
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اعلامی

const nombres = ["Eva", "Mike"];
const apellidos = ["Smith", "Wood", "Odd"];

const output = nombres.flatMap(n =>
        apellidos.map(a => `${n}${a}`)
    )
    .filter(fullName => fullName.length % 2 == 0);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکسیر

نسخه اعلامی جاوا اسکریپت ما می توانیم آن را در آن تقلید کنیم اکسیر از بعدی
فرم:

~w[Eva Mike]
|> Enum.flat_map(fn first ->
  ~w[Smith Wood Odd]
  |> Enum.map(fn last ->
    first <> last
  end)
end)
|> Enum.filter(&
    &1
    |> String.length()
    |> Integer.is_even()
)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگرچه به زیبایی استفاده نیست for comprehensions.

به چه زبان های دیگری می توانید چالش را حل کنید؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا