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("")
}
}
```