markruff icon

function references

markruff | PRO | 03/17/24 12:13:33 PM UTC | 0 ⭐ | 12216 👁️ | Never ⏰ | []
Kotlin |

1.85 KB

|

None

|

0 👍

/

0 👎

fun fibonacci(n: Int): Int {
    var a = 1
    var b = 1
    for (i in 2 until n) {
        val temp = a + b
        a = b
        b = temp
    }
    return b
}
 
fun square(n: Int): Int = n * n
 
fun cube(n: Int): Int = n * n * n
 
fun collatzDepth(n: Int): Int {
    var current = n
    var depth = 1
    while (current != 1) {
        depth++
        current = if (current % 2 == 0) {
            current / 2
        } else {
            3 * current + 1
        }
    }
    return depth
}
 
data class MenuItem(val text: String, val function: (Int) -> Int)
 
object Menu {
    val items = mutableListOf<MenuItem>()
 
    init {
        items.add(MenuItem("Square", ::square))
        items.add(MenuItem("Cube", ::cube))
        items.add(MenuItem("Fibonacci", ::fibonacci))
        items.add(MenuItem("Collatz Depth", ::collatzDepth))
    }
}
 
fun main() {
    do {
        // Print the menu of functions as a numbered list
        Menu.items.forEachIndexed { index, menuItem ->
            println("${index + 1}. ${menuItem.text}")
        }
 
        println("Enter the number of the function to execute, or 0 to exit:")
        val inputFunction = readLine()?.toIntOrNull() ?: 0
 
        if (inputFunction == 0) break
 
        if (inputFunction !in 1..Menu.items.size) {
            println("Invalid selection. Please try again.")
            continue
        }
 
        println("Enter an integer argument for the function:")
        val inputArgument = readLine()?.toIntOrNull()
        if (inputArgument == null) {
            println("Invalid input. Please enter an integer.")
            continue
        }
 
        val selectedMenuItem = Menu.items[inputFunction - 1]
        val result = selectedMenuItem.function(inputArgument)
        println("Result: $result")
 
    } while (true)
 
    println("Exiting...")
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎