added counter

This commit is contained in:
Joachim 2018-08-24 08:06:02 +02:00
parent 3614a7d746
commit 2dc3fb3d6e
2 changed files with 70 additions and 15 deletions

View File

@ -12,7 +12,7 @@ enum class Move {
fun random(amount: Int): List<Move> {
val rgen = Random()
val result = mutableListOf<Move>()
for(i in 0 until amount) {
for (i in 0 until amount) {
result.add(Move.values()[rgen.nextInt(Move.values().size)])
}
return result
@ -36,22 +36,71 @@ fun l(colorIndex: Short): String {
}
fun main(args: Array<String>) {
val edgeModel = EdgeModel()
println(edgeModel)
println("edgeModel.whiteCrossSolved() = ${edgeModel.whiteCrossSolved()}")
// val edgeModel = EdgeModel()
// println(edgeModel)
// println("edgeModel.whiteCrossSolved() = ${edgeModel.whiteCrossSolved()}")
//
// val doMove = edgeModel.doMove(Move.D)
// println(doMove)
// println("doMove.whiteCrossSolved() = ${doMove.whiteCrossSolved()}")
//
// val message = EdgeModel().doMoves(Move.R, Move.U, Move.R_)
// println(message)
// println("message.whiteCrossSolved() = ${message.whiteCrossSolved()}")
//
// val doMoves = EdgeModel().doMoves(Move.random(15))
// println("random 15 moves = ${doMoves}")
// println("doMoves.whiteCrossSolved() = ${doMoves.whiteCrossSolved()}")
val doMove = edgeModel.doMove(Move.D)
println(doMove)
println("doMove.whiteCrossSolved() = ${doMove.whiteCrossSolved()}")
val message = EdgeModel().doMoves(Move.R, Move.U, Move.R_)
println(message)
println("message.whiteCrossSolved() = ${message.whiteCrossSolved()}")
// val begin = Instant.now()
// var i: Long = 0
// while (Duration.between(begin, Instant.now()) < Duration.ofMinutes(1)) {
// EdgeModel().doMoves(Move.random(15))
// i++
// }
// println("i = ${i}")
val doMoves = EdgeModel().doMoves(Move.random(15))
println("random 15 moves = ${doMoves}")
println("doMoves.whiteCrossSolved() = ${doMoves.whiteCrossSolved()}")
val counter = Counter(4, 3)
while (counter.increase()) {
println("counter = ${counter}")
}
// make a beginning model, then start doing crazy shit
val beginModel = EdgeModel(10)
}
/**
* Counter for X digits of a given base.
*/
class Counter(size: Int, val base: Int = 10) {
// start the counter at [0,0,...0]
private var counter: Array<Int> = Array(size) { 0 }
fun increase(): Boolean {
if (atMax()) {
return false
}
for (i in this.counter.size - 1 downTo 0) {
this.counter[i]++
if (this.counter[i] == base)
this.counter[i] = 0
else
break
}
return true
}
override fun toString(): String = this.counter.joinToString(".")
fun atMax(): Boolean {
return counter.all {
it == this.base - 1
}
}
}
const val GO = 3

View File

@ -37,7 +37,7 @@ class EdgeModel {
constructor() {
// do a sanity check
val entries = mutableListOf(F, B, L, U, D, R).flatMap { it.asList() }.groupBy { it }.entries
println("entries = ${entries}")
// println("entries = ${entries}")
if (entries.any {
it.value.size != 2
}) {
@ -53,6 +53,12 @@ class EdgeModel {
YELLOW, YELLOW, YELLOW, YELLOW)
}
constructor(randomMoves: Int) {
val edgeModel = EdgeModel()
val doMoves = edgeModel.doMoves(Move.random(randomMoves))
this.model = doMoves.model
}
constructor(model: ShortArray) {
this.model = model
}