Cara Menghapus Item Duplikat dari Sebuah Array di Perl

Bekerja dengan array dalam pemrograman sering kali menghadapkan Anda pada tantangan umum: bagaimana menangani nilai duplikat. Jika Anda seorang programmer Perl yang menghadapi masalah ini, Anda mungkin tidak yakin bagaimana cara efektif untuk menghapus item duplikat dari sebuah array.

Dalam pos blog ini, kita akan menjelaskan teknik spesifik untuk menghilangkan duplikat dari sebuah array di Perl, memberikan Anda solusi kustom serta melihat fungsi built-in yang tersedia di versi terbaru Perl.

Memahami Masalah

Pertimbangkan sebuah contoh di mana Anda memiliki array berikut di Perl:

my @my_array = ("satu", "dua", "tiga", "dua", "tiga");

Dalam array ini, nilai “dua” dan “tiga” muncul lebih dari sekali, menjadikannya kandidat untuk di-de-duplikasi. Tujuannya di sini adalah untuk mengubah array ini menjadi daftar unik, pada dasarnya menghilangkan duplikat tersebut, sehingga Anda akan mendapatkan:

satu dua tiga

Solusi: Pendekatan Kustom

Membuat Fungsi Unik

Cara sederhana dan efektif untuk menghapus duplikat adalah dengan membuat fungsi kustom. Di bawah ini adalah fungsi bernama uniq yang dapat Anda gunakan:

sub uniq {
    my %seen;
    grep !$seen{$_}++, @_;
}

Memecah Fungsi

  1. %seen: Ini adalah hash yang akan menyimpan elemen sebagai kunci. Hash dalam Perl hanya memperbolehkan kunci yang unik, yang membuat ini sempurna untuk melacak duplikat.

  2. grep: Fungsi ini mengiterasi daftar dan mengevaluasi kondisi. Di sini, !$seen{$_}++ memeriksa apakah item saat ini ($_) telah terlihat (i.e., ada dalam %seen). Jika belum, itu menambahkannya ke dalam hash dan mengembalikan true, memungkinkan grep untuk mempertahankan item ini dalam output.

Menerapkan Fungsi

Anda dapat menerapkan fungsi ini pada array Anda sebagai berikut:

my @array = qw(satu dua tiga dua tiga);
my @filtered = uniq(@array);

print "@filtered\n"; # Ini mencetak: satu dua tiga

Menguji Output

Setelah menjalankan kode ini, output Anda akan menampilkan array yang telah disaring:

satu dua tiga

Ini menunjukkan bahwa duplikat telah berhasil dihapus!

Menggunakan Fungsi Built-in

Jika Anda menggunakan versi Perl 5.26.0 atau lebih baru, Anda dapat memanfaatkan modul built-in untuk solusi yang lebih universal:

Modul List::Util

Fungsi uniq dari modul List::Util menangani duplikat dengan efisien. Untuk menggunakannya:

  1. Pastikan versi Perl Anda terbaru.
  2. Instal modul (jika diperlukan).
  3. Gunakan uniq langsung pada array Anda.

Contoh:

use List::Util 'uniq';
my @array = qw(satu dua tiga dua tiga);
my @filtered = uniq(@array);

print "@filtered\n"; # Ini mencetak: satu dua tiga

Apa yang Membuat Uniq Built-in Lebih Baik?

  • Efisiensi: Fungsi built-in biasanya dioptimalkan untuk kinerja.
  • Menangani nilai undefined: List::Util::uniq memperlakukan undef sebagai nilai terpisah.
  • Tanpa peringatan: Metode ini tidak akan mengeluarkan peringatan terkait nilai duplikat.

Kesimpulan

Menghapus item duplikat dari sebuah array di Perl dapat dilakukan secara efektif melalui fungsi kustom atau dengan memanfaatkan kemampuan built-in, terutama dengan List::Util. Metode mana pun yang Anda pilih, Anda dapat memastikan bahwa pembersihan array Anda mudah dan efisien. Sekarang Anda dapat menghadapi array dengan percaya diri!

Latih teknik ini dalam proyek Perl Anda untuk memperhalus keterampilan Anda!