Created
February 26, 2020 08:03
-
-
Save suggoitanoshi/9019c058de23158b30c778bdf139c710 to your computer and use it in GitHub Desktop.
Praktikum 2 Daspro (Semua)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: Mencari nilai rata-rata dari seluruh element list of integer | |
module ListOfInteger where | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Int: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Int | |
Basis: List of Int kosong adalah list of Int | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Int di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Int di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Int -> [Int] -> [Int] | |
{- konso e li menghasilkan sebuah list of integer dari e (sebuah integer) dan li | |
(list of integer), dengan e sebagai elemen pertama: e o li -> li' -} | |
-- REALISASI | |
konso e li = [e] ++ li | |
konsDot :: [Int] -> Int -> [Int] | |
{- konsDot li e menghasilkan sebuah list of integer dari li (list of integer) dan | |
e (sebuah integer), dengan e sebagai elemen terakhir: li o e -> li' -} | |
-- REALISASI | |
konsDot li e = li ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Int] -> Int | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Int] -> [Int] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Int] -> Int | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Int] -> [Int] | |
-- init l menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Int] -> Bool | |
-- isEmpty l true jika list of integer l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Int] -> Bool | |
-- isOneElmt l true jika list of integer l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- Definisi dan Spesifikasi | |
sumElmt :: [Int] -> Int | |
{- sumElmt l mengembalikan hasil penjumlahan semua elemen l -} | |
nbElmt :: [Int] -> Int | |
{- nbElmt l mengembalikan banyaknya elemen l-} | |
averageList :: [Int] -> Float | |
{- averageList l mengembalikan nilai rata-rata dari l -} | |
-- Realisasi | |
sumElmt l | |
| isOneElmt l = head l | |
| otherwise = head l + sumElmt (tail l) | |
nbElmt l | |
| isOneElmt l = 1 | |
| otherwise = 1+nbElmt (tail l) | |
averageList l = fromIntegral(sumElmt l)/fromIntegral(nbElmt l) | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: Menghitung banyaknya bilangan genap dalam list | |
module CountEven where | |
-- Definisi dan Spesifikasi | |
countEven :: [Int] -> Int | |
-- countEven menghitung banyaknya bilangan genap secara rekursif | |
-- Realisasi | |
countEven l | |
| isEmpty l = 0 | |
| otherwise = | |
let h = head l | |
in | |
(countEven (tail l)) + (if (mod h 2) == 0 then 1 else 0) | |
--Definisi ListOfInteger | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Int: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Int | |
Basis: List of Int kosong adalah list of Int | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Int di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Int di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Int -> [Int] -> [Int] | |
{- konso e li menghasilkan sebuah list of integer dari e (sebuah integer) dan li | |
(list of integer), dengan e sebagai elemen pertama: e o li -> li' -} | |
-- REALISASI | |
konso e li = [e] ++ li | |
konsDot :: [Int] -> Int -> [Int] | |
{- konsDot li e menghasilkan sebuah list of integer dari li (list of integer) dan | |
e (sebuah integer), dengan e sebagai elemen terakhir: li o e -> li' -} | |
-- REALISASI | |
konsDot li e = li ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Int] -> Int | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Int] -> [Int] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Int] -> Int | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Int] -> [Int] | |
-- init l menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Int] -> Bool | |
-- isEmpty l true jika list of integer l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Int] -> Bool | |
-- isOneElmt l true jika list of integer l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: menghitung banyaknya elemen l yang memenuhi syarat f | |
module CountIf where | |
-- Definisi dan Spesifikasi | |
countIf :: [Int] -> (Int->Bool) -> Int | |
{- countIf l f menghitung banyaknya elemen l yang memenuhi syarat f -} | |
-- Realisasi | |
countIf l f | |
| isEmpty l = 0 | |
| otherwise = (if f (head l) then 1 else 0) + countIf (tail l) f | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Int: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Int | |
Basis: List of Int kosong adalah list of Int | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Int di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Int di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Int -> [Int] -> [Int] | |
{- konso e li menghasilkan sebuah list of integer dari e (sebuah integer) dan li | |
(list of integer), dengan e sebagai elemen pertama: e o li -> li' -} | |
-- REALISASI | |
konso e li = [e] ++ li | |
konsDot :: [Int] -> Int -> [Int] | |
{- konsDot li e menghasilkan sebuah list of integer dari li (list of integer) dan | |
e (sebuah integer), dengan e sebagai elemen terakhir: li o e -> li' -} | |
-- REALISASI | |
konsDot li e = li ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Int] -> Int | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Int] -> [Int] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Int] -> Int | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Int] -> [Int] | |
-- init l menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Int] -> Bool | |
-- isEmpty l true jika list of integer l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Int] -> Bool | |
-- isOneElmt l true jika list of integer l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: Membalikkan suatu list of chars | |
module ListOfCharacter where | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Char: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Char | |
Basis: List of Char kosong adalah list of Char | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Char di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Char di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Char -> [Char] -> [Char] | |
{- konso e lc menghasilkan sebuah list of character dari e (sebuah character) | |
dan lc (list of integer), dengan cc sebagai elemen pertama: e o lc -> lc' -} | |
-- REALISASI | |
konso e lc = [e] ++ lc | |
konsDot :: [Char] -> Char -> [Char] | |
{- konsDot(lc,cc) menghasilkan sebuah list of character dari lc (list of | |
character) dan e (sebuah character), dengan e sebagai elemen terakhir: | |
lc o e -> lc' -} | |
-- REALISASI | |
konsDot lc e = lc ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Char] -> Char | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Char] -> [Char] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Char] -> Char | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Char] -> [Char] | |
-- init(l) menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Char] -> Bool | |
-- isEmpty l true jika list of character l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Char] -> Bool | |
-- isOneElmt l true jika list of character l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- Definisi dan Spesifikasi inverse | |
inverse :: [Char] -> [Char] | |
-- inverse(l) menerima satu masukan list l dan mengembalikan list l' dimana | |
-- l' adalah l yang dibalik. | |
-- Realisasi | |
inverse l | |
| isEmpty l = [] | |
| otherwise = konsDot (inverse (tail l)) (head l) | |
module ListOfCharacter where | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Char: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Char | |
Basis: List of Char kosong adalah list of Char | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Char di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Char di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Char -> [Char] -> [Char] | |
{- konso e lc menghasilkan sebuah list of character dari e (sebuah character) | |
dan lc (list of integer), dengan cc sebagai elemen pertama: e o lc -> lc' -} | |
-- REALISASI | |
konso e lc = [e] ++ lc | |
konsDot :: [Char] -> Char -> [Char] | |
{- konsDot(lc,cc) menghasilkan sebuah list of character dari lc (list of | |
character) dan e (sebuah character), dengan e sebagai elemen terakhir: | |
lc o e -> lc' -} | |
-- REALISASI | |
konsDot lc e = lc ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Char] -> Char | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Char] -> [Char] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Char] -> Char | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Char] -> [Char] | |
-- init(l) menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Char] -> Bool | |
-- isEmpty l true jika list of character l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Char] -> Bool | |
-- isOneElmt l true jika list of character l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
module ListOfInteger where | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Int: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Int | |
Basis: List of Int kosong adalah list of Int | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Int di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Int di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Int -> [Int] -> [Int] | |
{- konso e li menghasilkan sebuah list of integer dari e (sebuah integer) dan li | |
(list of integer), dengan e sebagai elemen pertama: e o li -> li' -} | |
-- REALISASI | |
konso e li = [e] ++ li | |
konsDot :: [Int] -> Int -> [Int] | |
{- konsDot li e menghasilkan sebuah list of integer dari li (list of integer) dan | |
e (sebuah integer), dengan e sebagai elemen terakhir: li o e -> li' -} | |
-- REALISASI | |
konsDot li e = li ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Int] -> Int | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Int] -> [Int] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Int] -> Int | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Int] -> [Int] | |
-- init l menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Int] -> Bool | |
-- isEmpty l true jika list of integer l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Int] -> Bool | |
-- isOneElmt l true jika list of integer l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: memecah 1 list of integer menjadi list positif dan negatif | |
module ListOfInteger where | |
-- DEFINISI DAN SPESIFIKASI LIST | |
{- type List of Int: [ ] atau [e o List] atau [List o e] | |
Definisi type List of Int | |
Basis: List of Int kosong adalah list of Int | |
Rekurens: | |
List tidak kosong dibuat dengan menambahkan sebuah elemen bertype Int di awal | |
sebuah list atau | |
dibuat dengan menambahkan sebuah elemen bertype Int di akhir sebuah list -} | |
-- DEFINISI DAN SPESIFIKASI KONSTRUKTOR | |
konso :: Int -> [Int] -> [Int] | |
{- konso e li menghasilkan sebuah list of integer dari e (sebuah integer) dan li | |
(list of integer), dengan e sebagai elemen pertama: e o li -> li' -} | |
-- REALISASI | |
konso e li = [e] ++ li | |
konsDot :: [Int] -> Int -> [Int] | |
{- konsDot li e menghasilkan sebuah list of integer dari li (list of integer) dan | |
e (sebuah integer), dengan e sebagai elemen terakhir: li o e -> li' -} | |
-- REALISASI | |
konsDot li e = li ++ [e] | |
-- DEFINISI DAN SPESIFIKASI SELEKTOR | |
-- head :: [Int] -> Int | |
-- head l menghasilkan elemen pertama list l, l tidak kosong | |
-- tail :: [Int] -> [Int] | |
-- tail l menghasilkan list tanpa elemen pertama list l, l tidak kosong | |
-- last :: [Int] -> Int | |
-- last l menghasilkan elemen terakhir list l, l tidak kosong | |
-- init :: [Int] -> [Int] | |
-- init l menghasilkan list tanpa elemen terakhir list l, l tidak kosong | |
-- DEFINISI DAN SPESIFIKASI PREDIKAT | |
isEmpty :: [Int] -> Bool | |
-- isEmpty l true jika list of integer l kosong | |
-- REALISASI | |
isEmpty l = null l | |
isOneElmt :: [Int] -> Bool | |
-- isOneElmt l true jika list of integer l hanya mempunyai satu elemen | |
-- REALISASI | |
isOneElmt l = (length l) == 1 | |
-- Definisi dan Spesifikasi | |
pecahList :: [Int] -> ([Int],[Int]) | |
{- pecahList l memecah l menjadi 2 list, l1 dan l2 dimana l1 mengandung | |
- elemen positif atau 0dari l sedangkan l2 mengandung elemen negatif dari l -} | |
-- Realisasi | |
pecahList l | |
| isEmpty l = ([],[]) -- basis | |
| otherwise = | |
let | |
(p,n) = pecahList (tail l) -- rekurens | |
h = head l | |
in | |
if h >= 0 then (konso h p, n) else (p, konso h n) | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: sumKelipatanX mencari semua kelipatan X dalam interval tertentu | |
module SumKelipatanX where | |
-- Definisi dan Spesifikasi | |
sumKelipatanX :: Int -> Int -> Int -> Int | |
-- sumKelipatanX(m,n,x) menjumlahkan semua bilangan yang merupakan kelipatan dari x | |
-- dalam interval [m,n] | |
-- Realisasi | |
sumKelipatanX m n x | |
| m == n = (if (mod m x) == 0 then m else 0) | |
| otherwise = (sumKelipatanX (m+1) n x) + (if mod m x == 0 then m else 0) | |
-- NIM: 16519187 | |
-- Nama: Fransiskus Febryan Suryawan | |
-- Tanggal: 19 Februari 2020 | |
-- Deskripsi: | |
module x where | |
-- Definisi dan Spesifikasi | |
-- Realisasi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment