ماذا تشتري
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 78 من 78.
التحدي
سهلقم بإنشاء دالة تسمى what_to_buy تأخذ وسيطين: budget (قيمة عددية) و prices (متجه مسمى لأسعار العناصر). يجب أن تعيد الدالة متجهاً نصياً (character vector) يحتوي على أسماء جميع العناصر التي تكون أسعارها أقل من أو تساوي الميزانية.
إذا لم تكن هناك عناصر ميسورة التكلفة، فقم بإرجاع متجه نصي فارغ باستخدام character(0).
ستتلقى المدخلات التالية:
- مبلغ الميزانية (رقم)
- قائمة بأسماء العناصر مفصولة بفاصلة (على سبيل المثال،
apple,banana,steak,bread) - قائمة بالأسعار المقابلة مفصولة بفاصلة (على سبيل المثال،
2,1,15,3)
قم بتحليل المدخلات لإنشاء متجه مسمى للأسعار، واستدعِ دالتك، واطبع النتيجة. استخدم print() لعرض المتجه النصي الناتج.
على سبيل المثال، إذا كان الإدخال هو:
5
apple,banana,steak,bread
2,1,15,3يجب أن يكون المخرج:
[1] "apple" "banana" "bread"إذا كان الإدخال هو:
10
laptop,phone,tablet
999,599,399يجب أن يكون المخرج:
character(0)تلميحات:
- استخدم
strsplit(input, ",")[[1]]لتقسيم النصوص المفصولة بفاصلة إلى متجهات - استخدم
as.numeric()لتحويل نصوص الأسعار إلى أرقام - استخدم
names(prices) <- item_namesلإنشاء متجه مسمى - استخدم الفهرسة المنطقية (logical indexing) مع
names()لاستخراج أسماء العناصر ميسورة التكلفة
جرّب بنفسك
# قراءة المدخلات
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# تحليل المدخلات
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# إنشاء متجه مسمى للأسعار
prices <- price_values
names(prices) <- item_names
# TODO: اكتب دالتك what_to_buy أدناه
# يجب أن تأخذ الدالة الميزانية والأسعار كوسطاء
# وتعيد متجهاً نصياً بأسماء العناصر التي يمكن شراؤها
# استدعاء الدالة وطباعة النتيجة
result <- what_to_buy(budget, prices)
print(result)جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ