Menu
Coddy logo textTech

Özet - Liste İşleyici

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 50 / 65.

challenge icon

Görev

Kolay

Özelleştirilebilir bir liste işlemcisi oluşturarak üst düzey fonksiyonları (higher-order functions) gösteren esnek bir veri işleme sistemi oluşturun. Programınız farklı işlem fonksiyonları oluşturacak ve bir veri listesine herhangi bir işlemi uygulayabilen ana bir işlemci fonksiyonu kullanacaktır.

  1. Virgülle ayrılmış sayılar içeren bir dize girişi okuyun (örneğin, "10,20,30,40")
  2. İlk işlem türünü temsil eden bir dize girişi okuyun ("multiply", "add" veya "subtract")
  3. İlk işlemle kullanılacak değeri temsil eden bir dize girişi okuyun (örneğin, "3")
  4. İkinci işlem türünü temsil eden bir dize girişi okuyun ("multiply", "add" veya "subtract")
  5. İkinci işlemle kullanılacak değeri temsil eden bir dize girişi okuyun (örneğin, "5")
  6. İlk girişi tekil sayılara bölün ve her birini bir tam sayıya dönüştürün
  7. Üç işlem fonksiyonu oluşturun:
    • multiplyBy - iki tam sayı alır ve birincinin ikinciyle çarpımını döndürür
    • addTo - iki tam sayı alır ve birincinin ikinciyle toplamını döndürür
    • subtractFrom - iki tam sayı alır ve birinciden ikincinin çıkarılmış halini döndürür
  8. Üç parametre alan processListWithOperation adında bir ana fonksiyon oluşturun:
    • Tam sayılardan oluşan bir liste
    • İki tam sayı alan ve bir tam sayı döndüren bir fonksiyon
    • İşlemle birlikte kullanılacak bir tam sayı değeri
  9. processListWithOperation fonksiyonu, verilen fonksiyonu listedeki her sayıya sağlanan değeri kullanarak uygulamalı ve sonuçlarla birlikte yeni bir liste döndürmelidir
  10. İlk işlemi orijinal listeye uygulayın, ardından ikinci işlemi ilk işlemin sonucuna uygulayın
  11. Sonuçları tam olarak aşağıda gösterilen formatta görüntüleyin

Örneğin, girişler "2,4,6", "multiply", "3", "add" ve "10" ise programınız şu çıktıyı vermelidir:

Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfully

Girişler "15,25,35", "subtract", "5", "multiply" ve "2" ise programınız şu çıktıyı vermelidir:

Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfully

Programınız, işlem türü girişlerine göre uygun işlem fonksiyonunu processListWithOperation fonksiyonuna geçirerek üst düzey fonksiyonları göstermelidir. Her işlem için hangi fonksiyonun geçirileceğini belirlemek için koşullu ifadeler kullanın. processListWithOperation fonksiyonu giriş listesi üzerinde dönmeli, verilen fonksiyonu sağlanan değerle her öğeye uygulamalı ve sonuçları yeni bir listede toplamalıdır. İşlemleri sırayla uygulayın; ilk işlemin sonucunu ikinci işlem için girdi olarak kullanın.

Kendin dene

import 'dart:io';

void main() {
  // Girdileri oku
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Dize girişini tam sayı listesine dönüştür
  List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
  int firstOpValue = int.parse(firstValue!);
  int secondOpValue = int.parse(secondValue!);
  
  // TODO: Kodunuzu aşağıya yazın
  // Üç işlem fonksiyonunu oluşturun: multiplyBy, addTo, subtractFrom
  // processListWithOperation fonksiyonunu oluşturun
  // İşlemleri sırasıyla uygulayın ve sonuçları saklayın
  
  // Sonuçları istenen formatta yazdırın
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // İlk işlemi ve sonucu yazdırın
  // İkinci işlemi ve nihai sonucu yazdırın
  print('Processing completed successfully');
}

Mantık & Akış bölümündeki tüm dersler