AdventOfCode-2017/day15.kt

45 lines
1.1 KiB
Kotlin

import java.io.File
fun generateANext(current: Long): Long {
return (current * 16807) % 2147483647
}
fun generateBNext(current: Long): Long {
return (current * 48271) % 2147483647
}
fun generateACertain(current: Long): Long {
var toReturn = current
do {
toReturn = generateANext(toReturn)
} while (toReturn % 4L != 0L)
return toReturn
}
fun generateBCertain(current: Long): Long {
var toReturn = current
do {
toReturn = generateBNext(toReturn)
} while (toReturn % 8L != 0L)
return toReturn
}
fun main(args: Array<String>){
val initialAValue = 873L
val initialBValue = 583L
var i = 0
var count = 0
var currentA = initialAValue
var currentB = initialBValue
while(i < 5000000) {
currentA = generateACertain(currentA)
currentB = generateBCertain(currentB)
// println(currentA.toString(2))
// println(currentB.toString(2))
val firstA = currentA.toShort()
val firstB = currentB.toShort()
if(firstA == firstB) count++
i++
}
println(count)
}