From 5b97b789a509f6072ae26ec1c2aaaa446a64565d Mon Sep 17 00:00:00 2001 From: Christian Basler Date: Tue, 2 Jul 2024 23:11:53 +0200 Subject: [PATCH] Add minor improvements --- android/build.gradle.kts | 6 +++--- build.gradle.kts | 7 ++++--- commonUI/build.gradle.kts | 4 ++-- desktop/build.gradle.kts | 4 ++-- .../src/main/kotlin/ch/dissem/yaep/domain/clues.kt | 13 +++++++++++++ .../main/kotlin/ch/dissem/yaep/domain/generator.kt | 6 +++--- gradle/libs.versions.toml | 11 +++++------ 7 files changed, 32 insertions(+), 19 deletions(-) diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 80a2897..d3a73dd 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,7 +1,7 @@ plugins { - alias(libs.plugins.androidApplication) - alias(libs.plugins.jetbrainsKotlinCompose) - alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.compose) } android { diff --git a/build.gradle.kts b/build.gradle.kts index 2a064b8..30d0a31 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,9 +4,10 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { // this is necessary to avoid the plugins to be loaded multiple times // in each subproject's classloader - alias(libs.plugins.androidApplication) apply false - alias(libs.plugins.androidLibrary) apply false - alias(libs.plugins.jetbrainsCompose) apply false + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.compose) apply false + alias(libs.plugins.kotlin.compose) apply false alias(libs.plugins.kotlin.multiplatform) apply false alias(libs.plugins.kotlin.jvm) apply false } diff --git a/commonUI/build.gradle.kts b/commonUI/build.gradle.kts index b9774fd..e522b9d 100644 --- a/commonUI/build.gradle.kts +++ b/commonUI/build.gradle.kts @@ -1,7 +1,7 @@ plugins { alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.jetbrainsKotlinCompose) - alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.compose) } kotlin { diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index c701f3b..5579324 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -2,8 +2,8 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.jetbrainsKotlinCompose) - alias(libs.plugins.jetbrainsCompose) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.compose) } kotlin { diff --git a/domain/src/main/kotlin/ch/dissem/yaep/domain/clues.kt b/domain/src/main/kotlin/ch/dissem/yaep/domain/clues.kt index 8eb29a9..c807699 100644 --- a/domain/src/main/kotlin/ch/dissem/yaep/domain/clues.kt +++ b/domain/src/main/kotlin/ch/dissem/yaep/domain/clues.kt @@ -41,6 +41,8 @@ class NeighbourClue, B : ItemClass>(val a: Item, val b: I } return true } + + override fun toString() = "$aType is next to $bType" } class OrderClue, R : ItemClass>(val left: Item, val right: Item) : @@ -66,6 +68,8 @@ class OrderClue, R : ItemClass>(val left: Item, val right return rowLeft.indexOfFirst { it.mayBe(left) } >= rowRight.indexOfLast { it.mayBe(right) } } + + override fun toString() = "$leftType is left of $rightType" } class TripletClue, B : ItemClass, C : ItemClass>( @@ -152,6 +156,9 @@ class TripletClue, B : ItemClass, C : ItemClass>( } return true } + + override fun toString(): String = + "$bType is between the neighbours $aType and $cType to both sides" } class SameColumnClue, B : ItemClass>(val a: Item, val b: Item) : Clue() { @@ -184,13 +191,19 @@ class SameColumnClue, B : ItemClass>(val a: Item, val b: } return true } + + override fun toString(): String = "$aType and $bType are in the same column" } class PositionClue>(val item: Item, val index: Int) : Clue() { + val itemType = item.itemType + override fun isRuleViolated(grid: Grid): Boolean { val i = grid.indexOf(item.itemType) if (i != -1) return i != index return grid[item].mayBe(item) } + + override fun toString() = "$itemType is at position $index" } diff --git a/domain/src/main/kotlin/ch/dissem/yaep/domain/generator.kt b/domain/src/main/kotlin/ch/dissem/yaep/domain/generator.kt index 612ab84..05a7c86 100644 --- a/domain/src/main/kotlin/ch/dissem/yaep/domain/generator.kt +++ b/domain/src/main/kotlin/ch/dissem/yaep/domain/generator.kt @@ -19,7 +19,7 @@ fun generateGame(size: Int = 6): Game { // (There are a finite and in fact quite small number of possible clues: for example // if there are 5 houses, there are 5 possible clues of the form "Person A lives in // house B", 8 possible clues of the form "Person A lives next to house B", and so on.) - var clues = getAllClues(grid).toList() //.shuffled() + var clues = getAllClues(grid).sortedBy { it.toString() } //.shuffled() var i = 0 @@ -47,9 +47,9 @@ private fun solve( // First, set the positions of the items that are already known. clues.filterIsInstance>>().forEach { position -> - val row = grid[position.item.itemType.companion] + val row = grid[position.itemType.companion] val cell = row[position.index] - cell.options.retainAll { it == cell.selection } + cell.options.retainAll { it == position.item } row.cleanupOptions(cell) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2ae44df..bf45bba 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,6 @@ android-compileSdk = "34" android-minSdk = "24" android-targetSdk = "34" androidx-activityCompose = "1.9.0" -compose = "1.6.8" compose-plugin = "1.6.11" kotlin = "2.0.0" @@ -14,9 +13,9 @@ kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotl atrium = { module = "ch.tutteli.atrium:atrium-fluent", version = "1.2.0" } [plugins] -androidApplication = { id = "com.android.application", version.ref = "agp" } -androidLibrary = { id = "com.android.library", version.ref = "agp" } -jetbrainsKotlinCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } -jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } +android-application = { id = "com.android.application", version.ref = "agp" } +android-library = { id = "com.android.library", version.ref = "agp" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } \ No newline at end of file +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }