Selisih set
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 24 dari 65.
Terkadang kamu perlu mencari elemen yang ada di satu Set, tetapi tidak ada di Set lainnya. Method difference() mengatasi hal ini dengan membuat set baru yang hanya berisi elemen dari set pertama yang tidak ada di set kedua.
Anggap saja ini seperti pengurangan pada set, kamu menghapus semua elemen dari set kedua dari set pertama. Method difference() mengembalikan set baru yang berisi elemen yang tersisa, tanpa mengubah kedua set asli.
Set<String> todaysTasks = {'email', 'meeting', 'report', 'calls'};
Set<String> completedTasks = {'email', 'calls'};
Set<String> remainingTasks = todaysTasks.difference(completedTasks);
print(remainingTasks); // {meeting, report}Operasi ini sangat berguna untuk menemukan apa yang belum ada, apa yang masih harus dilakukan, atau apa yang unik pada satu kumpulan dibandingkan dengan kumpulan lainnya. Tidak seperti irisan yang menemukan kesamaan, selisih menyoroti hal yang membedakan satu set dari set lainnya.
Tantangan
MudahBuat program yang mengelola sistem manajemen proyek dengan mengidentifikasi tugas yang sudah direncanakan tetapi belum diselesaikan. Programmu harus:
- Membaca input string yang mewakili nama proyek
- Membaca beberapa input string yang mewakili tugas yang direncanakan (input akan berakhir saat kamu menerima
"planned_done") - Membaca beberapa input string yang mewakili tugas yang sudah diselesaikan (input akan berakhir saat kamu menerima
"completed_done") - Membuat dua set terpisah untuk menyimpan tugas yang direncanakan dan tugas yang sudah diselesaikan
- Menggunakan method
difference()untuk menemukan tugas yang sudah direncanakan tetapi belum diselesaikan - Mencetak analisis status proyek dalam format persis seperti yang ditunjukkan di bawah ini
Misalnya, jika nama proyeknya adalah "Website Launch", tugas yang direncanakan adalah "Design mockups", "Write content", "Setup database", "Test functionality", "Deploy site", dan tugas yang sudah diselesaikan adalah "Design mockups", "Setup database", programmu harus menampilkan:
Project: Website Launch
Planned tasks: {Design mockups, Write content, Setup database, Test functionality, Deploy site}
Completed tasks: {Design mockups, Setup database}
Remaining tasks: {Write content, Test functionality, Deploy site}
Tasks completed: 2
Tasks remaining: 3
Progress: 40.0% complete
Status: Project in progress - 3 task(s) remainingJika nama proyeknya adalah "Mobile App Development", tugas yang direncanakan adalah "Create wireframes", "Develop UI", "Implement features", dan tugas yang sudah diselesaikan adalah "Create wireframes", "Develop UI", "Implement features", programmu harus menampilkan:
Project: Mobile App Development
Planned tasks: {Create wireframes, Develop UI, Implement features}
Completed tasks: {Create wireframes, Develop UI, Implement features}
Remaining tasks: {}
Tasks completed: 3
Tasks remaining: 0
Progress: 100.0% complete
Status: Project completed successfullyJika nama proyeknya adalah "Marketing Campaign", tugas yang direncanakan adalah "Research target audience", "Create content", "Design graphics", "Launch campaign", "Analyze results", dan tugas yang sudah diselesaikan adalah "Research target audience", programmu harus menampilkan:
Project: Marketing Campaign
Planned tasks: {Research target audience, Create content, Design graphics, Launch campaign, Analyze results}
Completed tasks: {Research target audience}
Remaining tasks: {Create content, Design graphics, Launch campaign, Analyze results}
Tasks completed: 1
Tasks remaining: 4
Progress: 20.0% complete
Status: Project in progress - 4 task(s) remainingProgrammu harus menggunakan method difference() untuk menemukan tugas yang ada di set tugas yang direncanakan tetapi tidak ada di set tugas yang sudah diselesaikan. Hitung persentase progres dengan membagi jumlah tugas yang sudah diselesaikan dengan jumlah total tugas yang direncanakan, lalu mengalikannya dengan 100, dibulatkan hingga 1 angka desimal. Jika semua tugas sudah diselesaikan, tampilkan "Project completed successfully" sebagai status. Jika belum, tampilkan "Project in progress - X task(s) remaining", dengan X sebagai jumlah tugas yang tersisa.
Coba sendiri
import 'dart:io';
void main() {
// Baca nama proyek
String? projectName = stdin.readLineSync();
// Baca tugas yang direncanakan hingga "planned_done"
Set<String> plannedTasks = <String>{};
String? task;
while ((task = stdin.readLineSync()) != "planned_done") {
if (task != null) {
plannedTasks.add(task);
}
}
// Baca tugas yang selesai hingga "completed_done"
Set<String> completedTasks = <String>{};
while ((task = stdin.readLineSync()) != "completed_done") {
if (task != null) {
completedTasks.add(task);
}
}
// TODO: Tulis kodemu di bawah ini
// Gunakan method difference() untuk menemukan tugas yang tersisa
// Hitung persentase kemajuan
// Tentukan status proyek
// Tampilkan hasilnya
print("Project: $projectName");
print("Planned tasks: $plannedTasks");
print("Completed tasks: $completedTasks");
// Tambahkan pernyataan output yang tersisa di sini
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unikLatihan sendiri: Compiler Dart online