Skip to content

Instantly share code, notes, and snippets.

@cyrilnoah1
Last active November 28, 2019 03:27
Show Gist options
  • Save cyrilnoah1/cb7275096ef79c8c956e8bc3bbdaea5a to your computer and use it in GitHub Desktop.
Save cyrilnoah1/cb7275096ef79c8c956e8bc3bbdaea5a to your computer and use it in GitHub Desktop.
Maximum and minimum sums from two numbers with digit replacements
import kotlin.system.*
import kotlin.contracts.*
import java.util.*
fun main() {
fun printMinAndMax(x1: Int, x2: Int, maxDigit: Int, minDigit: Int){
val s1 = x1.toString()
val s2 = x2.toString()
if(minDigit >= maxDigit){
println("minDigit cannot be grater than or equal to maxDigit.")
return
}
val maxCA = maxDigit.toString().toCharArray()
val minCA = minDigit.toString().toCharArray()
if(minCA.size > 1 || maxCA.size > 1){
println("Please provide single digit values for maxDigit and minDigit.")
return
}
val minC = minCA[0]
val maxC = maxCA[0]
if((!s1.contains(minC) && !s1.contains(maxC)) || (!s2.contains(minC) && !s2.contains(maxC))) {
println("Provided numbers do not contain $minC or ${maxC}")
return
}
fun printMin(){
val c1 = s1.toCharArray()
val c2 = s2.toCharArray()
for(i in 0 until c1.size){
if(c1[i] == maxC){
c1[i] = minC
}
}
for(i in 0 until c2.size){
if(c2[i] == maxC){
c2[i] = minC
}
}
println("Min sum: ${String(c1).toInt() + String(c2).toInt()}")
}
fun printMax(){
val c1 = s1.toCharArray()
val c2 = s2.toCharArray()
for(i in 0 until c1.size){
if(c1[i] == minC){
c1[i] = maxC
}
}
for(i in 0 until c2.size){
if(c2[i] == minC){
c2[i] = maxC
}
}
println("Max sum: ${String(c1).toInt() + String(c2).toInt()}")
}
printMin()
printMax()
}
printMinAndMax(745, 777, 7, 5)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment