Cubiq
engineering.mdImplementasi

Implementasi

Di dalam Cubiq

Setiap putaran kubus bergantung pada sistem buatan sendiri: model matematika, mesin 3D, dan pemecah yang mempertimbangkan tujuan pelajaran. Aplikasi Android ditulis dengan Kotlin dan Jetpack Compose.

Cuplikan proyek

baris sumber dan sumber daya teks
740 244
modul aplikasi
39
baris fisik Kotlin di luar pengujian
136 019
varian bahasa
42
deklarasi pengujiantest* / androidTest* · @Test
1 624

stack.kt

Stack Android modern

Cuplikan proyek
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 dan Material 3 menentukan komponen dan tema antarmuka. Adaptive menangani tata letak sesuai ukuran jendela, sedangkan Navigation 3 menangani navigasi dan pemulihan layar. Keadaan disampaikan melalui Coroutines dan Flow; Hilt menghubungkan modul aplikasi.

architecture.kt

Lapisan aplikasi yang independen

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%

Antarmuka, kontrak domain, dan data dipisahkan ke modul tersendiri; Hilt menghubungkan implementasinya. Compose menerima keadaan yang tidak dapat diubah dan peristiwa eksplisit. Room menyimpan riwayat dan kemajuan belajar, DataStore menyimpan pengaturan, dan Navigation 3 memulihkan tumpukan bagian.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX berdasarkan rekomendasi Android

Cubiq menerapkan pendekatan yang disorot Google dalam Apps Experience Program: Compose, tata letak adaptif, dan edge-to-edge.

Sesuai ukuran jendela
Pada layar lebar, teori dan latihan tampil berdampingan. Pada layar ringkas, konten dan navigasi menyesuaikan ruang yang tersedia; ukuran jendela menentukan tata letak.
Navigasi native
Edge-to-edge mempertimbangkan bilah sistem dan keyboard. Navigation 3 mempertahankan tumpukan bagian dan mendukung Predictive Back dengan pratinjau transisi kembali.
Keterbacaan dan aksesibilitas
Tema terang dan gelap, penskalaan teks, dan label semantik navigasi membantu penggunaan aplikasi dengan TalkBack dan keyboard. Saat ukuran huruf besar, nama bagian tetap tersedia bagi pembaca layar.
Rekomendasi Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometri yang mengikuti matematika

moving cubies
26
facelets
54
meshes
8
triangles
2 964

Shader GLSL menghitung material PBR, kekasaran, dan pencahayaan lingkungan. Model dan animasi selaras: mundur satu langkah menerapkan gerakan kebalikan, dan kamera mempertimbangkan ruang di antara panel.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Keadaan kubus / pemutaran rumus

Notasi bertipe diubah menjadi gerakan dan keadaan kubus yang konsisten. Antrean renderer menganimasikan putaran lapisan sambil mempertahankan identitas bagian dan facelet. Rumus diputar sebagai urutan gerakan nyata, dengan putar, jeda, dan pengaturan tempo.

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

Langkah maju menganimasikan gerakan baru; langkah mundur menerapkan gerakan kebalikan. Lompat posisi memulihkan adegan dasar dan urutan sasaran. Pembatalan menghentikan pengiriman gerakan berikutnya; putaran yang sudah dimulai diselesaikan. Siklus hidup EGL menangani pause/release; tanpa GL, jalur belajar tetap tersedia tanpa 3D.

solver.kt

Solusi sesuai tujuan pelajaran

  • BFS
  • Beam search
  • F2L

Pemecah buatan sendiri menyusun solusi dari rumus dan gerakan bantu pelajaran saat ini. SolverRequest mencakup keadaan kubus, bagian sasaran, sasaran terkunci, rumus yang diizinkan, kasus, dan orientasi. Perencana mengikuti urutan tujuan pembelajaran dan melindungi bagian yang sudah tersusun.

Perencanaan per fase memakai BFS berbatas, beam search, dan pengenalan kasus F2L. Validasi memeriksa komposisi bagian, pembalikan, puntiran, dan paritas permutasi. Kebijakan pencarian membatasi kedalaman dan lebar beam. Pergantian pelajaran membatalkan pencarian dan mencegah hasil usang.

Hasilnya PracticePlan: langkah, referensi rumus, lini masa tampilan, dan lini masa eksekusi. Penjelasan mempertahankan orientasi pembelajaran; mesin menerima urutan eksekusi lengkap. Hasil: plan / solved / invalid input / no constrained path.

  1. Keadaan kubus
  2. Validasi model
  3. Rencana belajar
  4. Latihan 3D

content.md

Konten melewati proses build

Teori disimpan dalam 756 dokumen Markdown, dan latihan ditentukan dalam 336 skenario yang dilokalkan. Gradle memvalidasi struktur terjemahan dan referensi ke 316 ilustrasi asli. Grafik disiapkan dengan Blender/Cycles; mesin Android memakai geometri prosedural terpisah.

workflow.md

Dokumentasi sebagai kode / alur kerja agen

AGENTS.md
48
README.md
16

Repositori disusun untuk pengembangan dengan agen: hierarki AGENTS.md menetapkan kepemilikan, batasan arsitektur, dan gerbang validasi; README.md menjelaskan kontrak modul, KDoc menjelaskan API dan invarian.

Kontrak arsitektur, desain, dan lokalisasi dikelola versinya bersama kode. PLAN.md mencatat lingkup dan serah terima; perubahan kontrak memperbarui dokumentasi pemiliknya. Pemeriksaan dan generasi melalui Gradle; CI membangun kedua varian toko.

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%
Kualitas dan metode penghitungan

Pengujian mencakup keadaan kubus yang mustahil, mempertahankan lapisan yang sudah tersusun, rencana belajar, pembatalan permintaan usang, pemulihan sesi, dan impor data. CI membangun kedua varian toko; pemeriksaan rilis meliputi R8, APK/AAB, checksum, dan penyelarasan pustaka native untuk halaman 16 KB.

Jumlah Kotlin menghitung baris fisik, termasuk komentar, baris kosong, buildSrc, dan kode benchmark, tanpa direktori pengujian. Jumlah pengujian berarti 1 343 deklarasi JVM dan 281 deklarasi Android, bukan eksekusi. Dokumen memuat teks fallback; adanya skenario tidak berarti setiap pelajaran memiliki latihan.

baselineprofile · @Test
3

Total teks menghitung baris fisik dalam berkas UTF-8 yang dilacak: sumber, pengujian, sumber daya XML/JSON, konten Markdown, lokalisasi, dokumentasi, alat build, dan sumber web. Komentar, baris kosong, dan salinan bahasa termasuk. Media, keluaran generasi/build, kode vendor, konfigurasi layanan, dan PLAN.md sementara dikecualikan. Ini volume masukan teks proyek, bukan LOC yang dapat dieksekusi.

Kenali Cubiq