S-99: Ninety-Nine Scala Problems
P01 (*) Find the last element of a list.
P02 (*) Find the last but one element of a list.
P03 (*) Find the Kth element of a list.
P04 (*) Find the number of elements of a list.
P05 (*) Reverse a list.
P06 (*) Find out whether a list is a palindrome.
P07 (**) Flatten a nested list structure.
P08 (**) Eliminate consecutive duplicates of list elements.
P09 (**) Pack consecutive duplicates of list elements into sublists.
P10 (*) Run-length encoding of a list.
P11 (*) Modified run-length encoding.
P12 (**) Decode a run-length encoded list.
P13 (**) Run-length encoding of a list (direct solution).
P14 (*) Duplicate the elements of a list.
P15 (**) Duplicate the elements of a list a given number of times.
P16 (**) Drop every Nth element from a list.
P17 (*) Split a list into two parts.
P18 (**) Extract a slice from a list.
P19 (**) Rotate a list N places to the left.
P20 (*) Remove the Kth element from a list.
P21 (*) Insert an element at a given position into a list.
P22 (*) Create a list containing all integers within a given range.
P23 (**) Extract a given number of randomly selected elements from a list.
P24 (*) Lotto: Draw N different random numbers from the set 1..M.
P25 (*) Generate a random permutation of the elements of a list.
P26 (**) Generate the combinations of K distinct objects chosen from the N elements of a list.
P27 (**) Group the elements of a set into disjoint subsets.
P28 (**) Sorting a list of lists according to length of sublists.
P31 (**) Determine whether a given integer number is prime.
P32 (**) Determine the greatest common divisor of two positive integer numbers.
P33 (*) Determine whether two positive integer numbers are coprime.
P34 (**) Calculate Euler’s totient function ϕ(m).
P35 (**) Determine the prime factors of a given positive integer.
P36 (**) Determine the prime factors of a given positive integer (2).
P37 (**) Calculate Euler’s totient function ϕ(m) (improved).
P38 (*) Compare the two methods of calculating Euler’s totient function.
P39 (*) A list of prime numbers.
P40 (**) Goldbach's conjecture.
P41 (**) A list of Goldbach compositions.
P46 (**) Truth tables for logical expressions.
P47 (*) Truth tables for logical expressions (2).
P48 (**) Truth tables for logical expressions (3).
P49 (**) Gray code.
P50 (***) Huffman code.
P54 Omitted; our tree representation will only allow well-formed trees.
P55 (**) Construct completely balanced binary trees.
P56 (**) Symmetric binary trees.
P57 (**) Binary search trees (dictionaries).
P58 (**) Generate-and-test paradigm.
P59 (**) Construct height-balanced binary trees.
P60 (**) Construct height-balanced binary trees with a given number of nodes.
P61 (*) Count the leaves of a binary tree.
P61A (*) Collect the leaves of a binary tree in a list.
P62 (*) Collect the internal nodes of a binary tree in a list.
P62B (*) Collect the nodes at a given level in a list.
P63 (**) Construct a complete binary tree.
P64 (**) Layout a binary tree (1).
P65 (**) Layout a binary tree (2).
P66 (***) Layout a binary tree (3).
P67 (**) A string representation of binary trees.
P68 (**) Preorder and inorder sequences of binary trees.
P69 (**) Dotstring representation of binary trees.
P70B Omitted; we can only create well-formed trees.
P70C (*) Count the nodes of a multiway tree.
P70 (**) Tree construction from a node string.
P71 (*) Determine the internal path length of a tree.
P72 (*) Construct the postorder sequence of the tree nodes.
P73 (**) Lisp-like tree representation.
P80 (***) Conversions.
P81 (**) Path from one node to another one.
P82 (*) Cycle from a given node.
P83 (**) Construct all spanning trees.
P84 (**) Construct the minimal spanning tree.
P85 (**) Graph isomorphism.
P86 (**) Node degree and graph coloration.
P87 (**) Depth-first order graph traversal.
P88 (**) Connected components.
P89 (**) Bipartite graphs.
P90 (**) Eight queens problem
P91 (**) Knight’s tour.
P92 (***) Von Koch’s conjecture.
P93 (***) An arithmetic puzzle.
P94 (***) Generate K-regular simple graphs with N nodes.
P95 (**) English number words.
P96 (**) Syntax checker.
P97 (**) Sudoku.
P98 (***) Nonograms.
P99 (***) Crossword puzzle.
./.github/run.sh
To run all tests from a package:
./.github/run.sh <package prefix>
Released under Apache License v2.0.