অ্যারে Elixir ভাষায় বিল্ট-ইন। এগুলোকে একটি বেসিক টাইপ ধরা হয়, যা স্কোয়ার ব্র্যাকেট দিয়ে লেখা হয়। অ্যারে খালি থাকতে পারে, আবার যেকোনো টাইপের যেকোনো সংখ্যক আইটেম ধারণ করতে পারে। যেমন:
empty_list = []
one_item_list = [1]
two_item_list = [1, 2]
multiple_type_list = [1, :pi, 3.14, "four"]
Elixir অ্যারে ইমপ্লিমেন্ট করে লিংকড অ্যারে হিসেবে, যেখানে প্রতিটি নোড দুটি মান সংরক্ষণ করে: প্রথম আইটেম, আর বাকি সব আইটেম নিয়ে গঠিত আরেকটি অ্যারে। অ্যারের প্রথম আইটেমটিকে বলা হয় হেড আর বাকি আইটেমগুলোর অ্যারেটিকে বলা হয় টেল। কোডে আমরা এই নোটেশনটি ব্যবহার করতে পারি:
# [1] represented in [head | tail] notation
[1 | []]
# [1, 2, 3] represented in [head | tail] notation
[1 | [2 | [3 | []]]]
আমরা [head | tail] নোটেশন ব্যবহার করে একটি অ্যারের শুরুতে এলিমেন্ট যোগ করতে পারি:
# Suppose
list = [2, 1]
[3, 2, 1] == [3 | list]
# => true
অ্যারে নিয়ে কাজ করার জন্য Kernel মডিউলে বেশ কিছু ফাংশন আছে, আর আছে পুরো List মডিউল।
# Check if 1 is a member of the list
1 in [1, 2, 3, 4]
# => true
এই অনুশীলনীতে প্রোগ্রামিং ভাষার একটি অ্যারে নিয়ে কাজ করার জন্য আপনাকে কিছু ফাংশন তৈরি করতে হবে।
new/0 ফাংশনটি ডিফাইন করুন, যা কোনো আর্গুমেন্ট নেয় না এবং একটি খালি অ্যারে রিটার্ন করে।
LanguageList.new()
# => []
add/2 ফাংশনটি ডিফাইন করুন, যা ২টি আর্গুমেন্ট নেয় (একটি প্রোগ্রামিং ভাষার অ্যারে এবং একটি প্রোগ্রামিং ভাষার স্ট্রিং লিটারাল)। এটি প্রদত্ত অ্যারের শুরুতে নতুন প্রোগ্রামিং ভাষাটি যোগ করে প্রাপ্ত অ্যারেটি রিটার্ন করবে।
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
remove/1 ফাংশনটি ডিফাইন করুন, যা ১টি আর্গুমেন্ট নেয় (একটি প্রোগ্রামিং ভাষার অ্যারে)। এটি প্রথম এলিমেন্টটি বাদ দিয়ে অ্যারেটি রিটার্ন করবে। ধরে নিন যে অ্যারেতে সবসময় অন্তত একটি এলিমেন্ট থাকবে।
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
language_list = LanguageList.remove(language_list)
# => ["Clojure"]
first/1 ফাংশনটি ডিফাইন করুন, যা ১টি আর্গুমেন্ট নেয় (একটি প্রোগ্রামিং ভাষার অ্যারে)। এটি অ্যারেতে থাকা প্রথম প্রোগ্রামিং ভাষাটি রিটার্ন করবে। ধরে নিন যে অ্যারেতে সবসময় অন্তত একটি এলিমেন্ট থাকবে।
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.first(language_list)
# => "Prolog"
count/1 ফাংশনটি ডিফাইন করুন, যা ১টি আর্গুমেন্ট নেয় (একটি প্রোগ্রামিং ভাষার অ্যারে)। এটি অ্যারেতে থাকা প্রোগ্রামিং ভাষার সংখ্যা রিটার্ন করবে।
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.count(language_list)
# => 2
functional_list?/1 ফাংশনটি ডিফাইন করুন, যা ১টি আর্গুমেন্ট নেয় (একটি প্রোগ্রামিং ভাষার অ্যারে)। এটি একটি বুলিয়ান মান রিটার্ন করবে। অ্যারেতে থাকা প্রোগ্রামিং ভাষাগুলোর মধ্যে "Elixir" থাকলে এটি ট্রু রিটার্ন করবে।
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Exercism-এ সাইন আপ করুন, Elixir ট্র্যাকের 58টি কনসেপ্ট168টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।