Hackerank Haskell template
Haskell
17
hackerank
1
TIL
609
White

checkraiser viết ngày 11/06/2018

Một template cho bạn nào chiến Haskell trên hackerank

-- https://www.hackerrank.com/challenges/30-review-loop/problem


solver =
    let isEven (n, _) = (n `mod` 2) == 0
        util1 x y = x ++ " " ++ y
        filter1 = (map snd) . filter isEven
        filter2 = (map snd) . filter (not . isEven)
    in  util1 <$> filter1 <*> filter2

process :: IO ()
process = getLine >>= putStrLn . solver . zip [0..]  

repeatIOAction :: IO () -> Int -> IO ()     -- Inputs: integer and IO. Outputs: IO 
repeatIOAction _ 0 = return ()              -- exit recursive loop here
repeatIOAction action  n  = do
    action                                  -- action to perform
    repeatIOAction action (n-1)             -- decrement n to make it recursive


main = getLine >>= return . (read :: String -> Int)  --  line transformation
               >>= repeatIOAction process            -- problem solver

Lưu ý:

  • Dùng getLine để đọc chuỗi từ stdin
  • Dùng putStr để viết kết quả ra stdout
  • Trau chuốt input trước khi đưa vào hàm thuật toán chính (solver), hàm này không có side effects
  • Hàm càng ở cao càng pure, hàm càng ở dưới càng sát với IO .
  • :set +s trong ghci để profile code với thời gian và bộ nhớ .

  • Haskell style guide

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

checkraiser

17 bài viết.
20 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
6 1
Tôi dự sẽ viết 1 loạt series về việc thiết kế 1 ứng dụng Rails như thế nào để nó có thể giúp bạn ăn ngon ngủ yên trong hằng năm trời: Khi mà việc t...
checkraiser viết gần 3 năm trước
6 1
White
5 10
Cũng ngót nghét đi làm hơn 6 năm rồi, mình chỉ thấy một điều khá "ngược đời": Các ông chủ , những người trả tiền cho bạn lại có tư duy lập trình ké...
checkraiser viết 11 tháng trước
5 10
White
3 3
This post is a sample chapter from my (Link) How to render a ReactJS component isomorphically ? The trick is in defaultProps and componentDidM...
checkraiser viết 3 năm trước
3 3
Bài viết liên quan
White
13 6
Người ta nói "nullable values" là cái "billion dollar mistake". Kể từ ALGOL, chúng ta không thể dùng nullable values/references như một value bình ...
Justin Le viết 3 năm trước
13 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
17 bài viết.
20 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!