Anda di halaman 1dari 3

UJIAN AKHIR SEMESTER

Nama : Ronald Maulus Tgl : 20 Januari 2023


NPM : 2242820
Mata Kuliah : Functional Programming
Dosen : Muhammad Adli Rizqulloh

Pada file "data UAS.txt" terdapat list (a,b,c,d)


Buatlah fungsi untuk mengolah data yang berada dalam file "data UAS.txt", dengan urutan
sebagai berikut:

1. Jika pada salah satu elemennya (a atau b atau c atau d) terdapat angka 0, maka list tersebut
tidak diproses lebih lanjut
contoh:
(73,4,54,61),(73,0,26,59),(62,35,83,20),(4,66,62,41),(9,31,95,46),.... -> (73,4,54,61),
(62,35,83,20),(4,66,62,41),(9,31,95,46),....

2. Jumlahkan nilai elemen c dan d sehingga list berubah menjadi (a, b, c + d) -> (a, b, e)
contoh:
(73,4,54,61),(62,35,83,20),(4,66,62,41),(9,31,95,46),.... -> (73,4,115),(62,35,103),
(4,66,103),(9,31,141),....
4. Jika pada elemen 'e' nilainya lebih besar dari 120, maka list tersebut tidak diproses lebih
lanjut
contoh:
(73,4,115),(62,35,103),(4,66,103),(9,31,141),.... -> (73,4,115),(62,35,103),(4,66,103),....
5. Jika element a + b hasilnya ganjil, maka list tersebut tidak diproses lebih lanjut
contoh:
(73,4,115),(62,35,103),(4,66,103),.... -> (4,66,103),....

Fungsi yang bisa dijalankan untuk bisa menjalankan program pada pertanyaan nomor 1 adalah :

Program
processTuples :: [(Int, Int, Int, Int)] -> [(Int, Int, Int, Int)]

processTuples tuples = filter (\(a, b, c, d) -> a /= 0 && b /= 0 && c /= 0 && d /= 0) tuples

main :: IO ()

main = do
let inputList = [(8,44,52,14),(41,96,70,65),(6,87,5,97)] {- Karena data terlalu

panjang, saya hanya tampilkan sebagian kecil dari data aktualnya. -}

let outputList = processTuples inputList

print outputList

Fungsi yang bisa dijalankan untuk bisa menjalankan program pada pertanyaan nomor 2 adalah :

Program
inputList :: [(Int, Int, Int, Int)]

inputList = [(8,44,52,14),(41,96,70,65),(6,87,5,97)]{- Karena data terlalu

panjang, saya hanya tampilkan sebagian kecil dari data aktualnya. -}

sumCandD :: (Int, Int, Int, Int) -> (Int, Int, Int)

sumCandD (a, b, c, d) = (a, b, c + d)

outputList :: [(Int, Int, Int)]

outputList = map sumCandD inputList

-- Output

main :: IO ()

main = print outputList

Fungsi yang bisa dijalankan untuk bisa menjalankan program pada pertanyaan nomor 4 adalah :

Program

inputList :: [(Int, Int, Int, Int)]

inputList = [(8,44,52,14),(41,96,70,65),(6,87,5,97)]{- Karena data terlalu

panjang, saya hanya tampilkan sebagian kecil dari data aktualnya. -}

sumCandD :: (Int, Int, Int, Int) -> (Int, Int, Int)

sumCandD (a, b, c, d) = (a, b, c + d)


outputList :: [(Int, Int, Int)]

outputList = filter (\(_, _, e) -> e < 120) (map sumCandD inputList)

-- Output list

main :: IO ()

main = print outputList

Fungsi yang bisa dijalankan untuk bisa menjalankan program pada pertanyaan nomor 5 adalah :

Program

inputList :: [(Int, Int, Int, Int)]

inputList = [(8,44,52,14),(41,96,70,65),(6,87,5,97)]

-- Function to check if the sum of a and b is odd

isSumOdd :: (Int, Int, Int, Int) -> Bool

isSumOdd (a, b, _, _) = odd (a + b)

-- Function to add the values of c and d in each tuple

sumCandD :: (Int, Int, Int, Int) -> (Int, Int, Int)

sumCandD (a, b, c, d) = (a, b, c + d)

-- Filter tuples based on the condition (a + b is not odd)

outputList :: [(Int, Int, Int)]

outputList = map sumCandD $ filter (not . isSumOdd) inputList

-- Output list

main :: IO ()

main = print outputList

Anda mungkin juga menyukai