Lisp Dili ile Aynı Elmanları Tek’e Düşürme Fonksiyonu

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..

aynı elemandan olanları kaldırma işlemi drracket

Umarım faydalı olmuştur..

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir