object PrimeNumberGame extends App { val n = io.StdIn.readInt() val primeNumbers = sieve(Seq.range(2, n), Seq.empty) println(vs(n, primeNumbers)) def sieve(numbers: Seq[Int], result: Seq[Int]): Seq[Int] = { if (numbers.length == 1) result :+ numbers.head else sieve(numbers.filter(_ % numbers.head != 0), result :+ numbers.head) } def vs(n: Int, primeNumbers: Seq[Int]): String = { if (n <= 3) "Lose" else { val nDash = n - primeNumbers.filter(n - _ >= 2).last val primeNumbersDash = primeNumbers.filter(nDash - _ >= 2) if (nDash <= 3) "Win" else { val nDashDash = nDash - primeNumbersDash.filter(nDash - _ >= 2).last val primeNumbersDashDash = primeNumbersDash.filter(nDashDash - _ >= 2) vs(nDashDash, primeNumbersDashDash) } } } }