├── .nvmrc ├── pages ├── en │ ├── tutorial │ │ ├── ll.module.css │ │ └── _meta.tsx │ ├── improvement-guide │ │ ├── _meta.tsx │ │ ├── ll │ │ │ ├── _meta.tsx │ │ │ ├── zbll-algs.mdx │ │ │ ├── zbll-recog.mdx │ │ │ ├── 2lll.mdx │ │ │ └── zbll-practice.mdx │ │ ├── zzf2l │ │ │ └── _meta.tsx │ │ ├── eocross │ │ │ └── _meta.tsx │ │ ├── ll.mdx │ │ ├── eocross.mdx │ │ └── zzf2l.mdx │ ├── blog.mdx │ ├── _meta.tsx │ ├── blog │ │ ├── _meta.tsx │ │ ├── yoruba-6.93-zzwr.mdx │ │ ├── yoruba-6.51-zzwr.mdx │ │ └── zz-example-solve-library.mdx │ ├── improvement-guide.mdx │ ├── example-solves │ │ ├── jouda-11.26-oh-ao5.mdx │ │ ├── gen-8.99-ao5.mdx │ │ ├── yoruba-5.86-ao5.mdx │ │ ├── gen-11.68-oh-ao5.mdx │ │ ├── yoruba-7.19-ao50.mdx │ │ ├── yoruba-6.65-ao25.mdx │ │ ├── _meta.tsx │ │ ├── yoruba-6.51-ao5.mdx │ │ ├── yoruba-advanced-example-25.mdx │ │ ├── rouxzzcfop-7.64-ao12.mdx │ │ ├── yoruba-6.93-ao5.mdx │ │ ├── luna-7.73-ao12.mdx │ │ └── luna-9.00-ao25.mdx │ ├── tutorial.mdx │ └── about.mdx ├── fr │ ├── tutorial │ │ ├── ll.module.css │ │ └── _meta.tsx │ ├── improvement-guide │ │ ├── _meta.tsx │ │ ├── ll │ │ │ ├── _meta.tsx │ │ │ ├── zbll-algs.mdx │ │ │ ├── zbll-recog.mdx │ │ │ ├── 2lll.mdx │ │ │ └── zbll-practice.mdx │ │ ├── zzf2l │ │ │ ├── _meta.tsx │ │ │ └── pair-choice.mdx │ │ ├── eocross │ │ │ └── _meta.tsx │ │ ├── ll.mdx │ │ ├── eocross.mdx │ │ └── zzf2l.mdx │ ├── blog.mdx │ ├── blog │ │ ├── _meta.tsx │ │ └── zz-example-solve-library.mdx │ ├── _meta.tsx │ ├── improvement-guide.mdx │ ├── example-solves │ │ ├── _meta.tsx │ │ ├── jouda-11.26-oh-ao5.mdx │ │ ├── gen-8.99-ao5.mdx │ │ ├── yoruba-5.86-ao5.mdx │ │ ├── gen-11.68-oh-ao5.mdx │ │ ├── yoruba-7.19-ao50.mdx │ │ ├── yoruba-6.65-ao25.mdx │ │ ├── yoruba-advanced-example-25.mdx │ │ ├── rouxzzcfop-7.64-ao12.mdx │ │ └── luna-9.00-ao25.mdx │ ├── tutorial.mdx │ ├── about.mdx │ └── example-solves.mdx ├── he │ ├── tutorial │ │ ├── ll.module.css │ │ └── _meta.tsx │ ├── improvement-guide │ │ ├── _meta.tsx │ │ ├── ll │ │ │ ├── _meta.tsx │ │ │ ├── zbll-algs.mdx │ │ │ ├── zbll-recog.mdx │ │ │ ├── 2lll.mdx │ │ │ └── zbll-practice.mdx │ │ ├── zzf2l │ │ │ ├── _meta.tsx │ │ │ └── pair-choice.mdx │ │ ├── eocross │ │ │ └── _meta.tsx │ │ ├── ll.mdx │ │ ├── eocross.mdx │ │ └── zzf2l.mdx │ ├── blog.mdx │ ├── blog │ │ ├── _meta.tsx │ │ └── zz-example-solve-library.mdx │ ├── _meta.tsx │ ├── improvement-guide.mdx │ ├── example-solves │ │ ├── _meta.tsx │ │ ├── jouda-11.26-oh-ao5.mdx │ │ ├── gen-8.99-ao5.mdx │ │ ├── yoruba-5.86-ao5.mdx │ │ ├── gen-11.68-oh-ao5.mdx │ │ ├── yoruba-7.19-ao50.mdx │ │ ├── yoruba-6.65-ao25.mdx │ │ ├── yoruba-advanced-example-25.mdx │ │ ├── rouxzzcfop-7.64-ao12.mdx │ │ └── luna-9.00-ao25.mdx │ ├── tutorial.mdx │ ├── about.mdx │ └── example-solves.mdx ├── zh │ ├── tutorial │ │ ├── ll.module.css │ │ └── _meta.tsx │ ├── improvement-guide │ │ ├── _meta.tsx │ │ ├── ll │ │ │ ├── _meta.tsx │ │ │ ├── zbll-algs.mdx │ │ │ ├── zbll-recog.mdx │ │ │ ├── 2lll.mdx │ │ │ └── zbll-practice.mdx │ │ ├── zzf2l │ │ │ ├── _meta.tsx │ │ │ └── pair-choice.mdx │ │ ├── eocross │ │ │ └── _meta.tsx │ │ ├── ll.mdx │ │ ├── eocross.mdx │ │ └── zzf2l.mdx │ ├── blog.mdx │ ├── blog │ │ ├── _meta.tsx │ │ └── zz-example-solve-library.mdx │ ├── _meta.tsx │ ├── improvement-guide.mdx │ ├── example-solves │ │ ├── _meta.tsx │ │ ├── jouda-11.26-oh-ao5.mdx │ │ ├── gen-8.99-ao5.mdx │ │ ├── yoruba-5.86-ao5.mdx │ │ ├── gen-11.68-oh-ao5.mdx │ │ ├── yoruba-7.19-ao50.mdx │ │ ├── yoruba-6.65-ao25.mdx │ │ ├── yoruba-advanced-example-25.mdx │ │ ├── rouxzzcfop-7.64-ao12.mdx │ │ └── luna-9.00-ao25.mdx │ ├── tutorial.mdx │ ├── about.mdx │ └── example-solves.mdx ├── styles.css └── _app.tsx ├── public ├── favicon.png ├── assets │ ├── FR-edge.png │ ├── minus-2.mp4 │ ├── minus-4.mp4 │ ├── minus-4.png │ ├── orbits.png │ ├── pets │ │ ├── io.jpg │ │ ├── eva.jpg │ │ ├── finn.jpg │ │ ├── gao.jpg │ │ ├── muoi.jpg │ │ ├── artemis.jpg │ │ ├── cosmo.jpg │ │ ├── fufreda.jpg │ │ ├── harley.jpg │ │ ├── spumoni.jpg │ │ └── sir_harold_iii.jpg │ ├── plus-2.mp4 │ ├── plus-2.png │ ├── plus-2-after.png │ ├── deduction-easy.png │ ├── deduction-hard.png │ ├── eo-example-1-1.png │ ├── eo-example-1-2.png │ ├── eo-example-1-3.png │ ├── eo-example-1-4.png │ ├── minus-4-after.png │ ├── deduction-medium.png │ ├── eo-example-1-5-1.png │ ├── eo-example-1-5-2.mp4 │ ├── eo-example-1-5-2.png │ ├── eo-example-1-5-3.mp4 │ ├── eo-example-1-5-3.png │ ├── eo-example-1-5-4.mp4 │ ├── eo-example-1-5-4.png │ ├── deduction-easy-hint.png │ ├── deduction-example-1.png │ ├── deduction-example-2.png │ ├── deduction-hard-hint.png │ └── deduction-medium-hint.png └── robots.txt ├── translations ├── types.ts ├── useTranslation.ts ├── ReconViewer.tsx └── ReconCollection.tsx ├── .gitignore ├── components ├── PetGallery.module.css ├── ReconCollection │ ├── index.ts │ └── ReconCollection.module.css ├── YouTubeEmbed.module.css ├── ReconViewer.module.css ├── CubeMp4Embed.module.css ├── YouTubeEmbed.tsx ├── CubeMp4Embed.tsx ├── Blog.tsx ├── AlgSheet.module.css └── AlgSheet.tsx ├── next-env.d.ts ├── vercel.json ├── next.config.ts ├── reconstructions ├── types.ts ├── en │ ├── yoruba-5.86-ao5.ts │ ├── gen-11.68-oh-ao5.ts │ ├── yoruba-6.93-ao5.ts │ ├── jouda-11.26-oh-ao5.ts │ └── gen-8.99-ao5.ts ├── fr │ ├── yoruba-5.86-ao5.ts │ ├── gen-11.68-oh-ao5.ts │ ├── jouda-11.26-oh-ao5.ts │ └── gen-8.99-ao5.ts ├── he │ ├── yoruba-5.86-ao5.ts │ ├── gen-11.68-oh-ao5.ts │ ├── jouda-11.26-oh-ao5.ts │ └── gen-8.99-ao5.ts └── zh │ ├── yoruba-5.86-ao5.ts │ ├── gen-11.68-oh-ao5.ts │ ├── jouda-11.26-oh-ao5.ts │ └── gen-8.99-ao5.ts ├── algs ├── CP.ts ├── types.ts ├── EPLL.ts └── OCLL.ts ├── middleware.ts ├── types.ts ├── tsconfig.json ├── .devcontainer └── devcontainer.json ├── package.json ├── LICENSE ├── LICENSE-ai-robots-txt ├── README.md ├── TODOS.md └── lib ├── index.ts └── simplifyRotations.ts /.nvmrc: -------------------------------------------------------------------------------- 1 | v22.5.1 2 | -------------------------------------------------------------------------------- /pages/en/tutorial/ll.module.css: -------------------------------------------------------------------------------- 1 | .headlights { 2 | width: 200px; 3 | height: 200px; 4 | } 5 | -------------------------------------------------------------------------------- /pages/fr/tutorial/ll.module.css: -------------------------------------------------------------------------------- 1 | .headlights { 2 | width: 200px; 3 | height: 200px; 4 | } 5 | -------------------------------------------------------------------------------- /pages/he/tutorial/ll.module.css: -------------------------------------------------------------------------------- 1 | .headlights { 2 | width: 200px; 3 | height: 200px; 4 | } 5 | -------------------------------------------------------------------------------- /pages/zh/tutorial/ll.module.css: -------------------------------------------------------------------------------- 1 | .headlights { 2 | width: 200px; 3 | height: 200px; 4 | } 5 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/favicon.png -------------------------------------------------------------------------------- /public/assets/FR-edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/FR-edge.png -------------------------------------------------------------------------------- /public/assets/minus-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/minus-2.mp4 -------------------------------------------------------------------------------- /public/assets/minus-4.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/minus-4.mp4 -------------------------------------------------------------------------------- /public/assets/minus-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/minus-4.png -------------------------------------------------------------------------------- /public/assets/orbits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/orbits.png -------------------------------------------------------------------------------- /public/assets/pets/io.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/io.jpg -------------------------------------------------------------------------------- /public/assets/plus-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/plus-2.mp4 -------------------------------------------------------------------------------- /public/assets/plus-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/plus-2.png -------------------------------------------------------------------------------- /public/assets/pets/eva.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/eva.jpg -------------------------------------------------------------------------------- /public/assets/pets/finn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/finn.jpg -------------------------------------------------------------------------------- /public/assets/pets/gao.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/gao.jpg -------------------------------------------------------------------------------- /public/assets/pets/muoi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/muoi.jpg -------------------------------------------------------------------------------- /public/assets/pets/artemis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/artemis.jpg -------------------------------------------------------------------------------- /public/assets/pets/cosmo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/cosmo.jpg -------------------------------------------------------------------------------- /public/assets/pets/fufreda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/fufreda.jpg -------------------------------------------------------------------------------- /public/assets/pets/harley.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/harley.jpg -------------------------------------------------------------------------------- /public/assets/pets/spumoni.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/spumoni.jpg -------------------------------------------------------------------------------- /public/assets/plus-2-after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/plus-2-after.png -------------------------------------------------------------------------------- /public/assets/deduction-easy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-easy.png -------------------------------------------------------------------------------- /public/assets/deduction-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-hard.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-1.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-2.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-3.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-4.png -------------------------------------------------------------------------------- /public/assets/minus-4-after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/minus-4-after.png -------------------------------------------------------------------------------- /public/assets/deduction-medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-medium.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-1.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-2.mp4 -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-2.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-3.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-3.mp4 -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-3.png -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-4.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-4.mp4 -------------------------------------------------------------------------------- /public/assets/eo-example-1-5-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/eo-example-1-5-4.png -------------------------------------------------------------------------------- /public/assets/deduction-easy-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-easy-hint.png -------------------------------------------------------------------------------- /public/assets/deduction-example-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-example-1.png -------------------------------------------------------------------------------- /public/assets/deduction-example-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-example-2.png -------------------------------------------------------------------------------- /public/assets/deduction-hard-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-hard-hint.png -------------------------------------------------------------------------------- /public/assets/pets/sir_harold_iii.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/pets/sir_harold_iii.jpg -------------------------------------------------------------------------------- /translations/types.ts: -------------------------------------------------------------------------------- 1 | export type Language = "en" | "fr" | "he" | "zh" 2 | 3 | export type Translation = { [key in Language]: T } 4 | -------------------------------------------------------------------------------- /public/assets/deduction-medium-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crystalcuber/zz-method-docs/HEAD/public/assets/deduction-medium-hint.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .next 2 | node_modules 3 | 4 | # dev environment 5 | .vscode 6 | .DS_Store 7 | 8 | # produced by tsc 9 | tsconfig.tsbuildinfo 10 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross": "Improve EOCross", 3 | "zzf2l": "Improve ZZF2L", 4 | "ll": "Improve Last Layer" 5 | } 6 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross": "Improve EOCross", 3 | "zzf2l": "Improve ZZF2L", 4 | "ll": "Improve Last Layer" 5 | } 6 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross": "Improve EOCross", 3 | "zzf2l": "Improve ZZF2L", 4 | "ll": "Improve Last Layer" 5 | } 6 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross": "Improve EOCross", 3 | "zzf2l": "Improve ZZF2L", 4 | "ll": "Improve Last Layer" 5 | } 6 | -------------------------------------------------------------------------------- /pages/en/blog.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Blog 3 | description: A helpful blog written by ZZ solvers. 4 | --- 5 | 6 | import Blog from "components/Blog"; 7 | 8 | 9 | -------------------------------------------------------------------------------- /pages/fr/blog.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Blog 3 | description: A helpful blog written by ZZ solvers. 4 | --- 5 | 6 | import Blog from "components/Blog"; 7 | 8 | 9 | -------------------------------------------------------------------------------- /pages/he/blog.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Blog 3 | description: A helpful blog written by ZZ solvers. 4 | --- 5 | 6 | import Blog from "components/Blog"; 7 | 8 | 9 | -------------------------------------------------------------------------------- /pages/zh/blog.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Blog 3 | description: A helpful blog written by ZZ solvers. 4 | --- 5 | 6 | import Blog from "components/Blog"; 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/PetGallery.module.css: -------------------------------------------------------------------------------- 1 | .petGrid { 2 | display: grid; 3 | gap: 16px; 4 | margin-top: 16px; 5 | grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); 6 | } 7 | -------------------------------------------------------------------------------- /components/ReconCollection/index.ts: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | 3 | export const ReconCollection = dynamic(() => import("./ReconCollection"), { 4 | ssr: false, 5 | }); 6 | -------------------------------------------------------------------------------- /pages/en/tutorial/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eo": "Edge Orientation (EO)", 3 | "eocross": "Step 1: EOCross", 4 | "zzf2l": "Step 2: ZZ First 2 Layers (ZZF2L)", 5 | "ll": "Step 3: Last Layer (LL)" 6 | } 7 | -------------------------------------------------------------------------------- /pages/fr/tutorial/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eo": "Edge Orientation (EO)", 3 | "eocross": "Step 1: EOCross", 4 | "zzf2l": "Step 2: ZZ First 2 Layers (ZZF2L)", 5 | "ll": "Step 3: Last Layer (LL)" 6 | } 7 | -------------------------------------------------------------------------------- /pages/he/tutorial/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eo": "Edge Orientation (EO)", 3 | "eocross": "Step 1: EOCross", 4 | "zzf2l": "Step 2: ZZ First 2 Layers (ZZF2L)", 5 | "ll": "Step 3: Last Layer (LL)" 6 | } 7 | -------------------------------------------------------------------------------- /pages/zh/tutorial/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eo": "Edge Orientation (EO)", 3 | "eocross": "Step 1: EOCross", 4 | "zzf2l": "Step 2: ZZ First 2 Layers (ZZF2L)", 5 | "ll": "Step 3: Last Layer (LL)" 6 | } 7 | -------------------------------------------------------------------------------- /components/YouTubeEmbed.module.css: -------------------------------------------------------------------------------- 1 | .video { 2 | padding-bottom: 56.25%; 3 | position: relative; 4 | min-height: 250px; 5 | } 6 | 7 | .iframe { 8 | width: 100%; 9 | height: 100%; 10 | position: absolute; 11 | } 12 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/ll/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "2lll": "OCLL and PLL", 3 | "zbll-guide": "ZBLL Guide", 4 | "zbll-algs": "ZBLL Algs", 5 | "zbll-recog": "ZBLL Recog", 6 | "zbll-practice": "Practicing ZBLL" 7 | } 8 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/ll/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "2lll": "OCLL and PLL", 3 | "zbll-guide": "ZBLL Guide", 4 | "zbll-algs": "ZBLL Algs", 5 | "zbll-recog": "ZBLL Recog", 6 | "zbll-practice": "Practicing ZBLL" 7 | } 8 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/ll/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "2lll": "OCLL and PLL", 3 | "zbll-guide": "ZBLL Guide", 4 | "zbll-algs": "ZBLL Algs", 5 | "zbll-recog": "ZBLL Recog", 6 | "zbll-practice": "Practicing ZBLL" 7 | } 8 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/ll/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "2lll": "OCLL and PLL", 3 | "zbll-guide": "ZBLL Guide", 4 | "zbll-algs": "ZBLL Algs", 5 | "zbll-recog": "ZBLL Recog", 6 | "zbll-practice": "Practicing ZBLL" 7 | } 8 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "rewrites": [ 3 | { 4 | "source": "/api/count", 5 | "destination": "https://zzmethod.goatcounter.com/count" 6 | }, 7 | { 8 | "source": "/api/count.js", 9 | "destination": "https://gc.zgo.at/count.js" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/zzf2l/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "zzf2l-full-guide": "ZZF2L Full Guide", 3 | "pair-solutions": "Pair Solutions", 4 | "lookahead": "Lookahead Progression", 5 | "pair-choice": "Pair Choice", 6 | "deduction": "Deduction", 7 | "multislotting": "Multislotting" 8 | } 9 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/zzf2l/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "zzf2l-full-guide": "ZZF2L Full Guide", 3 | "pair-solutions": "Pair Solutions", 4 | "lookahead": "Lookahead Progression", 5 | "pair-choice": "Pair Choice", 6 | "deduction": "Deduction", 7 | "multislotting": "Multislotting" 8 | } 9 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/zzf2l/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "zzf2l-full-guide": "ZZF2L Full Guide", 3 | "pair-solutions": "Pair Solutions", 4 | "lookahead": "Lookahead Progression", 5 | "pair-choice": "Pair Choice", 6 | "deduction": "Deduction", 7 | "multislotting": "Multislotting" 8 | } 9 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/zzf2l/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "zzf2l-full-guide": "ZZF2L Full Guide", 3 | "pair-solutions": "Pair Solutions", 4 | "lookahead": "Lookahead Progression", 5 | "pair-choice": "Pair Choice", 6 | "deduction": "Deduction", 7 | "multislotting": "Multislotting" 8 | } 9 | -------------------------------------------------------------------------------- /translations/useTranslation.ts: -------------------------------------------------------------------------------- 1 | import { Translation } from "./types"; 2 | import { useRouter } from "nextra/hooks"; 3 | 4 | export function useTranslation(translation: Translation): T { 5 | const { locale, defaultLocale } = useRouter(); 6 | return translation[locale || defaultLocale || "en"]; 7 | } -------------------------------------------------------------------------------- /pages/en/improvement-guide/eocross/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross-full-guide": "EOCross Full Guide", 3 | "color-neutrality": "Color neutrality", 4 | "efficiency": "Efficiency", 5 | "practicing": "How to practice", 6 | "inspection": "Planning in inspection", 7 | "xeocross": "XEOCross" 8 | } 9 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/eocross/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross-full-guide": "EOCross Full Guide", 3 | "color-neutrality": "Color neutrality", 4 | "efficiency": "Efficiency", 5 | "practicing": "How to practice", 6 | "inspection": "Planning in inspection", 7 | "xeocross": "XEOCross" 8 | } 9 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/eocross/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross-full-guide": "EOCross Full Guide", 3 | "color-neutrality": "Color neutrality", 4 | "efficiency": "Efficiency", 5 | "practicing": "How to practice", 6 | "inspection": "Planning in inspection", 7 | "xeocross": "XEOCross" 8 | } 9 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/eocross/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "eocross-full-guide": "EOCross Full Guide", 3 | "color-neutrality": "Color neutrality", 4 | "efficiency": "Efficiency", 5 | "practicing": "How to practice", 6 | "inspection": "Planning in inspection", 7 | "xeocross": "XEOCross" 8 | } 9 | -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- 1 | import nextra from "nextra"; 2 | 3 | const withNextra = nextra({ 4 | theme: "nextra-theme-docs", 5 | themeConfig: "./theme.config.tsx", 6 | }); 7 | 8 | export default withNextra({ 9 | i18n: { 10 | locales: ["en", "fr", "he", "zh"], 11 | defaultLocale: "en", 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /pages/fr/blog/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "*": { 3 | "display": "hidden", 4 | "theme": { 5 | "toc": false, 6 | "sidebar": false, 7 | "pagination": false 8 | } 9 | }, 10 | "story": "The story of ZZMethod.com", 11 | "zz-example-solve-library": "Introducing ZZ Example Solve Library!" 12 | } 13 | -------------------------------------------------------------------------------- /pages/he/blog/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "*": { 3 | "display": "hidden", 4 | "theme": { 5 | "toc": false, 6 | "sidebar": false, 7 | "pagination": false 8 | } 9 | }, 10 | "story": "The story of ZZMethod.com", 11 | "zz-example-solve-library": "Introducing ZZ Example Solve Library!" 12 | } 13 | -------------------------------------------------------------------------------- /pages/zh/blog/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "*": { 3 | "display": "hidden", 4 | "theme": { 5 | "toc": false, 6 | "sidebar": false, 7 | "pagination": false 8 | } 9 | }, 10 | "story": "The story of ZZMethod.com", 11 | "zz-example-solve-library": "Introducing ZZ Example Solve Library!" 12 | } 13 | -------------------------------------------------------------------------------- /pages/en/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "index": "Introduction", 3 | "about": { 4 | "title": "About", 5 | "type": "page" 6 | }, 7 | "tutorial": "ZZ Tutorial", 8 | "improvement-guide": "How to Improve", 9 | "example-solves": "ZZ Example Solve Library", 10 | "blog": { 11 | "title": "Blog", 12 | "type": "page", 13 | "theme": { 14 | "sidebar": false 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pages/fr/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "index": "Introduction", 3 | "about": { 4 | "title": "About", 5 | "type": "page" 6 | }, 7 | "tutorial": "ZZ Tutorial", 8 | "improvement-guide": "How to Improve", 9 | "example-solves": "ZZ Example Solve Library", 10 | "blog": { 11 | "title": "Blog", 12 | "type": "page", 13 | "theme": { 14 | "sidebar": false 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pages/he/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "index": "Introduction", 3 | "about": { 4 | "title": "About", 5 | "type": "page" 6 | }, 7 | "tutorial": "ZZ Tutorial", 8 | "improvement-guide": "How to Improve", 9 | "example-solves": "ZZ Example Solve Library", 10 | "blog": { 11 | "title": "Blog", 12 | "type": "page", 13 | "theme": { 14 | "sidebar": false 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pages/zh/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "index": "Introduction", 3 | "about": { 4 | "title": "About", 5 | "type": "page" 6 | }, 7 | "tutorial": "ZZ Tutorial", 8 | "improvement-guide": "How to Improve", 9 | "example-solves": "ZZ Example Solve Library", 10 | "blog": { 11 | "title": "Blog", 12 | "type": "page", 13 | "theme": { 14 | "sidebar": false 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pages/en/blog/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "*": { 3 | "display": "hidden", 4 | "theme": { 5 | "toc": false, 6 | "sidebar": false, 7 | "pagination": false 8 | } 9 | }, 10 | "yoruba-6.51-zzwr": "6.51 ZZ World Record ao5 by Yoruba", 11 | "yoruba-6.93-zzwr": "6.93 ZZ World Record ao5 by Yoruba", 12 | "zz-example-solve-library": "Introducing ZZ Example Solve Library!", 13 | "story": "The story of ZZMethod.com", 14 | } 15 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/ll.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Last Layer Improvement Guide 3 | description: An introduction to the LL improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | This is the complete Last Layer improvement guide written by a high-level ZBLL user. 8 | Inside you'll find great advice on how to learn and train algs, especially [ZBLL](/improvement-guide/ll/zbll-guide). 9 | 10 | To upgrade from 3LLL to 2LLL, [start here!](/improvement-guide/ll/2lll) 11 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/ll.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Last Layer Improvement Guide 3 | description: An introduction to the LL improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | This is the complete Last Layer improvement guide written by a high-level ZBLL user. 8 | Inside you'll find great advice on how to learn and train algs, especially [ZBLL](/improvement-guide/ll/zbll-guide). 9 | 10 | To upgrade from 3LLL to 2LLL, [start here!](/improvement-guide/ll/2lll) 11 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/ll.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Last Layer Improvement Guide 3 | description: An introduction to the LL improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | This is the complete Last Layer improvement guide written by a high-level ZBLL user. 8 | Inside you'll find great advice on how to learn and train algs, especially [ZBLL](/improvement-guide/ll/zbll-guide). 9 | 10 | To upgrade from 3LLL to 2LLL, [start here!](/improvement-guide/ll/2lll) 11 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/ll.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Last Layer Improvement Guide 3 | description: An introduction to the LL improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | This is the complete Last Layer improvement guide written by a high-level ZBLL user. 8 | Inside you'll find great advice on how to learn and train algs, especially [ZBLL](/improvement-guide/ll/zbll-guide). 9 | 10 | To upgrade from 3LLL to 2LLL, [start here!](/improvement-guide/ll/2lll) 11 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/eocross.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: EOCross Improvement Guide 3 | description: An introduction to the EOCross improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Introducing the comprehensive EOCross guide! It breaks down the most complex step of ZZ with systematic approaches. 8 | Included is the Movecount Drill, an exercise with proven results for increasing EOCross efficiency. 9 | 10 | [Start here!](/improvement-guide/eocross/eocross-full-guide) 11 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/eocross.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: EOCross Improvement Guide 3 | description: An introduction to the EOCross improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Introducing the comprehensive EOCross guide! It breaks down the most complex step of ZZ with systematic approaches. 8 | Included is the Movecount Drill, an exercise with proven results for increasing EOCross efficiency. 9 | 10 | [Start here!](/improvement-guide/eocross/eocross-full-guide) 11 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/eocross.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: EOCross Improvement Guide 3 | description: An introduction to the EOCross improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Introducing the comprehensive EOCross guide! It breaks down the most complex step of ZZ with systematic approaches. 8 | Included is the Movecount Drill, an exercise with proven results for increasing EOCross efficiency. 9 | 10 | [Start here!](/improvement-guide/eocross/eocross-full-guide) 11 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/eocross.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: EOCross Improvement Guide 3 | description: An introduction to the EOCross improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Introducing the comprehensive EOCross guide! It breaks down the most complex step of ZZ with systematic approaches. 8 | Included is the Movecount Drill, an exercise with proven results for increasing EOCross efficiency. 9 | 10 | [Start here!](/improvement-guide/eocross/eocross-full-guide) 11 | -------------------------------------------------------------------------------- /reconstructions/types.ts: -------------------------------------------------------------------------------- 1 | import { Rotation } from "@/lib"; 2 | 3 | export interface Reconstruction { 4 | time?: string; // Format like this: 4.56, (4.56), 4.56+, DNF(4.56) 5 | movecount?: number; // STM. Note: we count simultaneously executed moves e.g. (U D') as 1 STM 6 | scramble: string; 7 | solution: string; // Uses Twizzle notation 8 | eoStepOrientation: Rotation[]; 9 | reconstructor?: string; 10 | notes?: string; 11 | videoTimestamp?: number; // in seconds 12 | } 13 | -------------------------------------------------------------------------------- /algs/CP.ts: -------------------------------------------------------------------------------- 1 | import { AlgSet } from "./types"; 2 | 3 | const CP: AlgSet = { 4 | name: "CP", 5 | customStickering: "EDGES:OOOO--------,CORNERS:--------,CENTERS:------", 6 | visualization: "2D", 7 | algCases: [ 8 | { 9 | name: "Adjacent swap", 10 | algs: ["R U R' U' R' F R2 U' R' U' R U R' F'"], 11 | }, 12 | { 13 | name: "Diagonal swap", 14 | algs: ["F R U' R' U' R U R' F' R U R' U' R' F R F'"], 15 | }, 16 | ], 17 | }; 18 | 19 | export default CP; 20 | -------------------------------------------------------------------------------- /pages/en/improvement-guide.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Improvement Guide 3 | description: The comprehensive guide to solving faster with the ZZ Method. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the Modern ZZ Improvement Guide. 8 | We have comprehensive articles for advanced techniques, practice tips and general advice so you can reach your potential! 9 | 10 | 1. [EOCross guide](/improvement-guide/eocross) 11 | 2. [ZZF2L guide](/improvement-guide/zzf2l) 12 | 3. [LL guide](/improvement-guide/ll) 13 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Improvement Guide 3 | description: The comprehensive guide to solving faster with the ZZ Method. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the Modern ZZ Improvement Guide. 8 | We have comprehensive articles for advanced techniques, practice tips and general advice so you can reach your potential! 9 | 10 | 1. [EOCross guide](/improvement-guide/eocross) 11 | 2. [ZZF2L guide](/improvement-guide/zzf2l) 12 | 3. [LL guide](/improvement-guide/ll) 13 | -------------------------------------------------------------------------------- /pages/he/improvement-guide.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Improvement Guide 3 | description: The comprehensive guide to solving faster with the ZZ Method. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the Modern ZZ Improvement Guide. 8 | We have comprehensive articles for advanced techniques, practice tips and general advice so you can reach your potential! 9 | 10 | 1. [EOCross guide](/improvement-guide/eocross) 11 | 2. [ZZF2L guide](/improvement-guide/zzf2l) 12 | 3. [LL guide](/improvement-guide/ll) 13 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZ Improvement Guide 3 | description: The comprehensive guide to solving faster with the ZZ Method. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the Modern ZZ Improvement Guide. 8 | We have comprehensive articles for advanced techniques, practice tips and general advice so you can reach your potential! 9 | 10 | 1. [EOCross guide](/improvement-guide/eocross) 11 | 2. [ZZF2L guide](/improvement-guide/zzf2l) 12 | 3. [LL guide](/improvement-guide/ll) 13 | -------------------------------------------------------------------------------- /pages/fr/example-solves/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "yoruba-5.86-ao5": "Yoruba's 5.86 ao5", 3 | "yoruba-6.65-ao25": "Yoruba's 6.65 ao25", 4 | "yoruba-7.19-ao50": "Yoruba's 7.19 ao50", 5 | "yoruba-advanced-example-25": "Yoruba's Advanced Examples", 6 | "gen-8.99-ao5": "Gen's 8.99 ao5", 7 | "gen-11.68-oh-ao5": "Gen's OH 11.68 ao5", 8 | "luna-9.00-ao25": "Luna's 9.00 ao25", 9 | "jouda-11.26-oh-ao5": "Jouda's OH 11.26 ao5", 10 | "rouxzzcfop-7.64-ao12": "rouxzzcfop's 7.64 ao12" 11 | } 12 | -------------------------------------------------------------------------------- /pages/he/example-solves/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "yoruba-5.86-ao5": "Yoruba's 5.86 ao5", 3 | "yoruba-6.65-ao25": "Yoruba's 6.65 ao25", 4 | "yoruba-7.19-ao50": "Yoruba's 7.19 ao50", 5 | "yoruba-advanced-example-25": "Yoruba's Advanced Examples", 6 | "gen-8.99-ao5": "Gen's 8.99 ao5", 7 | "gen-11.68-oh-ao5": "Gen's OH 11.68 ao5", 8 | "luna-9.00-ao25": "Luna's 9.00 ao25", 9 | "jouda-11.26-oh-ao5": "Jouda's OH 11.26 ao5", 10 | "rouxzzcfop-7.64-ao12": "rouxzzcfop's 7.64 ao12" 11 | } 12 | -------------------------------------------------------------------------------- /pages/zh/example-solves/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "yoruba-5.86-ao5": "Yoruba's 5.86 ao5", 3 | "yoruba-6.65-ao25": "Yoruba's 6.65 ao25", 4 | "yoruba-7.19-ao50": "Yoruba's 7.19 ao50", 5 | "yoruba-advanced-example-25": "Yoruba's Advanced Examples", 6 | "gen-8.99-ao5": "Gen's 8.99 ao5", 7 | "gen-11.68-oh-ao5": "Gen's OH 11.68 ao5", 8 | "luna-9.00-ao25": "Luna's 9.00 ao25", 9 | "jouda-11.26-oh-ao5": "Jouda's OH 11.26 ao5", 10 | "rouxzzcfop-7.64-ao12": "rouxzzcfop's 7.64 ao12" 11 | } 12 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/zzf2l.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZF2L Improvement Guide 3 | description: An introduction to the ZZF2L improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the comprehensive ZZF2L guide on ZZMethod.com! 8 | These tutorials, practice drills and advice can take your F2L to the next level. 9 | 10 | This guide is for EOCross ZZF2L. For EOLine ZZF2L, refer to [Conrad Rider's guide](http://cube.rider.biz/zz.php?p=f2l). 11 | 12 | [Start here!](/improvement-guide/zzf2l/zzf2l-full-guide) 13 | -------------------------------------------------------------------------------- /pages/fr/improvement-guide/zzf2l.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZF2L Improvement Guide 3 | description: An introduction to the ZZF2L improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the comprehensive ZZF2L guide on ZZMethod.com! 8 | These tutorials, practice drills and advice can take your F2L to the next level. 9 | 10 | This guide is for EOCross ZZF2L. For EOLine ZZF2L, refer to [Conrad Rider's guide](http://cube.rider.biz/zz.php?p=f2l). 11 | 12 | [Start here!](/improvement-guide/zzf2l/zzf2l-full-guide) 13 | -------------------------------------------------------------------------------- /pages/he/improvement-guide/zzf2l.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZF2L Improvement Guide 3 | description: An introduction to the ZZF2L improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the comprehensive ZZF2L guide on ZZMethod.com! 8 | These tutorials, practice drills and advice can take your F2L to the next level. 9 | 10 | This guide is for EOCross ZZF2L. For EOLine ZZF2L, refer to [Conrad Rider's guide](http://cube.rider.biz/zz.php?p=f2l). 11 | 12 | [Start here!](/improvement-guide/zzf2l/zzf2l-full-guide) 13 | -------------------------------------------------------------------------------- /pages/zh/improvement-guide/zzf2l.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZZF2L Improvement Guide 3 | description: An introduction to the ZZF2L improvement guide. 4 | author: crystalcuber 5 | --- 6 | 7 | Welcome to the comprehensive ZZF2L guide on ZZMethod.com! 8 | These tutorials, practice drills and advice can take your F2L to the next level. 9 | 10 | This guide is for EOCross ZZF2L. For EOLine ZZF2L, refer to [Conrad Rider's guide](http://cube.rider.biz/zz.php?p=f2l). 11 | 12 | [Start here!](/improvement-guide/zzf2l/zzf2l-full-guide) 13 | -------------------------------------------------------------------------------- /components/ReconViewer.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1.5rem; 5 | } 6 | 7 | .twistyPlayer { 8 | max-width: 100%; 9 | } 10 | 11 | @media screen and (min-width: 1080px) { 12 | .splitOnDesktop { 13 | flex-direction: row; 14 | } 15 | } 16 | 17 | .solveHeading { 18 | font-size: 1.35rem; 19 | font-weight: 600; 20 | } 21 | 22 | .scrambleAndSolution { 23 | display: flex; 24 | flex-direction: column; 25 | gap: 0.75rem; 26 | font-size: 1.1rem; 27 | } 28 | -------------------------------------------------------------------------------- /middleware.ts: -------------------------------------------------------------------------------- 1 | export { middleware } from 'nextra/locales' 2 | 3 | // By default for i18n, links are redirected from zzmethod.com/some/path to zzmethod.com/en/some/path. 4 | // This behaviour is sometimes unwanted. If you experience 404s due to this, update the below regex to ignore certain files/paths. 5 | export const config = { 6 | // Matcher ignoring `/api`, `/_next` and `/assets` 7 | matcher: [ 8 | '/((?!api|_next/static|_next/image|assets|favicon.ico|icon.svg|apple-icon.png|manifest|robots.txt).*)' 9 | ] 10 | } -------------------------------------------------------------------------------- /algs/types.ts: -------------------------------------------------------------------------------- 1 | export interface AlgSet { 2 | name: string; 3 | stickering?: string; // this should be supported by cubing.js `experimental-stickering` attribute 4 | customStickering?: string; // this is for cubing.js `experimental-stickering-mask-orbits` 5 | visualization: "2D" | "3D"; 6 | algCases: AlgCase[]; 7 | hasCategories?: boolean; 8 | } 9 | 10 | type NonEmptyArray = [T, ...T[]]; 11 | 12 | export interface AlgCase { 13 | name: string; 14 | algs: NonEmptyArray; 15 | category?: string; 16 | } 17 | -------------------------------------------------------------------------------- /pages/en/improvement-guide/ll/zbll-algs.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ZBLL Alg Sheets 3 | description: Find the best algs to learn 4 | author: yoruba 5 | --- 6 | 7 | This is the main ZBLL alg resource, it combines many popular ZBLL alg sheets: 8 | 9 | [**ZBLL Explorer**](https://pepkin88.me/zbll-explorer/) 10 | 11 | Alternatively, this is the author's sheet. All of the algs can be done sub 1-1.2, and AUF stickers are indicated. 12 | 13 | [**Yoruba's ZBLL Sheet:**](https://docs.google.com/spreadsheets/d/1AVFcEcnPNlmBl3T3Q7YeoreHBc-XU4ad9vR8lGzXsp0/edit?usp=drivesdk) 14 | -------------------------------------------------------------------------------- /pages/en/example-solves/jouda-11.26-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Jouda's 11.26 One-Handed Average of 5 3 | description: Learn from 5 OH ZZ solves by Jouda. 4 | author: Jouda 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/jouda-11.26-oh-ao5"; 9 | 10 | Here are five one-handed ZZ solves by Jouda with reconstructions. 11 | Jouda uses EOCross and OCLL/PLL, with T and U ZBLL. 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /pages/fr/example-solves/jouda-11.26-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Jouda's 11.26 One-Handed Average of 5 3 | description: Learn from 5 OH ZZ solves by Jouda. 4 | author: Jouda 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/jouda-11.26-oh-ao5"; 9 | 10 | Here are five one-handed ZZ solves by Jouda with reconstructions. 11 | Jouda uses EOCross and OCLL/PLL, with T and U ZBLL. 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /pages/he/example-solves/jouda-11.26-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Jouda's 11.26 One-Handed Average of 5 3 | description: Learn from 5 OH ZZ solves by Jouda. 4 | author: Jouda 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/jouda-11.26-oh-ao5"; 9 | 10 | Here are five one-handed ZZ solves by Jouda with reconstructions. 11 | Jouda uses EOCross and OCLL/PLL, with T and U ZBLL. 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /pages/zh/example-solves/jouda-11.26-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Jouda's 11.26 One-Handed Average of 5 3 | description: Learn from 5 OH ZZ solves by Jouda. 4 | author: Jouda 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/jouda-11.26-oh-ao5"; 9 | 10 | Here are five one-handed ZZ solves by Jouda with reconstructions. 11 | Jouda uses EOCross and OCLL/PLL, with T and U ZBLL. 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /types.ts: -------------------------------------------------------------------------------- 1 | export type Rotation = 2 | | "x" 3 | | "x2" 4 | | "x'" 5 | | "y" 6 | | "y2" 7 | | "y'" 8 | | "z" 9 | | "z2" 10 | | "z'"; 11 | 12 | export interface Reconstruction { 13 | time?: string; // Format like this: 4.56, (4.56), 4.56+, DNF(4.56) 14 | movecount?: number; // STM. Note: we count simultaneously executed moves e.g. (U D') as 1 STM 15 | scramble: string; 16 | solution: string; // Uses Twizzle notation 17 | eoStepOrientation: Rotation[]; 18 | reconstructor?: string; 19 | notes?: string; 20 | videoTimestamp?: number; // in seconds 21 | } 22 | -------------------------------------------------------------------------------- /pages/en/example-solves/gen-8.99-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 8.99 Average of 5 3 | description: Learn from 5 official ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/gen-8.99-ao5"; 9 | 10 | Here are five official solves by Gen, done at NAC 2024. 11 | She is the 5th ever person to achieve an official ZZ sub-9 average. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/fr/example-solves/gen-8.99-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 8.99 Average of 5 3 | description: Learn from 5 official ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/gen-8.99-ao5"; 9 | 10 | Here are five official solves by Gen, done at NAC 2024. 11 | She is the 5th ever person to achieve an official ZZ sub-9 average. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/he/example-solves/gen-8.99-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 8.99 Average of 5 3 | description: Learn from 5 official ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/gen-8.99-ao5"; 9 | 10 | Here are five official solves by Gen, done at NAC 2024. 11 | She is the 5th ever person to achieve an official ZZ sub-9 average. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/zh/example-solves/gen-8.99-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 8.99 Average of 5 3 | description: Learn from 5 official ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/gen-8.99-ao5"; 9 | 10 | Here are five official solves by Gen, done at NAC 2024. 11 | She is the 5th ever person to achieve an official ZZ sub-9 average. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/en/example-solves/yoruba-5.86-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 5.86 Average of 5 3 | description: Learn from 5 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/yoruba-5.86-ao5"; 9 | 10 | Check out this 5.86 ao5 by Yoruba, including a 5.32 mo3. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 50.40 STM 14 | - Average TPS: 8.47 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/fr/example-solves/yoruba-5.86-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 5.86 Average of 5 3 | description: Learn from 5 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/yoruba-5.86-ao5"; 9 | 10 | Check out this 5.86 ao5 by Yoruba, including a 5.32 mo3. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 50.40 STM 14 | - Average TPS: 8.47 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/he/example-solves/yoruba-5.86-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 5.86 Average of 5 3 | description: Learn from 5 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/yoruba-5.86-ao5"; 9 | 10 | Check out this 5.86 ao5 by Yoruba, including a 5.32 mo3. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 50.40 STM 14 | - Average TPS: 8.47 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/styles.css: -------------------------------------------------------------------------------- 1 | table th { 2 | position: sticky; 3 | /* must match the width of the nav bar */ 4 | top: 4rem; 5 | background-color: rgb(255, 255, 255); 6 | } 7 | 8 | :is(html[class~="dark"]) table th { 9 | background-color: rgb(17, 17, 17); 10 | } 11 | 12 | .nextra-banner-container { 13 | background-image: linear-gradient(1deg,#6da3eb,#4280d1) !important; 14 | } 15 | 16 | :is(html[class~="dark"]) .nextra-banner-container { 17 | background-image: linear-gradient(1deg,#3d82db,#416da7) !important; 18 | } 19 | 20 | .nextra-banner-container a { 21 | text-decoration: underline; 22 | } 23 | -------------------------------------------------------------------------------- /pages/zh/example-solves/yoruba-5.86-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 5.86 Average of 5 3 | description: Learn from 5 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/yoruba-5.86-ao5"; 9 | 10 | Check out this 5.86 ao5 by Yoruba, including a 5.32 mo3. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 50.40 STM 14 | - Average TPS: 8.47 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/en/example-solves/gen-11.68-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 11.68 One-Handed Average of 5 3 | description: Learn from 5 official OH ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/gen-11.68-oh-ao5"; 9 | 10 | Here are five official one-handed solves by Gen, done at NAC 2024. 11 | She achieved 9th place in semifinals with this 11.68 ao5. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/fr/example-solves/gen-11.68-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 11.68 One-Handed Average of 5 3 | description: Learn from 5 official OH ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/gen-11.68-oh-ao5"; 9 | 10 | Here are five official one-handed solves by Gen, done at NAC 2024. 11 | She achieved 9th place in semifinals with this 11.68 ao5. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/he/example-solves/gen-11.68-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 11.68 One-Handed Average of 5 3 | description: Learn from 5 official OH ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/gen-11.68-oh-ao5"; 9 | 10 | Here are five official one-handed solves by Gen, done at NAC 2024. 11 | She achieved 9th place in semifinals with this 11.68 ao5. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/zh/example-solves/gen-11.68-oh-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gen's 11.68 One-Handed Average of 5 3 | description: Learn from 5 official OH ZZ solves by Gen. 4 | author: Gen, crystalcuber 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/gen-11.68-oh-ao5"; 9 | 10 | Here are five official one-handed solves by Gen, done at NAC 2024. 11 | She achieved 9th place in semifinals with this 11.68 ao5. 12 | She uses EOLine and full ZBLL. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /algs/EPLL.ts: -------------------------------------------------------------------------------- 1 | import { AlgSet } from "./types"; 2 | 3 | const EPLL: AlgSet = { 4 | name: "EPLL", 5 | stickering: "full", // I think full stickering looks better than PLL/EPLL here 6 | visualization: "2D", 7 | algCases: [ 8 | { 9 | name: "H Perm", 10 | algs: ["M2' U M2' U2 M2' U M2'"], 11 | }, 12 | { 13 | name: "Ua Perm", 14 | algs: ["M2' U M U2 M' U M2'"], 15 | }, 16 | { 17 | name: "Ub Perm", 18 | algs: ["M2' U' M U2 M' U' M2'"], 19 | }, 20 | { 21 | name: "Z Perm", 22 | algs: ["M2' U2 M U M2' U M2' U M"], 23 | }, 24 | ], 25 | }; 26 | 27 | export default EPLL; 28 | -------------------------------------------------------------------------------- /pages/en/example-solves/yoruba-7.19-ao50.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 7.19 Average of 50 3 | description: Learn from 50 example ZZ solves by Yoruba. 4 | author: Yoruba, crystalcuber, Jouda, Fahmi 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/yoruba-7.19-ao50"; 9 | 10 | This is a collection of 50 ZZ solves by Yoruba, complete with reconstructions. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.42 STM 14 | - Average TPS: 7.73 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/fr/example-solves/yoruba-7.19-ao50.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 7.19 Average of 50 3 | description: Learn from 50 example ZZ solves by Yoruba. 4 | author: Yoruba, crystalcuber, Jouda, Fahmi 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/yoruba-7.19-ao50"; 9 | 10 | This is a collection of 50 ZZ solves by Yoruba, complete with reconstructions. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.42 STM 14 | - Average TPS: 7.73 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/he/example-solves/yoruba-7.19-ao50.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 7.19 Average of 50 3 | description: Learn from 50 example ZZ solves by Yoruba. 4 | author: Yoruba, crystalcuber, Jouda, Fahmi 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/yoruba-7.19-ao50"; 9 | 10 | This is a collection of 50 ZZ solves by Yoruba, complete with reconstructions. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.42 STM 14 | - Average TPS: 7.73 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/zh/example-solves/yoruba-7.19-ao50.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 7.19 Average of 50 3 | description: Learn from 50 example ZZ solves by Yoruba. 4 | author: Yoruba, crystalcuber, Jouda, Fahmi 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/yoruba-7.19-ao50"; 9 | 10 | This is a collection of 50 ZZ solves by Yoruba, complete with reconstructions. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.42 STM 14 | - Average TPS: 7.73 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/en/blog/yoruba-6.93-zzwr.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 6.93 ZZ World Record ao5 by Yoruba 3 | description: Yoruba achieved a sub-7 ao5 with ZZ in competition. 4 | author: crystalcuber, Yoruba 5 | date: June 14, 2025 6 | --- 7 | 8 | import YouTubeEmbed from "components/YouTubeEmbed"; 9 | 10 | On June 8th, 2025 Yoruba broke the sub-7 barrier officially for ZZ. 11 | 12 | He achieved a 6.93 ao5 at the [Siedlce Open 2025](https://www.worldcubeassociation.org/competitions/SiedlceOpen2025) competition. 13 | 14 | Check out the reconstructions in the [ZZ Example Solve Library](/en/example-solves/yoruba-6.93-ao5). 15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/en/example-solves/yoruba-6.65-ao25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 6.65 Average of 25 3 | description: Learn from 25 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/yoruba-6.65-ao25"; 9 | 10 | We present a 6.65 ao25 by Yoruba with full reconstructions. It's a significant improvement over the 7.19 ao50. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.68 STM 14 | - Average TPS: 8.31 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/fr/example-solves/yoruba-6.65-ao25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 6.65 Average of 25 3 | description: Learn from 25 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/yoruba-6.65-ao25"; 9 | 10 | We present a 6.65 ao25 by Yoruba with full reconstructions. It's a significant improvement over the 7.19 ao50. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.68 STM 14 | - Average TPS: 8.31 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/he/example-solves/yoruba-6.65-ao25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 6.65 Average of 25 3 | description: Learn from 25 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/yoruba-6.65-ao25"; 9 | 10 | We present a 6.65 ao25 by Yoruba with full reconstructions. It's a significant improvement over the 7.19 ao50. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.68 STM 14 | - Average TPS: 8.31 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/zh/example-solves/yoruba-6.65-ao25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's 6.65 Average of 25 3 | description: Learn from 25 example ZZ solves by Yoruba. 4 | author: Gen, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/yoruba-6.65-ao25"; 9 | 10 | We present a 6.65 ao25 by Yoruba with full reconstructions. It's a significant improvement over the 7.19 ao50. 11 | He uses EOCross and ZBLL except sunes. 12 | 13 | - Average movecount: 55.68 STM 14 | - Average TPS: 8.31 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /pages/en/example-solves/_meta.tsx: -------------------------------------------------------------------------------- 1 | export default { 2 | "yoruba-6.51-ao5": "Yoruba's Official 6.51 ao5", 3 | "yoruba-6.93-ao5": "Yoruba's Official 6.93 ao5", 4 | "yoruba-5.86-ao5": "Yoruba's 5.86 ao5", 5 | "yoruba-6.65-ao25": "Yoruba's 6.65 ao25", 6 | "yoruba-7.19-ao50": "Yoruba's 7.19 ao50", 7 | "yoruba-advanced-example-25": "Yoruba's Advanced Examples", 8 | "gen-8.99-ao5": "Gen's Official 8.99 ao5", 9 | "gen-11.68-oh-ao5": "Gen's Official OH 11.68 ao5", 10 | "luna-7.73-ao12": "Luna's 7.73 ao12", 11 | "luna-9.00-ao25": "Luna's 9.00 ao25", 12 | "jouda-11.26-oh-ao5": "Jouda's OH 11.26 ao5", 13 | "rouxzzcfop-7.64-ao12": "rouxzzcfop's 7.64 ao12" 14 | } 15 | -------------------------------------------------------------------------------- /pages/en/example-solves/yoruba-6.51-ao5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's Official 6.51 Average of 5 3 | description: Learn from Yoruba's ZZ WR ao5 solves. 4 | author: crystalcuber, Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/yoruba-6.51-ao5"; 9 | 10 | On July 27, 2025, Yoruba achieved a 6.51 ZZ World Record ao5. 11 | 12 | ``` 13 | 6.54 6.46 6.53 (6.37) (6.83) 14 | ``` 15 | 16 | Below are the reconstructions by Luna. The second solve is missing because it was not recorded. 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /pages/en/example-solves/yoruba-advanced-example-25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's Advanced Example Solves 3 | description: Learn from 25 advanced example ZZ solves by Yoruba. 4 | author: Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS } from "reconstructions/en/yoruba-advanced-example-25"; 9 | 10 | Here are 25 advanced example solves from Yoruba (EOCross + ZBLL except sunes). 11 | They aren't timed, and are walkthroughs of what he would do in a real solve plus some minor optimizations. 12 | This is a great resource for learning techniques and tricks in EOCross and ZZF2L. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/fr/example-solves/yoruba-advanced-example-25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's Advanced Example Solves 3 | description: Learn from 25 advanced example ZZ solves by Yoruba. 4 | author: Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS } from "reconstructions/fr/yoruba-advanced-example-25"; 9 | 10 | Here are 25 advanced example solves from Yoruba (EOCross + ZBLL except sunes). 11 | They aren't timed, and are walkthroughs of what he would do in a real solve plus some minor optimizations. 12 | This is a great resource for learning techniques and tricks in EOCross and ZZF2L. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/he/example-solves/yoruba-advanced-example-25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's Advanced Example Solves 3 | description: Learn from 25 advanced example ZZ solves by Yoruba. 4 | author: Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS } from "reconstructions/he/yoruba-advanced-example-25"; 9 | 10 | Here are 25 advanced example solves from Yoruba (EOCross + ZBLL except sunes). 11 | They aren't timed, and are walkthroughs of what he would do in a real solve plus some minor optimizations. 12 | This is a great resource for learning techniques and tricks in EOCross and ZZF2L. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/zh/example-solves/yoruba-advanced-example-25.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoruba's Advanced Example Solves 3 | description: Learn from 25 advanced example ZZ solves by Yoruba. 4 | author: Yoruba 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS } from "reconstructions/zh/yoruba-advanced-example-25"; 9 | 10 | Here are 25 advanced example solves from Yoruba (EOCross + ZBLL except sunes). 11 | They aren't timed, and are walkthroughs of what he would do in a real solve plus some minor optimizations. 12 | This is a great resource for learning techniques and tricks in EOCross and ZZF2L. 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /components/CubeMp4Embed.module.css: -------------------------------------------------------------------------------- 1 | .wrapper { 2 | position: relative; 3 | } 4 | 5 | .playButtonWrapper { 6 | position: absolute; 7 | top: 0; 8 | width: 384px; 9 | height: 256px; 10 | max-width: 100%; 11 | max-height: 100%; 12 | opacity: 0.8; 13 | transition: opacity 0.2s; 14 | display: flex; 15 | align-items: center; 16 | justify-content: center; 17 | } 18 | 19 | .playButtonWrapper:hover { 20 | opacity: 1; 21 | } 22 | 23 | .playButton { 24 | color: white; 25 | z-index: 3; 26 | width: 50px; 27 | height: 50px; 28 | filter: drop-shadow(0 0 5px rgb(0 0 0 / 0.8)); 29 | } 30 | 31 | .video { 32 | max-width: 384px; 33 | width: 100%; 34 | border-radius: 5px; 35 | } -------------------------------------------------------------------------------- /pages/en/example-solves/rouxzzcfop-7.64-ao12.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: rouxzcfop's 7.64 Average of 12 (6.98 ao5) 3 | description: Learn from 50 example ZZ solves by rouxzzcfop. 4 | author: rouxzzcfop 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/en/rouxzzcfop-7.64-ao12"; 9 | 10 | I did not expect to record such a nice ao5. 11 | The ao12 is more or less representative of my current average. 12 | I've included two extra solves at the end because they were a bit... interesting. 13 | 14 | - Mean STM: 56.9 15 | - Mean time: 8.23 16 | - Mean TPS: 6.91 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /pages/fr/example-solves/rouxzzcfop-7.64-ao12.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: rouxzcfop's 7.64 Average of 12 (6.98 ao5) 3 | description: Learn from 50 example ZZ solves by rouxzzcfop. 4 | author: rouxzzcfop 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/fr/rouxzzcfop-7.64-ao12"; 9 | 10 | I did not expect to record such a nice ao5. 11 | The ao12 is more or less representative of my current average. 12 | I've included two extra solves at the end because they were a bit... interesting. 13 | 14 | - Mean STM: 56.9 15 | - Mean time: 8.23 16 | - Mean TPS: 6.91 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /pages/he/example-solves/rouxzzcfop-7.64-ao12.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: rouxzcfop's 7.64 Average of 12 (6.98 ao5) 3 | description: Learn from 50 example ZZ solves by rouxzzcfop. 4 | author: rouxzzcfop 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/he/rouxzzcfop-7.64-ao12"; 9 | 10 | I did not expect to record such a nice ao5. 11 | The ao12 is more or less representative of my current average. 12 | I've included two extra solves at the end because they were a bit... interesting. 13 | 14 | - Mean STM: 56.9 15 | - Mean time: 8.23 16 | - Mean TPS: 6.91 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /pages/zh/example-solves/rouxzzcfop-7.64-ao12.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: rouxzcfop's 7.64 Average of 12 (6.98 ao5) 3 | description: Learn from 50 example ZZ solves by rouxzzcfop. 4 | author: rouxzzcfop 5 | --- 6 | 7 | import { ReconCollection } from "components/ReconCollection"; 8 | import { RECONS, YOUTUBE_VIDEO_ID } from "reconstructions/zh/rouxzzcfop-7.64-ao12"; 9 | 10 | I did not expect to record such a nice ao5. 11 | The ao12 is more or less representative of my current average. 12 | I've included two extra solves at the end because they were a bit... interesting. 13 | 14 | - Mean STM: 56.9 15 | - Mean time: 8.23 16 | - Mean TPS: 6.91 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /components/YouTubeEmbed.tsx: -------------------------------------------------------------------------------- 1 | import styles from "./YouTubeEmbed.module.css"; 2 | 3 | interface YouTubeEmbedProps { 4 | // Typical YouTube links are in the form "youtube.com/watch?v=" 5 | embedId: string; 6 | } 7 | 8 | // Options are limited. If you need more, use the `react-youtube` package 9 | export default function YouTubeEmbed({ embedId }: YouTubeEmbedProps) { 10 | return ( 11 |
12 |