Merhaba arkadaşlar, bu yazımda sizlere bir liste içindeki aynı elemandan 2,3 tane olduğunda fazlalığı temizlemeyi anlatacağım.Örnek olarak bir listemiz olsun “a a b b c c c ” diye gitsin.
Önce kodu vereyim daha sonra anlatıma geçeyim..
;aynı elemandan birden fazla varsa kaldıran fonksiyon (define (kaldir liste)(cond ;Adım 1 [(empty? liste) empty] ;Adım 2 [(empty? (rest liste))liste] ;Adım 3 [else (let ([i (first liste)]) ;Adım 4 (if (equal? i (cadr liste))) ;Adım 5 (kaldir (rest liste)) ;Adım 6 (cons i (kaldir (rest liste)))))])) ;Adım 7 (kaldir (list "a" "a" "b" "b" "c" "c" "c"))
Adım 1) kaldir diye bir fonksiyon tanımladım
Adım 2) listenin boş olma durumunda boş liste dönsün diyorum
Adım 3) Burada da ilk elemanı hariç kalan elemanlar boş ise ilk elemanı döndür diyoruz
Adım 4) Burada let ifadesi ilk elemanı i değerine atama için kullanılıyor.
Adım 5) i değeri ile ikinci elemanın değeri aynı mı kontrolü yapılıyor
Adım 6) kaldir fonksiyonu tekrar çağırılıyor ilk eleman hariç diğerleri için
Adım 7) Burada da cons ile yeni bir liste oluşturup i değerini atıyor tekrar kalan elemanlar için fonksiyonu çağırıyoruz.
Daha sonra fonksiyona bizim değerlerimizi gönderiyoruz.
Ekran görüntüsü aşağıdaki gibidir..
Umarım faydalı olmuştur..