Practice solving the famous 99 Haskell problems! These problems are Haskell translations of Ninety-Nine Lisp Problems, which are themselves translations of Ninety-Nine Prolog Problems.
- 1. Find the last element of a list
- 2. Find the last but one element of a list
- 3. Find the K'th element of a list
- 4. Find the number of elements of a list
- 5. Reverse a list
- 6. Find out whether a list is a palindrome
- 7. Flatten a nested list structure
- 8. Eliminate consecutive duplicates of list elements
- 9. Pack consecutive duplicates of list elements into sublists
- 10. Run-length encoding of a list
- 11. Modified run-length encoding
- 12. Decode a run-length encoded list
- 13. Run-length encoding of a list (direct solution)
- 14. Duplicate the elements of a list
- 15. Replicate the elements of a list a given number of times
- 16. Drop every N'th element from a list
- 17. Split a list into two parts
- 18. Extract a slice from a list
- 19. Rotate a list N places to the left
- 20. Remove the K'th element from a list
- 21. Insert an element at a given position into a list
- 22. Create a list containing all integers within a given range
- 23. Extract a given number of randomly selected elements from a list
- 24. Lotto: Draw N different random numbers from the set 1..M
- 25. Generate a random permutation of the elements of a list
- 26. Generate the combinations of K distinct objects chosen from the N elements of a list
- 27. Group the elements of a set into disjoint subsets
- 28. Sorting a list of lists according to length of sublists
- 31. Determine whether a given integer number is prime
- 32. Determine the greatest common divisor of two positive integer numbers
- 33. Determine whether two positive integer numbers are coprime
- 34. Calculate Euler's totient function φ(m)
- 35. Determine the prime factors of a given positive integer
- 36. Determine the prime factors of a given positive integer (2)
- 37. Calculate Euler's totient function φ(m) (improved)
- 38. Compare the two methods of calculating Euler's totient function
- 39. A list of prime numbers
- 40. Goldbach's conjecture
- 41. A list of Goldbach compositions
- 46. Truth tables for logical expressions
- 47. Truth tables for logical expressions (2)
- 48. Truth tables for logical expressions (3)
- 49. Gray codes
- 50. Huffman codes
- 54A. Check whether a given term represents a binary tree
- 55. Construct completely balanced binary trees
- 56. Symmetric binary trees
- 57. Binary search trees (dictionaries)
- 58. Generate-and-test paradigm
- 59. Construct height-balanced binary trees
- 60. Construct height-balanced binary trees with a given number of nodes
- 61. Count the leaves of a binary tree
- 62. Collect the leaves of a binary tree in a list
- 63. Collect the internal nodes of a binary tree in a list
- 64. Draw a binary tree
- 65. Layout a binary tree (1)
- 66. Layout a binary tree (2)
- 67. Layout a binary tree (3)
- 68. Preorder and inorder sequences of binary trees
- 69. Dotstring representation of binary trees
- 70B. Check whether a given term represents a multiway tree
- 71. Determine the internal path length of a tree
- 72. Construct the bottom-up order sequence of the tree nodes
- 73. Lisp-like tree representation
- 80. Conversions
- 81. Path from one node to another one
- 82. Cycle from a given node
- 83. Construct all spanning trees
- 84. Construct the minimal spanning tree
- 85. Graph isomorphism
- 86. Node degree and graph coloring
- 87. Depth-first graph traversal
- 88. Connected components
- 89. Bipartite graphs
- 90. Eight queens problem
- 91. Knight's tour
- 92. Von Koch's conjecture
- 93. An arithmetic puzzle
- 94. Generate K-regular simple graphs with N nodes
- 95. English number words
- 96. Syntax checker
- 97. Sudoku
- 98. Nonograms
- 99. Crossword puzzle