Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- val K = longArrayOf(
- 70320323L, 3776269545455558848L, 5106692820075657L, 6522059812712648770L, 5814642453354577965L,
- 1027020759832628608L, 9002849727976455L, 8212599733517910111L, 7793718349913016577L, 146085592623448519L,
- 1729710224984639780L, 5234468166645618029L, 11862640801499364L, 5269935331050000536L, 7476254520486161413L,
- 1338456232617455302L, 309144500929368792L, 7008551100276283009L, 7837871429671563846L, -6131181776293688662L,
- -6270531672383771958L, -5856180509835875478L, -6130900291653297986L, -6147800516097542406L, -6057436028180189526L,
- -5014008135579637206L, -3122143898056856918L, -6725515837430912349L, -4995994700588864982L, -4611322360682922326L,
- -6147507299173031286L, -6148861914678302038L, -6149653746249880662L, -6149055429270110198L, 768614334257080960L,
- 7555743857542605480L, 295736392978979136L, -6143285191705187736L, -5284258747153470806L, -6723968773031022934L,
- -6166929641649214806L, 3072194241450650174L, -6911573723524279675L, 5362285956288962644L, -9104384079812695591L,
- -2636248950953496918L, -8460897373749331327L, -6293753357426573606L, 11451476650L,
- )
- fun str(g: Int, b: Int, s: Int = 7): String {
- var c = 790929830514519072L
- return (0..8).joinToString("") { i ->
- val r = (0..g).fold(emptyList<Int>()) { l, m ->
- val d = (m / 2 + 1..g / 2).fold(b) { b, r -> b / (9 - r * 2) }
- l + ((0..8) - l)[listOf(d % (9 - m), K[m / 6 * 10 + m / 2 * (m / 2) + d / (21 + m / 6 * 11)]
- .shr(d % (21 + m / 6 * 11) * (3 - m / 6)).mod(9 - m + m % 5 / 3 * 2))[m % 2]]
- }.indexOf(i) % 2
- c -= (r - 1) / 2 * 2097152
- "${c.shr(r * 7 + s).mod(128).toChar()}${c.shr(42 + i % 3 * 7).mod(128).toChar()}"
- }
- }
- fun ask(r: Int): Int {
- println("Enter a number between 1 and ${9 - r}")
- return (0..8 - r).elementAtOrNull((readLine()!!.toIntOrNull() ?: 0) - 1) ?: ask(r)
- }
- fun main() {
- var b = 0
- for (r in 0..8) {
- if (r % 2 == 0) {
- print(str(r - 1, b, 28) + "Where do you wanna place the X? ")
- b = b * (9 - r) + ask(r)
- println(str(r, b))
- } else {
- println("Thinking...\n")
- Thread.sleep(750)
- println(str(r, b))
- if (r / 5L and K[19 - r % 7 * 3 + b / (r / 2 * 11 - 1)].shr(b % (r / 2 * 11 - 1) * (3 - r / 6) + r % 3) > 0) {
- println("You lost :)")
- return
- }
- println("Your turn!\n")
- Thread.sleep(750)
- }
- }
- println("Even :(")
- }
Advertisement
Add Comment
Please, Sign In to add comment