30 lines
959 B
Scala
30 lines
959 B
Scala
object SubstitutionCipher extends App {
|
|
private val key = "]kYV}(!7P$n5_0i R:?jOWtF/=-pe'AD&@r6%ZXs\"v*N" + "[#wSl9zq2^+g;LoB`aGh{3.HIu4fbK)mU8|dMET><,Qc\\C1yxJ"
|
|
private val text =
|
|
""""It was still dark, in the early morning hours of the twenty-second of December
|
|
| 1946, on the second floor of the house at Schilderskade 66 in our town,
|
|
| when the hero of this story, Frits van Egters, awoke."""".stripMargin
|
|
|
|
val enc = encode(text)
|
|
println("Encoded: " + enc)
|
|
println("Decoded: " + decode(enc))
|
|
|
|
private def encode(s: String) = {
|
|
val sb = new StringBuilder(s.length)
|
|
s.map {
|
|
case c if (' ' to '~').contains(c) => sb.append(key(c.toInt - 32))
|
|
case _ =>
|
|
}
|
|
sb.toString
|
|
}
|
|
|
|
private def decode(s: String) = {
|
|
val sb = new StringBuilder(s.length)
|
|
s.map {
|
|
case c if (' ' to '~').contains(c) =>
|
|
sb.append((key.indexOf(c.toInt) + 32).toChar)
|
|
case _ =>
|
|
}
|
|
sb.toString
|
|
}
|
|
}
|