# CS613-2019 Quiz1 Test cases ## Q3 (Stern Broccot) ```haskell -- 6 cases lcaCases = [(2%3, 2%723), (87%321, 2%723), (6%87, 2%723), (4%3, 8%6), (1%1, 8%6), (3%8, 3%7)] -- 9 cases justBelowCases = [(5, 3%7), (6, 3%7), (4, 23%7), (18, 23%7), (9, 17%7), (12, 17%7), (3, 1%1), (9, 1%1), (4, 3%9)] Solution3.check lca Solution3.lca lcaCases Solution3.check justBelow Solution3.justBelow justBelowCases ``` ## Q4 Cryptanalysis ```haskell subCases = [("POWASQERBCDFGHIJKLMNTUVXYZ", 'c'), ("POWASQERBCDFGHIJKLMNTUVXYZ", '@'), ("POWASQERBCDFGHIJKLMNTUVXYZ", ' '), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'D'), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'A'), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'R')] unsubCases = [("POWASQERBCDFGHIJKLMNTUVXYZ", 'c'), ("POWASQERBCDFGHIJKLMNTUVXYZ", '@'), ("POWASQERBCDFGHIJKLMNTUVXYZ", ' '), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'A'), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'P'), ("POWASQERBCDFGHIJKLMNTUVXYZ", 'L')] Solution4.check sub Solution4.sub subCases Solution4.check unsub Solution4.unsub unsubCases albus = "ALBUS PERCIVAL WULFRIC BriAN DUMBLEDORE" encodeKeyCases = [("SWORDFISH", "AMITABHA SANYAL"), ("SWORDFISH", "aMITABHA S@N YAL"), ("MEZZANINE", albus)] decodeKeyCases = [("SWORDFISH", "SGAQSWHS PSJYSE"), ("SWORDFISH", "aGAQSWHS P@J YSE"), ("MEZZANINE", "MHETR ONQZDUMH VTHIQDZ EriMK ATJEHNALQN")] Solution4.check encode_keyword_cipher Solution4.encode_keyword_cipher encodeKeyCases Solution4.check decode_keyword_cipher Solution4.decode_keyword_cipher decodeKeyCases eceaserCases = [('F', ['A'..'Z']), ('B', "FGHIJKLMNOPQRSTUVWXYZABCDE los pollos hermanos"), ('G', ['A'..'Z'] ++ " los pollos hermanos")] dceaserCases = [('F', "FGHIJKLMNOPQRSTUVWXYZABCDE"), ('G', "GHIJKLMNOPQRSTUVWXYZABCDEF los pollos hermanos"), ('L', (Solution4.decode_ceaser 'P' albus)), ('A', albus)] Solution4.check encode_ceaser Solution4.encode_ceaser eceaserCases Solution4.check decode_ceaser Solution4.decode_ceaser dceaserCases ``` ## How to run the test cases First load the Solution and your submissions in a GHCi shell `stack ghci <path-to-Qx.hs> <path-to-Solutionx.hs>` Now you can simply use `Solution3.check` or `Solution4.check` to confirm how many cases you've cracked. Both functions return `[Bool]`, `True` indicates you passed the case. All cases are equally weighed (look at your moodle grade comments if in doubt). If you want to see the outputs: ```haskell map (uncurry f) cases_list map (uncurry Solutionx.f) cases_list ```