Kotlin Programming 2022 Spring - Midterm Project Resources === ###### tags: `Kotlin 2022 Spring` `Kotlin` `2022 Spring` ## Random Number Generator Use `(0..9).random()` to get a random integer in $\{0, 1, \dots, 9\}$. Use `"+-*/".random()` to get a random arithmetic operator. ## Color Text ```kotlin= val ANSI_BLACK_BACKGROUND = "\u001B[40m" val ANSI_GREEN_BACKGROUND = "\u001B[42m" val ANSI_YELLOW_BACKGROUND = "\u001B[43m" val ANSI_RESET = "\u001B[0m" println("${ANSI_BLACK_BACKGROUND}我會變成黑底白字${ANSI_RESET}我是正常沒有顏色的字") println("${ANSI_GREEN_BACKGROUND}我會變成綠底白字${ANSI_RESET}我是正常沒有顏色的字") println("${ANSI_YELLOW_BACKGROUND}我會變成黃底白字${ANSI_RESET}我是正常沒有顏色的字") ``` ## Primel (Sample Code?) ```kotlin= fun blackBG(str: String): String { val ANSI_BLACK_BACKGROUND = "\u001B[40m" val ANSI_RESET = "\u001B[0m" return ANSI_BLACK_BACKGROUND + str + ANSI_RESET } fun greenBG(str: String): String { val ANSI_GREEN_BACKGROUND = "\u001B[42m" val ANSI_RESET = "\u001B[0m" return ANSI_GREEN_BACKGROUND + str + ANSI_RESET } fun yellowBG(str: String): String { val ANSI_YELLOW_BACKGROUND = "\u001B[43m" val ANSI_RESET = "\u001B[0m" return ANSI_YELLOW_BACKGROUND + str + ANSI_RESET } fun getAnswer(): String { while(true) { val cand = (10000..99999).random().toString() if (cand.toBigInteger().isProbablePrime(50)) return cand } } fun valid(guess: String): Boolean { try { if (!guess.toBigInteger().isProbablePrime(50)) { println("$guess is not a prime.") return false } } catch (e: Exception) { println("$guess is not a valid input.") return false } if (guess.length != 5) { println("$guess is not a 5-digit prime.") return false } return true } fun main() { val ans = getAnswer() // step 1: generate the answer while (true) { // main loop // step 2: read the guess from user val guess = readLine()!! // step 3: check if the guess valid if (!valid(guess)) continue // step 4: if guess = ans: end game! if (guess == ans) { println("Congrats! $guess is the answer!") break } // step 5: print hints, then go back step 2. for (i in 0 until 5) { if (ans[i] == guess[i]) { print(greenBG("${guess[i]}")) } else if (guess[i] in ans) { print(yellowBG("${guess[i]}")) } else { print(blackBG(guess[i].toString())) } } println("") } } ```