object ShiftLettersProgram {
/*
string = "aaa"
After shifting the first 1 letter by 1 = "baa"
After shifting the first 2 letters by 2 = "dca"
After shifting the first 3 letters by 3 = "gfd"
result = "gfd"
*/
def shiftLetters(str: String, shifts: Array[Int]): String = {
val size = shifts.length
val arr = str.toCharArray
for (i <- (0 until size).reverse) {
if (i + 1 < size) {
shifts(i) += shifts(i + 1)
}
shifts(i) = shifts(i) % 26
var asciiCode = str.charAt(i).toInt - 'a'.toInt
asciiCode = asciiCode + shifts(i)
if (asciiCode > 25) {
asciiCode = asciiCode - 26
}
arr(i) = ('a'.toInt + asciiCode).toChar
}
arr.mkString
}
def main(args: Array[String]): Unit = {
var str = "aaa"
val shifts = Array(1, 2, 3)
str = shiftLetters(str, shifts)
println(str)
}
}
/*
run:
gfd
*/