initial commit
This commit is contained in:
1
lab01/.gitignore
vendored
Normal file
1
lab01/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.zip
|
||||
24
lab01/fizzbuzz.hs
Normal file
24
lab01/fizzbuzz.hs
Normal file
@@ -0,0 +1,24 @@
|
||||
-- Do the game fizzbuzz (http://en.wikipedia.org/wiki/Fizz_buzz).
|
||||
-- Return a string counting from 1 to the specified number.
|
||||
-- Replace numbers dvisible by 3 with "fizz" and numbers divisible
|
||||
-- by 5 with "buzz". If a number is divisible by both 3 and 5,
|
||||
-- replace it with "fizzbuzz".
|
||||
|
||||
fb :: Int -> String
|
||||
fb x | mod x 3 == 0 && mod x 5 == 0 = "fizzbuzz"
|
||||
fb x | mod x 3 == 0 = "fizz"
|
||||
fb x | mod x 5 == 0 = "buzz"
|
||||
fb x = show x
|
||||
|
||||
fizzbuzz :: Int -> String
|
||||
fizzbuzz n
|
||||
| n < 0 = error "Non-negative numbers only"
|
||||
| otherwise = unwords $ map fb [1..n]
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
print (fizzbuzz 1)
|
||||
print (fizzbuzz 7)
|
||||
print $ fizzbuzz 99
|
||||
print $ fizzbuzz 0
|
||||
print $ fizzbuzz (-2)
|
||||
38
lab01/lab1.txt
Normal file
38
lab01/lab1.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
NOTE: For all assignments, you are not allowed to modify the type signatures of the functions.
|
||||
|
||||
If you do not have access to Canvas yet, please email me your solutions instead (thomas.austin@sjsu.edu).
|
||||
|
||||
Part 1)
|
||||
Navigate to http://codecheck.it/files/1801270115e7z5z5wxbxeqdep0nhqg29hic.
|
||||
Implement the maxNum function. This function reads in a list of numbers and returns the largest. Define this function in a recursive manner. (Note that using the max function is cheating).
|
||||
|
||||
Once you have passed all tests, click the "Download Report" button.
|
||||
|
||||
|
||||
Part 2)
|
||||
Implement the "fizzbuzz" game. The function counts from 1 to the specified number, returning a string with the result. The rules are:
|
||||
|
||||
If a number is divisible by 3 and by 5, instead say "fizzbuzz"
|
||||
Else if a number is divisible by 3, instead say "fizz"
|
||||
Else if a number is divisible by 5, instead say "buzz"
|
||||
Otherwise say the number
|
||||
|
||||
Here is a sample run of this function:
|
||||
|
||||
*Main> fizzbuzz 15
|
||||
"1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz"
|
||||
|
||||
Go to http://codecheck.it/files/1801222202d5zry2pb674sm51n6sc7ajplp to work on the problem.
|
||||
|
||||
|
||||
Part 3)
|
||||
Go to http://codecheck.it/files/1801270120a4iwu1xmznyiyliwjqj9akxcl.
|
||||
|
||||
In JSON.hs, implement the JObject case of the toString function.
|
||||
|
||||
|
||||
|
||||
SUBMITTING YOUR WORK
|
||||
|
||||
Once you have completed all three problems, you should have generated three different .zip files from CodeCheck. Zip those .zip files together, and upload the resulting .zip file to Canvas.
|
||||
|
||||
14
lab01/max.hs
Normal file
14
lab01/max.hs
Normal file
@@ -0,0 +1,14 @@
|
||||
maxNum :: [Integer] -> Integer
|
||||
|
||||
maxNum [] = error "empty list"
|
||||
maxNum [x] = x
|
||||
maxNum (x:xs) = let m = maxNum xs in if x > m then x else m
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
print (maxNum [1,2,3])
|
||||
print (maxNum [4])
|
||||
print $ maxNum [7, 12, 0, 99, 46, 12349, 82] -- note the use of the '$' here
|
||||
print $ maxNum [-4, -1, -99, -2]
|
||||
print $ maxNum [7, -9, 12, 0, 99, -3, 46, 12349, 82, -7, 8]
|
||||
print $ maxNum []
|
||||
Reference in New Issue
Block a user