Skip to content

Instantly share code, notes, and snippets.

View PersistTheList8.kt
fun <E> dropWhile(list: List<E>, f: (E) -> Boolean): List<E> {
tailrec fun loop(remaining: List<E>): List<E> =
when(remaining) {
is Empty -> remaining
is Cons -> if (f(remaining.head)) loop(remaining.tail) else remaining
}
return loop(list)
}
View PersistTheList7.kt
tailrec fun <E> dropWhile(list: List<E>, f: (E) -> Boolean): List<E> =
when(list) {
Empty -> Empty
is Cons -> if (f(list.head)) dropWhile(list.tail, f) else list
}
View PersistTheList6.kt
fun <E> dropWhile(list: List<E>, f: (E) -> Boolean): List<E> =
when(list) {
Empty -> Empty
is Cons -> if (f(list.head)) dropWhile(list.tail, f) else list
}
fun main() {
val myList = Cons(1, Cons(2, Cons(3, Cons(4, Empty))))
dropWhile(myList) { it < 3 }.let(::println)
View PersistTheList5.kt
sealed class List<out E>
object Empty: List<Nothing>() {
override fun toString()= "[]"
}
data class Cons<E>(val head: E, val tail: List<E>): List<E>() {
override fun toString(): String = "$head :: $tail"
}
fun main() {
View PersistTheList4.kt
fun dropWhile(list: List<Int>, f: (Int) -> Boolean)
View PersistTheList3.kt
fun main(args: Array<String>) {
val mutableList: MutableList<Int> = mutableListOf(4, 5, 6)
val listNotToBeAmended: List<Int> = mutableList
println("listNotToBeAmended before add: $listNotToBeAmended")
mutableList.add(3)
println("listNotToBeAmended after add to underlying list: $listNotToBeAmended")
}
View PersistTheList2.kt
val mutableList: MutableList<Int> = mutableListOf(4, 5, 6)
View PersistTheList1.kt
val readOnlyList: List<Int> = listOf(1, 2, 3, 4)
View Anagram.fs
module Anagram
//Hackerrank problem
//Anagram
// Sid is obsessed with reading short stories. Being a CS student, he is doing some interesting frequency
// analysis with the books. He chooses strings and in such a way that .
// Your task is to help him find the minimum number of characters of the first string he needs to change to
// enable him to make it an anagram of the second string.
// Note: A word x is an anagram of another word y if we can produce y by rearranging the letters of x.
// Input Format
View PalindromeIndex.fs
module PalindromeIndex
//Hackertank problem
//Palindrome Index
// Given a string, , of lowercase letters, determine the index of the character whose removal will make a
// palindrome. If is already a palindrome or no such character exists, then print . There will always be a
// valid solution, and any correct answer is acceptable. For example, if "bcbc", we can either remove 'b'
// at index or 'c' at index .
// Input Format
// The first line contains an integer, , denoting the number of test cases.
// Each line of the subsequent lines (where ) describes a test case in the form of a single string,
You can’t perform that action at this time.