week 1 commit
This commit is contained in:
BIN
wk1/Assignment 1 - Kaloyan Stoykov and Dimitar Byalkov.docx
Normal file
BIN
wk1/Assignment 1 - Kaloyan Stoykov and Dimitar Byalkov.docx
Normal file
Binary file not shown.
BIN
wk1/caesar1.png
Normal file
BIN
wk1/caesar1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
24
wk1/elm.json
Normal file
24
wk1/elm.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"type": "application",
|
||||
"source-directories": [
|
||||
"src"
|
||||
],
|
||||
"elm-version": "0.19.1",
|
||||
"dependencies": {
|
||||
"direct": {
|
||||
"elm/browser": "1.0.2",
|
||||
"elm/core": "1.0.5",
|
||||
"elm/html": "1.0.0"
|
||||
},
|
||||
"indirect": {
|
||||
"elm/json": "1.1.3",
|
||||
"elm/time": "1.0.0",
|
||||
"elm/url": "1.0.0",
|
||||
"elm/virtual-dom": "1.0.3"
|
||||
}
|
||||
},
|
||||
"test-dependencies": {
|
||||
"direct": {},
|
||||
"indirect": {}
|
||||
}
|
||||
}
|
BIN
wk1/pythagoras1.png
Normal file
BIN
wk1/pythagoras1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
48
wk1/src/Caesar1.elm
Normal file
48
wk1/src/Caesar1.elm
Normal file
@@ -0,0 +1,48 @@
|
||||
module Caesar1 exposing (..)
|
||||
{-
|
||||
Caesar cipher function
|
||||
Dimitar Byalkov and Kaloyan Stoykov
|
||||
-}
|
||||
|
||||
encode: Int -> Char -> Char
|
||||
encode offset character =
|
||||
-- 65 A 90 Z
|
||||
if Char.toCode(character) > 64 && Char.toCode(character) < 91 then
|
||||
Char.fromCode(65 + modBy 26 (Char.toCode(character) - 65 + offset - 26))
|
||||
-- 97 a 122 z
|
||||
else if Char.toCode(character) > 96 && Char.toCode(character) < 123 then
|
||||
Char.fromCode(97 + modBy 26 (Char.toCode(character) - 97 + offset - 26))
|
||||
else Char.fromCode(32)
|
||||
|
||||
decode: Int -> Char -> Char
|
||||
decode offset character =
|
||||
encode (0 - offset) character
|
||||
|
||||
-- Tests
|
||||
|
||||
testEncodeUpperSmallOffsetA: Bool
|
||||
testEncodeUpperSmallOffsetA = (encode 5 'A' == 'F')
|
||||
|
||||
testEncodeUpperBigOffsetF: Bool
|
||||
testEncodeUpperBigOffsetF = (encode 348 'F' == 'P')
|
||||
|
||||
testEncodeLowerSmallOffsetQ: Bool
|
||||
testEncodeLowerSmallOffsetQ = (encode 9 'q' == 'z')
|
||||
|
||||
testEncodeLowerBigOffsetG: Bool
|
||||
testEncodeLowerBigOffsetG = (encode 215 'g' == 'n')
|
||||
|
||||
testDecodeUpperSmallOffsetA: Bool
|
||||
testDecodeUpperSmallOffsetA = (decode 5 'F' == 'A')
|
||||
|
||||
testDecodeUpperBigOffsetF: Bool
|
||||
testDecodeUpperBigOffsetF = (decode 348 'P' == 'F')
|
||||
|
||||
testDecodeLowerSmallOffsetQ: Bool
|
||||
testDecodeLowerSmallOffsetQ = (decode 9 'z' == 'q')
|
||||
|
||||
testDecodeLowerBigOffsetG: Bool
|
||||
testDecodeLowerBigOffsetG = (decode 215 'n' == 'g')
|
||||
|
||||
allTests: List Bool
|
||||
allTests = [testEncodeUpperSmallOffsetA, testEncodeUpperBigOffsetF, testEncodeLowerSmallOffsetQ, testEncodeLowerBigOffsetG, testDecodeUpperSmallOffsetA, testDecodeUpperBigOffsetF, testDecodeLowerSmallOffsetQ, testDecodeLowerBigOffsetG]
|
93
wk1/src/Pythagoras1.elm
Normal file
93
wk1/src/Pythagoras1.elm
Normal file
@@ -0,0 +1,93 @@
|
||||
module Pythagoras1 exposing (..)
|
||||
{-
|
||||
Pythagoraen triples
|
||||
Dimitar Byalkov and Kaloyan Stoykov
|
||||
-}
|
||||
|
||||
sqr: Int -> Int
|
||||
sqr n =
|
||||
n * n
|
||||
|
||||
isTriple: Int -> Int -> Int -> Bool
|
||||
isTriple a b c =
|
||||
if a <= 0 || b <= 0 || c <= 0 then
|
||||
False
|
||||
else if (sqr a + sqr b) /= sqr c then
|
||||
False
|
||||
else True
|
||||
|
||||
leg1 : Int -> Int -> Int
|
||||
leg1 x y =
|
||||
sqr x - sqr y
|
||||
|
||||
leg2 : Int -> Int -> Int
|
||||
leg2 x y =
|
||||
2 * y * x
|
||||
|
||||
hyp : Int -> Int -> Int
|
||||
hyp x y =
|
||||
sqr x + sqr y
|
||||
|
||||
pythTriple : (Int, Int) -> (Int, Int, Int)
|
||||
pythTriple inputTuple =
|
||||
if Tuple.first inputTuple < 0 || Tuple.second inputTuple < 0 then
|
||||
(0, 0, 0)
|
||||
else
|
||||
(leg1 (Tuple.first inputTuple) (Tuple.second inputTuple), leg2 (Tuple.first inputTuple) (Tuple.second inputTuple), hyp (Tuple.first inputTuple) (Tuple.second inputTuple))
|
||||
|
||||
isTripleTuple : (Int, Int, Int) -> Bool
|
||||
isTripleTuple (a, b, c) =
|
||||
isTriple a b c
|
||||
|
||||
-- Tests
|
||||
|
||||
testSqr: Bool
|
||||
testSqr = (sqr 2 == 4)
|
||||
|
||||
testSqrNegaviteNumber: Bool
|
||||
testSqrNegaviteNumber = (sqr -1 == 1)
|
||||
|
||||
testIsTripleZeros: Bool
|
||||
testIsTripleZeros = (isTriple 0 0 0 == False)
|
||||
|
||||
testIsTripleNotEqual: Bool
|
||||
testIsTripleNotEqual = (isTriple 6 5 4 == False)
|
||||
|
||||
testIsTripleNotEqual2: Bool
|
||||
testIsTripleNotEqual2 = (isTriple 4 6 5 == False)
|
||||
|
||||
testIsTripleEqual: Bool
|
||||
testIsTripleEqual =(isTriple 3 4 5 == True)
|
||||
|
||||
testLeg1: Bool
|
||||
testLeg1 = (leg1 5 6 == -11)
|
||||
|
||||
testLeg1B: Bool
|
||||
testLeg1B = (leg1 7 3 == 40)
|
||||
|
||||
testLeg2: Bool
|
||||
testLeg2 = (leg2 3 9 == 54)
|
||||
|
||||
testLeg2B: Bool
|
||||
testLeg2B = (leg2 2 7 == 28)
|
||||
|
||||
testHyp: Bool
|
||||
testHyp = (hyp 5 6 == 61)
|
||||
|
||||
testHypB: Bool
|
||||
testHypB = (hyp 7 3 == 58)
|
||||
|
||||
testInvalidPythTriple: Bool
|
||||
testInvalidPythTriple = (pythTriple (-5, -9) == (0, 0, 0))
|
||||
|
||||
testPythTriple: Bool
|
||||
testPythTriple = (pythTriple (4, 5) == (-9, 40, 41))
|
||||
|
||||
testPythTripleB: Bool
|
||||
testPythTripleB = (pythTriple (7, 3) == (40, 42, 58))
|
||||
|
||||
testisTripleTuple: Bool
|
||||
testisTripleTuple = (isTripleTuple (3, 4, 5) == True)
|
||||
|
||||
allPythTests: List Bool
|
||||
allPythTests = [testSqr, testSqrNegaviteNumber, testIsTripleZeros, testIsTripleNotEqual, testIsTripleNotEqual2, testIsTripleEqual, testLeg1, testLeg1B, testLeg2, testLeg2B, testHyp, testHypB, testInvalidPythTriple, testPythTriple, testPythTripleB, testisTripleTuple]
|
Reference in New Issue
Block a user