Cubiq
engineering.mdImplementace

Implementace

Cubiq zevnitř

Za každým otočením kostky stojí vlastní systém: matematický model, 3D engine a řešič zohledňující cíle lekce. Aplikace pro Android používá Kotlin a Jetpack Compose.

Snímek projektu

řádků zdrojů a textových prostředků
740 244
modulů aplikace
39
fyzických řádků Kotlin mimo testy
136 019
jazykové varianty
42
deklarací testůtest* / androidTest* · @Test
1 624

stack.kt

Moderní Android stack

Snímek projektu
Kotlin2.4.21
Compose BOM2026.09.00
Material 31.5.0-beta01
Adaptive1.3.0
Navigation 31.2.0
AGP9.4.1
KSP2.3.12
Gradle9.7.0
  • Kotlin
  • Jetpack Compose
  • Material 3
  • Adaptive
  • Navigation 3

Jetpack Compose a Material 3 určují komponenty a témata rozhraní. Adaptive řeší rozložení podle velikosti okna a Navigation 3 navigaci a obnovu obrazovek. Stav přichází přes Coroutines a Flow; Hilt propojuje moduly aplikace.

architecture.kt

Nezávislé vrstvy aplikace

app01Hilt / DI
feature07Compose / ViewModel
  • onboarding
  • learning
  • lesson
  • practice
  • progress
  • settings
  • events
domain07contracts / use cases
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
data09repositories / storage
  • content
  • storage
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
core14UI kit / cube / solver
  • common
  • model
  • designsystem
  • uikit
  • navigation
  • analytics
  • crashlytics
  • ads
  • billing
  • push
  • hardware
  • cube
  • scrambleimage
  • solver
baselineprofile01startup / frame timing

feature → domain ← data

modulesΣ 39
  • app1
  • baselineprofile1
  • core14
  • data9
  • domain7
  • feature7
Kotlin · physical LOCΣ 136 019
feature
82 86360.9%
core
21 16715.6%
data
14 34110.5%
app
9 5147.0%
domain
6 7595.0%
buildSrc
9610.7%
baselineprofile
4140.3%

Rozhraní, doménové kontrakty a data jsou v oddělených modulech; Hilt propojuje implementace. Compose přijímá neměnný stav a explicitní události. Room ukládá historii a postup učení, DataStore nastavení a Navigation 3 obnovuje zásobníky sekcí.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX podle doporučení Androidu

Cubiq používá přístupy, které Google zdůrazňuje v Apps Experience Program: Compose, adaptivní rozložení a edge-to-edge.

Podle velikosti okna
Na široké obrazovce jsou teorie a praxe vedle sebe. Na kompaktní obrazovce se obsah a navigace přizpůsobují dostupnému prostoru; rozložení určuje velikost okna.
Nativní navigace
Edge-to-edge zohledňuje systémové lišty a klávesnici. Navigation 3 zachovává zásobníky sekcí a podporuje Predictive Back s náhledem přechodu zpět.
Čitelnost a přístupnost
Světlé a tmavé téma, škálování textu a sémantické popisky v navigaci pomáhají používat aplikaci s TalkBack a klávesnicí. Při velkém písmu zůstávají názvy sekcí dostupné čtečce obrazovky.
Doporučení Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometrie, která vychází z matematiky

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL shadery počítají materiály PBR, drsnost a osvětlení prostředím. Model a animace jsou sladěné: krok zpět provede inverzní tah a kamera zohledňuje volné místo mezi panely.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Stav kostky / přehrávání algoritmů

Typovaná notace se převádí na tahy a konzistentní stavy kostky. Fronta rendereru animuje otáčení vrstev a zachovává identity dílků a faceletů. Algoritmus se přehrává jako posloupnost skutečných tahů s přehráváním, pauzou a nastavením tempa.

  1. Notation
  2. Cube state
  3. Move queue
  4. OpenGL ES 3.0

Krok vpřed animuje nový tah; krok zpět použije inverzní tah. Přesun na pozici obnoví základní scénu a cílovou posloupnost. Zrušení zastaví vydávání dalších tahů; již zahájené otočení se dokončí. Životní cyklus EGL zpracovává pause/release; bez GL zůstává výuka dostupná bez 3D.

solver.kt

Řešení podle cílů lekce

  • BFS
  • Beam search
  • F2L

Vlastní řešič skládá řešení z algoritmů a pomocných tahů aktuální lekce. SolverRequest obsahuje stav kostky, cílové dílky, uzamčené cíle, povolené algoritmy, případy a orientaci. Plánovač dodržuje pořadí výukových cílů a chrání již složené dílky.

Plánování podle fáze používá omezené BFS, paprskové prohledávání a rozpoznávání případů F2L. Validace kontroluje složení dílků, překlopení, pootočení a paritu permutací. Politika hledání omezuje hloubku a šířku paprsku. Změna lekce zruší hledání a zabrání zastaralému výsledku.

Výsledkem je PracticePlan: kroky, odkazy na algoritmy, časová osa zobrazení a časová osa provádění. Vysvětlení zachovává výukovou orientaci; engine dostává úplnou posloupnost provádění. Výsledky: plan / solved / invalid input / no constrained path.

  1. Stav kostky
  2. Ověření modelu
  3. Výukový plán
  4. 3D cvičení

content.md

Obsah prochází sestavením

Teorie je uložena v 756 dokumentech Markdown a praxe je popsána v 336 lokalizovaných scénářích. Gradle ověřuje strukturu překladů a odkazy na 316 autorských ilustrací. Grafika byla připravena v Blender/Cycles; engine pro Android používá samostatnou procedurální geometrii.

workflow.md

Dokumentace jako kód / práce s agenty

AGENTS.md
48
README.md
16

Repozitář je uspořádán pro vývoj s agenty: hierarchie AGENTS.md určuje odpovědnosti, architektonická omezení a validační brány; README.md popisují kontrakty modulů, KDoc API a invarianty.

Kontrakty architektury, designu a lokalizace se verzují spolu s kódem. PLAN.md zaznamenává rozsah a předání práce; změny kontraktů aktualizují jejich příslušnou dokumentaci. Kontroly a generování probíhají přes Gradle; CI sestavuje obě varianty pro obchody.

physical text linesΣ 740 244
Resources / localization
399 56854.0%
Kotlin · non-test
136 01918.4%
Lesson Markdown
132 64217.9%
Kotlin · JVM tests
46 6456.3%
Kotlin · Android tests
13 6361.8%
Build tooling / web
8 9851.2%
Documentation
2 7490.4%
Kvalita a metodika počítání

Testy pokrývají nemožné stavy kostky, zachování složených vrstev, výukové plány, rušení zastaralých požadavků, obnovu relací a import dat. CI sestavuje obě varianty pro obchody; kontroly vydání zahrnují R8, APK/AAB, kontrolní součty a zarovnání nativních knihoven pro stránky 16 KB.

Objem Kotlin se počítá ve fyzických řádcích včetně komentářů, prázdných řádků, buildSrc a benchmarkového kódu, bez testovacích adresářů. Počet testů znamená 1 343 deklarací JVM a 281 deklarací Android, nikoli spuštění. Dokumenty zahrnují náhradní text; přítomnost scénáře neznamená cvičení v každé lekci.

baselineprofile · @Test
3

Celkový text počítá fyzické řádky verzovaných souborů UTF-8: zdrojů, testů, prostředků XML/JSON, obsahu Markdown, lokalizace, dokumentace, sestavovacích nástrojů a webových zdrojů. Zahrnuje komentáře, prázdné řádky a jazykové kopie. Vynechává média, generované a sestavené výstupy, kód dodavatelů, konfiguraci služeb a dočasný PLAN.md. Jde o objem textových vstupů projektu, ne spustitelné LOC.

Poznej Cubiq