{"id":16972405,"url":"https://github.com/erayaydin/scala-99","last_synced_at":"2025-07-19T08:11:54.187Z","repository":{"id":239043413,"uuid":"798277720","full_name":"erayaydin/scala-99","owner":"erayaydin","description":"Scala 99 Problems and Solutions","archived":false,"fork":false,"pushed_at":"2024-05-15T17:40:01.000Z","size":47,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T15:14:37.794Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erayaydin.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-09T13:05:59.000Z","updated_at":"2024-05-15T17:40:05.000Z","dependencies_parsed_at":"2024-05-16T05:59:08.291Z","dependency_job_id":null,"html_url":"https://github.com/erayaydin/scala-99","commit_stats":null,"previous_names":["erayaydin/scala-99"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erayaydin%2Fscala-99","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erayaydin%2Fscala-99/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erayaydin%2Fscala-99/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erayaydin%2Fscala-99/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erayaydin","download_url":"https://codeload.github.com/erayaydin/scala-99/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244862618,"owners_count":20522830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T00:59:11.541Z","updated_at":"2025-03-21T20:25:39.536Z","avatar_url":"https://github.com/erayaydin.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scala-99 Problems\n\n## [P01: Find the last element of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P01.scala)\n\n```scala_worksheet\nscala\u003e last(List(1, 1, 2, 3, 5, 8))\nres0: Int = 8\n```\n\n## [P02: Find the last but one element of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P02.scala)\n\n```scala_worksheet\nscala\u003e penultimate(List(1, 1, 2, 3, 5, 8))\nres0: Int = 5\n```\n\n## [P03: Find the Kth element of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P03.scala)\n\n```scala_worksheet\nscala\u003e nth(2, List(1, 1, 2, 3, 5, 8))\nres0: Int = 2\n```\n\n## [P04: Find the number of elements of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P04.scala)\n\n```scala_worksheet\nscala\u003e length(List(1, 1, 2, 3, 5, 8))\nres0: Int = 6\n```\n\n## [P05: Reverse a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P05.scala)\n\n```scala_worksheet\nscala\u003e reverse(List(1, 1, 2, 3, 5, 8))\nres0: List[Int] = List(8, 5, 3, 2, 1, 1)\n```\n\n## [P06: Find out whether a list is a palindrome.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P06.scala)\n\n```scala_worksheet\nscala\u003e isPalindrome(List(1, 2, 3, 2, 1))\nres0: Boolean = true\n```\n\n## [P07: Flatten a nested list structure.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P07.scala)\n\n```scala_worksheet\nscala\u003e flatten(List(List(1, 1), 2, List(3, List(5, 8))))\nres0: List[Any] = List(1, 1, 2, 3, 5, 8)\n```\n\n## [P08: Eliminate consecutive duplicates of list elements.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P08.scala)\n\n```scala_worksheet\nscala\u003e compress(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e))\nres0: List[Symbol] = List('a, 'b, 'c, 'a, 'd, 'e)\n```\n\n## [P09: Pack consecutive duplicates of list elements into sub lists.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P09.scala)\n\n```scala_worksheet\nscala\u003e pack(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e))\nres0: List[List[Symbol]] = List(List('a, 'a, 'a, 'a), List('b), List('c, 'c), List('a, 'a), List('d), List('e, 'e, 'e, 'e))\n```\n\n## [P10: Run-length encoding of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P10.scala)\n\n```scala_worksheet\nscala\u003e encode(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e))\nres0: List[(Int, Symbol)] = List((4,'a), (1,'b), (2,'c), (2,'a), (1,'d), (4,'e))\n```\n\n## [P11: Modified run-length encoding.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P11.scala)\n\n```scala_worksheet\nscala\u003e encodeModified(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e))\nres0: List[Any] = List((4,'a), 'b, (2,'c), (2,'a), 'd, (4,'e))\n```\n\n## [P12: Decode a run-length encoded list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P12.scala)\n\n```scala_worksheet\nscala\u003e decode(List((4, 'a), (1, 'b), (2, 'c), (2, 'a), (1, 'd), (4, 'e)))\nres0: List[Symbol] = List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e)\n```\n\n## [P13: Run-length encoding of a list (direct solution).](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P13.scala)\n\n```scala_worksheet\nscala\u003e encodeDirect(List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e))\nres0: List[(Int, Symbol)] = List((4,'a), (1,'b), (2,'c), (2,'a), (1,'d), (4,'e))\n```\n\n## [P14: Duplicate the elements of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P14.scala)\n\n```scala_worksheet\nscala\u003e duplicate(List('a, 'b, 'c, 'c, 'd))\nres0: List[Symbol] = List('a, 'a, 'b, 'b, 'c, 'c, 'c, 'c, 'd, 'd)\n```\n\n## [P15: Duplicate the elements of a list a given number of times.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P15.scala)\n\n```scala_worksheet\nscala\u003e duplicateN(3, List('a, 'b, 'c, 'c, 'd))\nres0: List[Symbol] = List('a, 'a, 'a, 'b, 'b, 'b, 'c, 'c, 'c, 'c, 'c, 'c, 'd, 'd, 'd)\n```\n\n## [P16: Drop every Nth element from a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P16.scala)\n\n```scala_worksheet\nscala\u003e drop(3, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\nres0: List[Symbol] = List('a, 'b, 'd, 'e, 'g, 'h, 'j, 'k)\n```\n\n## [P17: Split a list into two parts.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P17.scala)\n\n```scala_worksheet\nscala\u003e split(3, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\nres0: (List[Symbol], List[Symbol]) = (List('a, 'b, 'c),List('d, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\n```\n\n## [P18: Extract a slice from a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P18.scala)\n\n```scala_worksheet\nscala\u003e slice(3, 7, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\nres0: List[Symbol] = List('d, 'e, 'f, 'g)\n```\n\n## [P19: Rotate a list N places to the left.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P19.scala)\n\n```scala_worksheet\nscala\u003e rotate(3, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\nres0: List[Symbol] = List('d, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'a, 'b, 'c)\n```\n\n```scala_worksheet\nscala\u003e rotate(-2, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))\nres0: List[Symbol] = List('j, 'k, 'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i)\n```\n\n## [P20: Remove the Kth element from a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P20.scala)\n\n```scala_worksheet\nscala\u003e removeAt(1, List('a, 'b, 'c, 'd))\nres0: (List[Symbol], Symbol) = (List('a, 'c, 'd),'b)\n```\n\n## [P21: Insert an element at a given position into a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P21.scala)\n\n```scala_worksheet\nscala\u003e insertAt('new, 1, List('a, 'b, 'c, 'd))\nres0: List[Symbol] = List('a, 'new, 'b, 'c, 'd)\n```\n\n## [P22: Create a list containing all integers within a given range.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P22.scala)\n\n```scala_worksheet\nscala\u003e range(4, 9)\nres0: List[Int] = List(4, 5, 6, 7, 8, 9)\n```\n\n## [P23: Extract a given number of randomly selected elements from a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P23.scala)\n\n```scala_worksheet\nscala\u003e randomSelect(3, List('a, 'b, 'c, 'd, 'f, 'g, 'h))\nres0: List[Symbol] = List('e, 'd, 'a)\n```\n\n## [P24: Lotto: Draw N different random numbers from the set 1..M.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P24.scala)\n\n```scala_worksheet\nscala\u003e lotto(6, 49)\nres0: List[Int] = List(23, 1, 17, 33, 21, 37)\n```\n\n## [P25: Generate a random permutation of the elements of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P25.scala)\n\n```scala_worksheet\nscala\u003e randomPermute(List('a, 'b, 'c, 'd, 'e, 'f))\nres0: List[Symbol] = List('b, 'a, 'd, 'c, 'e, 'f)\n```\n\n## [P26: Generate the combinations of K distinct objects chosen from the N elements of a list.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P26.scala)\n\n```scala_worksheet\nscala\u003e combinations(3, List('a, 'b, 'c, 'd, 'e, 'f))\nres0: List[List[Symbol]] = List(List('a, 'b, 'c), List('a, 'b, 'd), List('a, 'b, 'e), ...\n```\n\n## [P27: Group the elements of a set into disjoint subsets.](https://github.com/erayaydin/scala-99/blob/main/src/main/scala/P27.scala)\n\n```scala_worksheet\nscala\u003e group3(List(\"Aldo\", \"Beat\", \"Carla\", \"David\", \"Evi\", \"Flip\", \"Gary\", \"Hugo\", \"Ida\"))\nres0: List[List[List[String]]] = List(List(List(Aldo, Beat), List(Carla, David, Evi), List(Flip, Gary, Hugo, Ida)), ...\n```\n\n```scala_worksheet\nscala\u003e group(List(2, 2, 5), List(\"Aldo\", \"Beat\", \"Carla\", \"David\", \"Evi\", \"Flip\", \"Gary\", \"Hugo\", \"Ida\"))\nres0: List[List[List[String]]] = List(List(List(Aldo, Beat), List(Carla, David), List(Evi, Flip, Gary, Hugo, Ida)), ...\n```\n\n---\n\n[Original List](https://aperiodic.net/pip/scala/s-99/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferayaydin%2Fscala-99","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferayaydin%2Fscala-99","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferayaydin%2Fscala-99/lists"}