R-এর আলাদা কোনো সেট ডেটা টাইপ নেই; বরং ভেক্টরের উপর একই ধরনের কাজ করতে এটি নানা ধরনের ফাংশন ব্যবহার করে।
%in% অপারেটরটি সেটের সদস্যতা পরীক্ষা করে।
2 %in% 1:10 # TRUE
12 %in% 1:10 # FALSE
প্রাসঙ্গিক ফাংশনগুলোর মধ্যে রয়েছে unique (ডুপ্লিকেট সরানোর জন্য), সঙ্গে union(), intersect(), setdiff() এবং setequal(), যা সেটের জোড়ার উপর কাজ করে।
> set_1 <- c("a", "b", "c", "b", "a")
> unique(set_1) # deduplicate
[1] "a" "b" "c"
> set_2 <- c('a', "c", "d")
> union(set_1, set_2) # values in either set
[1] "a" "b" "c" "d"
> intersect(set_1, set_2) # values in both sets
[1] "a" "c"
> setdiff(set_1, set_2) # values in set_1 but not set_2
[1] "b"
> setdiff(set_2, set_1) # values in set_2 but not set_1
[1] "d"
setequal(set_1, c("c", "b", "a", "b")) # are elements the same after deduplication?
[1] TRUE
প্রতিটি ক্ষেত্রেই set_1 আর set_2 অপরিবর্তিত থাকে।
ওজান আসন্ন এক রোডট্রিপের জন্য একটি প্লেলিস্ট তৈরি করছেন। তিনি একই ট্র্যাক একবারের বেশি শুনতে চান না, কিন্তু প্লেলিস্টটি এত লম্বা হয়ে গেছে যে কোন কোন ট্র্যাক আগে থেকেই যোগ করা হয়েছে তা মনে রাখতে তাঁর অসুবিধা হচ্ছে।
ওজানের মিউজিক প্লেয়ারের API শুধু ভেক্টর নিয়ে কাজ করতে জানে। এখানে স্পষ্ট লুপ বা if/else লজিক ব্যবহার করা সম্ভব নয়। তাঁর আপনার সাহায্য দরকার!
remove_duplicates ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি একটি প্লেলিস্টকে প্যারামিটার হিসেবে নেয় এবং এমন একটি নতুন প্লেলিস্ট রিটার্ন করে যেখানে সব ট্র্যাক অনন্য।
> playlist <- c(
"Court and Spark - Joni Mitchell",
"Big Yellow Taxi - Joni Mitchell",
"Court and Spark - Joni Mitchell"
)
> remove_duplicates(playlist)
[1] "Court and Spark - Joni Mitchell" "Big Yellow Taxi - Joni Mitchell"
has_track ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি একটি প্লেলিস্ট ও একটি ট্র্যাককে প্যারামিটার হিসেবে নেয় এবং একটি বুলিয়ান রিটার্ন করে, যা জানায় প্লেলিস্টটিতে সেই ট্র্যাকটি আছে কি না।
> playlist <- c(
"The Fashion Show - Grace Jones",
"Dr. Funkenstein - Parliament"
)
> has_track(playlist, "Dr. Funkenstein - Parliament")
[1] TRUE
> has_track(playlist, "Walking in the Rain - Grace Jones")
[1] FALSE
add_tracks ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি একটি প্লেলিস্ট এবং এক বা একাধিক ট্র্যাকের একটি ভেক্টরকে প্যারামিটার হিসেবে নেয় এবং ট্র্যাকগুলোসহ একটি নতুন প্লেলিস্ট রিটার্ন করে।
> playlist <- c("Selma - Bijelo Dugme")
> playlist <- add_tracks(playlist, "Atomic Dog - George Clinton")
> playlist
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton"
> add_tracks(playlist, "Selma - Bijelo Dugme")
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton"
> add_tracks(playlist, c("The Chain - Fleetwood Mac", "Selma - Bijelo Dugme"))
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton" "The Chain - Fleetwood Mac"
delete_tracks ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি একটি প্লেলিস্ট এবং এক বা একাধিক ট্র্যাককে প্যারামিটার হিসেবে নেয় এবং ট্র্যাকগুলো ছাড়া একটি নতুন প্লেলিস্ট রিটার্ন করে।
> playlist <- c(
"The Treasure - Fra Lippo Lippi",
"After the Fall - Klaus Nomi"
)
> playlist <- delete_tracks(playlist, "The Treasure - Fra Lippo Lippi")
> playlist
[1] "After the Fall - Klaus Nomi"
> delete_tracks(playlist, "I Feel the Magic - Belinda Carlisle")
[1] "After the Fall - Klaus Nomi"
ওজান এক নতুন বন্ধুর সাথে দেখা করেন এবং ভাবেন তাঁদের রুচি কতটা মেলে।
find_common_tracks ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি দুটি প্লেলিস্ট নেয় এবং এমন একটি নতুন প্লেলিস্ট রিটার্ন করে যেখানে শুধু দুই প্লেলিস্টেই থাকা ট্র্যাকগুলো থাকে।
> playlist_1 <- c("Karma - Taylor Swift", "Tired - Adele")
> playlist_2 <- c("Andromeda - Weyes Blood", "Karma - Taylor Swift")
> find_common_tracks(playlist_1, playlist_2)
[1] "Karma - Taylor Swift"
Exercism-এ সাইন আপ করুন, R ট্র্যাকের 21টি কনসেপ্ট111টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।