Skip to content

Instantly share code, notes, and snippets.

@suggoitanoshi
Created February 26, 2020 08:03
Show Gist options
  • Save suggoitanoshi/9019c058de23158b30c778bdf139c710 to your computer and use it in GitHub Desktop.
Save suggoitanoshi/9019c058de23158b30c778bdf139c710 to your computer and use it in GitHub Desktop.
Praktikum 2 Daspro (Semua)
-- 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