braingym/leetcode/1/haskell.ipynb

111 lines
2.5 KiB
Text
Raw Permalink Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "674f782d-c014-4749-ba16-5f107f8c31d9",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import qualified Data.IntMap.Strict as Map"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6dd70e30-9203-45a8-957b-a0a8459a3a28",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"enumerate = zip [0..]\n",
"\n",
"twoSum' :: Map.IntMap Int -> [(Int, Int)] -> Int -> [Int]\n",
"twoSum' hm [] target = []\n",
"twoSum' hm ((i, n):xs) target =\n",
" let remainder = target - n in\n",
" let index = Map.lookup remainder hm in\n",
" case index of\n",
" Nothing -> twoSum' (Map.insert n i hm) xs target\n",
" Just k -> [k, i]\n",
"\n",
"twoSum :: [Int] -> Int -> [Int]\n",
"twoSum nums target =\n",
" let hm = Map.empty in\n",
" let nums' = enumerate nums in\n",
" twoSum' hm nums' target"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0fd587ec-b060-4722-9bbd-d4f6dd83efe2",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"-- Open Assistant:\n",
"-- Define a custom function to check assertions.\n",
"assert :: Bool -> String -> IO ()\n",
"assert True msg = pure ()\n",
"assert False msg = ioError $ userError msg"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "85cd567a-8124-4a77-8108-0183a9e6b471",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"\"All Done\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"assert (twoSum [3,3] 6 == [0,1]) \"Case 1 Failed\"\n",
"assert (twoSum [3,2,4] 6 == [1,2]) \"Case 2 Failed\"\n",
"assert (twoSum [2,7,11,15] 9 == [0,1]) \"Case 3 Failed\"\n",
"\n",
"print \"All Done\""
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c631b602-1a58-478b-8a73-294f2e34176d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "haskell-Haskell kernel",
"language": "haskell",
"name": "haskell-haskell"
},
"language_info": {
"codemirror_mode": "Haskell",
"file_extension": ".hs",
"mimetype": "text/x-haskell",
"name": "haskell",
"pygments_lexer": "Haskell",
"version": "9.0.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}