Contoh Soal Algoritma Pemrograman (Soal LIST)

Temen-temen ini saya punya contoh soal tentang LIST dan beberapa penyelesaiannya



Persoalan
Buatlah suatu fungsi rekursif untuk menyisipkan karakter pada sebuah kata berikut DINNUSWANTORO agar menjadi kata DIANNUSWANTORO
Definisi dan spesifikasi fungsi adalah sebagai berikut :
Sisip (c L): karakter List à List
Petunjuk :
Penyisipan karakter A dilakukan sebelum karakter N pertama, terdapat satu basis untuk memeriksa posisi karakter N, lalu menyisipkan karakter A sebelum karakter N, selain itu lakukan konso secara rekuren
Contoh Test List dalam Aplikasi :
List Karakter
(sisip ‘A '(D I N N U S W A N T O R O)) à (D I A N N U S W A N T O R O)


Jawaban :
(defun sisip (e L)
     (cond ((eq (car L) 'n) (cons e L))
            (t (cons (car L) (sisip e (cdr L))))
     )
)



Persoalan
Buatlah suatu fungsi rekursif untuk menyisipkan karakter d alam sebuah kata pada posisi tertentu
Definisi dan spesifikasi fungsi adalah sebagai berikut :
SisipX (x c L): int karakter List à List
Petunjuk :
Penyisipan karakter c dilakukan pada urutan ke x pada list L, terdapat 1 basis untuk memeriksa posisi yang diinginkan, lalu sisipkan karakter c kedalam list L, selain itu lakukan konso secara rekuren

Contoh Test List dalam Aplikasi :
List Karakter
(sisipX 3 ‘A '(A N K)) à (A N A K)


Jawaban :
(defun sisipX (x c L)
     (cond ((= x 1) (cons c L))
            (t (cons (car L) (sisipX (- x 1) c (cdr L))))
     )
)



Persoalan
Buatlah suatu fungsi rekursif untuk menghapus suatu nilai dalam sebuah kata pada posisi tertentu
Definisi dan spesifikasi fungsi adalah sebagai berikut :
hapuskeX (x L): int List à List
Petunjuk :
Menghapus nilai pada urutan ke x dalam list L, terdapat 1 basis untuk memeriksa posisi yang akan dihapus, lalu hapus nilai pada posisi x dalam list L, selain itu lakukan konso secara rekuren

Contoh Test List dalam Aplikasi :
List Karakter
(hapuskeX 2 ‘(5 6 7 8)) à (5 7 8)


Jawaban :
(defun hapuskeX (x L)
     (cond ((= x 1) (cdr L))
            (t (cons (car L) (hapuskeX (- x 1) (cdr L))))
     )
)



Persoalan
Buatlah suatu fungsi rekursif untuk mengganti suatu karakter pada posisi x dengan karakter pada posisi Y dalam suatu List L
Definisi dan spesifikasi fungsi adalah sebagai berikut :
gantiXY (x y L): int int List à List
Petunjuk :
Mengganti karakter pada urutan ke x dengan karakter pada urutan ke y dalam list L, terdapat 2 fungsi tambahan untuk mencari elemen yang akan diganti dan elemen pengganti, serta fungsi untuk menganti nilai elemen yang diingikan.

Contoh Test List dalam Aplikasi :
List Karakter
(gantiXY 2 4 ‘(5 6 7 8)) à (5 8 7 8)
(gantiXY 1 3 ‘(5 6 7 8)) à (7 6 7 8)
(gantiXY 3 4 ‘(5 6 7 8)) à (5 6 8 8)

Jawaban :
(defun getElmtX (x L)
     (cond ((= x 1) (car L))
            (t (getElmtX (- x 1) (cdr L)))
     )
)

(defun gantiX (x c L)
     (cond ((= x 1) (cons c (cdr L)))
            (t (cons (car L) (gantiX (- x 1) c (cdr L))))
     )
)

(defun gantiXY (x y L)
     (gantiX x (getElmtX y L) L)
)

Comments