{"id":7619,"date":"2023-05-13T00:19:47","date_gmt":"2023-05-12T16:19:47","guid":{"rendered":"http:\/\/tiffanysmandarin.com\/?p=7619"},"modified":"2026-08-29T12:17:19","modified_gmt":"2026-08-29T04:17:19","slug":"ba-practice","status":"publish","type":"post","link":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/","title":{"rendered":"Use \u628a b\u01ce or not Practice"},"content":{"rendered":"\n<div style=\"height:11px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!-- ============================================================\n     \u628a b\u01ce or Not Practice \u2014 OneDotDot Chinese (v2: sentence builder)\n     Self-contained WordPress Custom HTML block.\n     Interaction: each step gives shuffled word tiles (plus a \"\u628a\"\n     distractor tile even when \u628a isn't needed). Tap tiles in order\n     to build the sentence. Once the right number of tiles is placed,\n     it auto-checks; correct locks in green and reveals an explanation\n     of why \u628a is or isn't used here; wrong flashes red so tiles can\n     be swapped back out and retried.\n     - Dual lang-zh-TW\/CN spans throughout (site's global switcher).\n     - Pinyin is ruby (always visible).\n     - Mode: Quiz (build it yourself) \/ Answer Key (reveal all).\n     - English narration + explanations can be hidden.\n     ============================================================ -->\n<div id=\"odd-ba2026\">\n\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,wght@1,500;1,600&family=Noto+Serif+TC:wght@400;600&family=Noto+Serif+SC:wght@400;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap');\n#odd-ba2026{\n  --indigo:#2E4A62; --seal:#8B1E3F; --vermilion:#C1440E; --brass:#B8933E;\n  --correct:#3F7A52; --wrong:#B23A2E;\n  --ink:#20262b; --paper:#ffffff; --line:#e7e2d8; --wash:#faf8f4;\n  font-family:'Noto Serif TC','Noto Serif SC',serif;\n  color:var(--ink); background:var(--paper);\n  max-width:920px; margin:0 auto; padding:0 20px 64px; line-height:1.6;\n}\n#odd-ba2026 *{box-sizing:border-box;}\n\n#odd-ba2026 rt{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--brass);letter-spacing:0;}\n#odd-ba2026 ruby{line-height:2.2;font-size:inherit !important;}\n#odd-ba2026 ruby .rb{font-size:inherit !important;display:inline !important;}\n\n\/* ---------- hero ---------- *\/\n#odd-ba2026 .jcz-hero{padding:44px 0 24px;}\n#odd-ba2026 .jcz-eyebrow{\n  font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.14em;\n  text-transform:uppercase;color:var(--brass);margin:0 0 10px;\n}\n#odd-ba2026 h1.jcz-title{\n  font-family:'Fraunces',serif;font-style:italic;font-weight:600;\n  font-size:clamp(28px,4.4vw,40px);margin:0 0 14px;color:var(--ink);\n}\n#odd-ba2026 h1.jcz-title .zh{font-family:'Noto Serif TC','Noto Serif SC',serif;font-style:normal;font-weight:600;color:var(--indigo);}\n#odd-ba2026 .jcz-dek{font-size:15.5px;color:#4a4f54;max-width:64ch;margin:0 0 10px;}\n#odd-ba2026 .jcz-dek + .jcz-dek{margin-top:10px;}\n#odd-ba2026 .jcz-dek b{color:var(--ink);}\n#odd-ba2026 .jcz-pattern{font-family:'IBM Plex Mono',monospace;font-size:.92em;color:var(--brass);background:var(--wash);padding:2px 6px;border-radius:4px;}\n\n\/* ---------- controls ---------- *\/\n#odd-ba2026 .jcz-controls{\n  position:sticky;top:0;z-index:5;background:rgba(255,255,255,.96);backdrop-filter:blur(4px);\n  border-bottom:1px solid var(--line);padding:16px 0;margin:0 0 8px;\n  display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;\n}\n#odd-ba2026 .jcz-group{display:flex;align-items:center;gap:8px;}\n#odd-ba2026 .jcz-label{\n  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#8a8f94;\n}\n#odd-ba2026 .jcz-seg{display:inline-flex;border:1px solid var(--line);border-radius:20px;overflow:hidden;}\n#odd-ba2026 .jcz-seg button{\n  font-family:'IBM Plex Mono',monospace;font-size:12px;padding:6px 14px;background:var(--paper);\n  border:none;cursor:pointer;color:#6b6f73;transition:background .15s,color .15s;\n}\n#odd-ba2026 .jcz-seg button + button{border-left:1px solid var(--line);}\n#odd-ba2026 .jcz-seg button.active{background:var(--indigo);color:#fff;}\n#odd-ba2026 .jcz-score{\n  font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink);\n  display:flex;align-items:center;gap:10px;\n}\n#odd-ba2026 .jcz-score b{color:var(--vermilion);}\n#odd-ba2026 .jcz-reset{\n  font-family:'IBM Plex Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.08em;\n  color:var(--brass);background:none;border:1px solid var(--brass);border-radius:20px;padding:5px 12px;cursor:pointer;\n}\n#odd-ba2026 .jcz-reset:hover{background:var(--brass);color:#fff;}\n\n\/* ---------- steps ---------- *\/\n#odd-ba2026 .jcz-step{margin:36px 0;padding-top:8px;}\n#odd-ba2026 .jcz-step:first-child{margin-top:24px;}\n#odd-ba2026 .jcz-step + .jcz-step{border-top:1px solid var(--line);}\n#odd-ba2026 .jcz-step-head{display:flex;align-items:baseline;gap:12px;margin:20px 0 6px;}\n#odd-ba2026 .jcz-step-num{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--brass);}\n#odd-ba2026 .jcz-step-title{font-family:'Fraunces',serif;font-style:italic;font-weight:600;font-size:21px;margin:0;}\n#odd-ba2026 .jcz-step-context{font-size:14.5px;color:#4a4f54;margin:0 0 18px;max-width:64ch;}\n#odd-ba2026.hide-en .jcz-step-context{display:none;}\n\n\/* builder + pool *\/\n#odd-ba2026 .jcz-builder{\n  min-height:52px;border:1px dashed var(--line);border-radius:6px;background:var(--wash);\n  padding:10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:10px;\n  transition:border-color .15s, background .15s;\n}\n#odd-ba2026 .jcz-builder.wrong{border-color:var(--wrong);background:#f6dedb;animation:jcz-shake .3s;}\n#odd-ba2026 .jcz-builder.solved{border-style:solid;border-color:var(--correct);background:#eef5ef;}\n#odd-ba2026 .jcz-builder-placeholder{\n  font-family:'IBM Plex Mono',monospace;font-size:12px;color:#9a9e9f;padding:6px 4px;\n}\n#odd-ba2026 .jcz-pool{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;}\n#odd-ba2026 .jcz-tile{\n  font-family:'Noto Serif TC','Noto Serif SC',serif;font-size:17px;line-height:1;\n  border:1px solid var(--line);border-radius:5px;background:var(--paper);\n  padding:8px 10px;cursor:pointer;transition:border-color .12s, transform .08s, opacity .12s;\n}\n#odd-ba2026 .jcz-tile:hover{border-color:var(--brass);}\n#odd-ba2026 .jcz-tile:active{transform:scale(.94);}\n#odd-ba2026 .jcz-tile.placed{opacity:.25;pointer-events:none;}\n#odd-ba2026 .jcz-builder .jcz-tile{background:var(--paper);}\n#odd-ba2026 .jcz-builder.solved .jcz-tile{border-color:var(--correct);color:var(--correct);cursor:default;pointer-events:none;}\n#odd-ba2026 .jcz-pool.disabled .jcz-tile:not(.placed){opacity:.4;pointer-events:none;}\n\n#odd-ba2026 .jcz-wrong-msg{\n  font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--wrong);\n  opacity:0;height:0;overflow:hidden;transition:opacity .15s;\n}\n#odd-ba2026 .jcz-wrong-msg.show{opacity:1;height:auto;margin:2px 0 8px;}\n\n#odd-ba2026 .jcz-explain{\n  display:none;font-size:13.5px;color:#4a4f54;background:var(--wash);border-left:3px solid var(--correct);\n  padding:10px 14px;border-radius:0 4px 4px 0;margin-top:6px;\n}\n#odd-ba2026 .jcz-explain b{color:var(--correct);}\n#odd-ba2026 .jcz-step.solved .jcz-explain{display:block;}\n#odd-ba2026.hide-en .jcz-explain{display:none !important;}\n\n@keyframes jcz-shake{\n  0%,100%{transform:translateX(0);} 25%{transform:translateX(-3px);}\n  75%{transform:translateX(3px);}\n}\n\n\/* Script (trad\/simp) visibility for the dynamically-rendered tiles,\n   driven by data-jcz-script on the root \u2014 kept in sync with the site's\n   real switch state by syncDisplayState() below. Scoped only to the\n   pool\/builder tiles, so it never overrides how the site's own CSS\n   already handles the rest of this fragment. *\/\n#odd-ba2026[data-jcz-script=\"trad\"] .jcz-zh-cn{display:none;}\n#odd-ba2026[data-jcz-script=\"simp\"] .jcz-zh-tw{display:none;}\n\n\/* answer-key mode *\/\n#odd-ba2026.mode-key .jcz-pool{display:none;}\n#odd-ba2026.mode-key .jcz-builder{border-style:solid;border-color:var(--correct);background:#eef5ef;}\n#odd-ba2026.mode-key .jcz-builder .jcz-tile{border-color:var(--correct);color:var(--correct);}\n#odd-ba2026.mode-key .jcz-explain{display:block !important;}\n\n\/* ---------- footer ---------- *\/\n#odd-ba2026 .jcz-again{\n  margin-top:44px;padding-top:24px;border-top:1px solid var(--line);\n  font-family:'IBM Plex Mono',monospace;font-size:13px;\n}\n#odd-ba2026 .jcz-again a{color:var(--indigo);}\n\n\/* ---------- final image ---------- *\/\n#odd-ba2026 .jcz-final-image{margin:44px 0 0;}\n#odd-ba2026 .jcz-final-image img{\n  width:100%;height:auto;display:block;border-radius:10px;border:1px solid var(--line);\n}\n\n\/* Hard-code the hanzi color directly, matching this widget's own\n   default and solved states exactly, instead of using `inherit` \u2014\n   `inherit` was correctly winning the cascade, but it was pulling\n   its value from <ruby> itself, which some other global site rule\n   sets to white. Setting an explicit color here bypasses that\n   ancestor entirely. *\/\n#odd-ba2026 ruby,\n#odd-ba2026 .rb{color:var(--ink) !important;}\n#odd-ba2026 .jcz-builder.solved .jcz-tile ruby,\n#odd-ba2026 .jcz-builder.solved .jcz-tile .rb{color:var(--correct) !important;}\n<\/style>\n\n<!-- ================= HERO ================= -->\n<div class=\"jcz-hero\">\n  <p class=\"jcz-eyebrow\">Grammar Practice \u00b7 Sentence Structure<\/p>\n  <h1 class=\"jcz-title\"><span class=\"zh\"><span class=\"lang-zh-TW\">\u628a<\/span><span class=\"lang-zh-CN\">\u628a<\/span><\/span> b\u01ce or Not Practice<\/h1>\n  <p class=\"jcz-dek\">The <b>\u628a b\u01ce<\/b> construction moves the object in front of the verb: <code class=\"jcz-pattern\">\u628a + object + verb (+ result)<\/code>.<\/p>\n  <p class=\"jcz-dek\">It&#8217;s used when a sentence describes what happens to a specific, already-known thing \u2014 moving it, placing it, finishing it off, breaking it. A general or brand-new object doesn&#8217;t get \u628a, so not every sentence below actually needs one.<\/p>\n  <p class=\"jcz-dek\">Tap the tiles below to build each sentence yourself. A \u628a tile is included every time, even when the sentence doesn&#8217;t need it, so you have to decide for yourself whether it belongs. Follow along as Rob, Sam, and Jonathan make dumplings at Tiffany&#8217;s.<\/p>\n<\/div>\n\n<!-- ================= CONTROLS ================= -->\n<div class=\"jcz-controls\">\n  <div class=\"jcz-group\">\n    <span class=\"jcz-label\">Mode<\/span>\n    <div class=\"jcz-seg\" data-role=\"mode\">\n      <button class=\"active\" data-val=\"quiz\">Quiz<\/button>\n      <button data-val=\"key\">Answer Key<\/button>\n    <\/div>\n  <\/div>\n  <div class=\"jcz-group\">\n    <span class=\"jcz-label\">English<\/span>\n    <div class=\"jcz-seg\" data-role=\"english\">\n      <button class=\"active\" data-val=\"show\">Show<\/button>\n      <button data-val=\"hide\">Hide<\/button>\n    <\/div>\n  <\/div>\n  <div class=\"jcz-score\">\n    <span><b id=\"jcz-solved\">0<\/b> \/ <span id=\"jcz-total\">14<\/span> solved<\/span>\n    <button class=\"jcz-reset\" id=\"jcz-reset\">Reset<\/button>\n  <\/div>\n<\/div>\n\n<!-- ================= STEPS (rendered by JS) ================= -->\n<div id=\"jcz-steps\"><\/div>\n\n<div class=\"jcz-final-image\">\n  <img decoding=\"async\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/08\/\u5305\u9903\u5b50-1.jpg\" alt=\"Making dumplings together\" loading=\"lazy\">\n<\/div>\n\n<div class=\"jcz-again\">\n  Learn again \u2192 <a href=\"https:\/\/tiffanysmandarin.com\/index.php\/2022\/10\/24\/ba\/\">\u628a b\u01ce Part 1 (HSK 3)<\/a>\n<\/div>\n\n<\/div><!-- \/#odd-ba2026 -->\n\n<script>\n(function(){\n  var root = document.getElementById('odd-ba2026');\n  if (!root) return;\n\n  \/\/ Each tile: {tw, cn, py:[syllable per character, same length as tw\/cn]}.\n  \/\/ \"answers\" is a list of accepted tile-index orders (into that step's\n  \/\/ tiles array) \u2014 usually just one, but a step may accept more than one\n  \/\/ valid word order. Any tile index that never appears in any accepted\n  \/\/ answer is a distractor \u2014 usually the extra \u628a, included even when\n  \/\/ the sentence doesn't need it.\n\n  \/\/ Builds a dual trad\/simp inline span pair for a Chinese word inside an\n  \/\/ explanation string. Only needed where the word actually differs\n  \/\/ between scripts (e.g. \u6771\u897f\/\u4e1c\u897f) \u2014 invariant characters like \u5b83 or \u628a\n  \/\/ are just written directly in the explanation text.\n  function zh(trad, simp){\n    return '<span class=\"jcz-zh-tw\">'+trad+'<\/span><span class=\"jcz-zh-cn\">'+simp+'<\/span>';\n  }\n\n  var STEPS = [\n    { title:\"Rob Brings Fruit\", context:'Rob, Sam, and Jonathan are all good friends of Tiffany\\'s. Today she\\'s invited them over to make dumplings together. Rob says, \"I brought some fruit!\"',\n      tiles:[\n        {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]}, {tw:\"\u5e36\",cn:\"\u5e26\",py:[\"d\u00e0i\"]}, {tw:\"\u4e86\",cn:\"\u4e86\",py:[\"le\"]},\n        {tw:\"\u4e00\u4e9b\",cn:\"\u4e00\u4e9b\",py:[\"y\u00ec\",\"xi\u0113\"]}, {tw:\"\u6c34\u679c\",cn:\"\u6c34\u679c\",py:[\"shu\u01d0\",\"gu\u01d2\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}\n      ],\n      answers:[[0,1,2,3,4]],\n      explanation:'No \u628a here \u2014 \"some fruit\" is general, not a specific item the listener already has in mind, so there\\'s nothing definite for \u628a to front.' },\n\n    { title:\"Sam's Surprise Guest\", context:'Sam says, \"Umm\u2026 I brought my husband!\"',\n      tiles:[\n        {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u6211\u7684\",cn:\"\u6211\u7684\",py:[\"w\u01d2\",\"de\"]},\n        {tw:\"\u8001\u516c\",cn:\"\u8001\u516c\",py:[\"l\u01ceo\",\"g\u014dng\"]}, {tw:\"\u5e36\u4f86\",cn:\"\u5e26\u6765\",py:[\"d\u00e0i\",\"l\u00e1i\"]}, {tw:\"\u4e86\",cn:\"\u4e86\",py:[\"le\"]}\n      ],\n      answers:[[0,1,2,3,4,5]],\n      explanation:'\u628a is needed \u2014 \"\u6211\u7684\u8001\u516c\" is a specific, known person, and the sentence is about what happened to him: he got brought along.' },\n\n    { title:\"Jonathan's Sake\", context:'Jonathan says, \"I brought some really tasty sake!\"',\n      tiles:[\n        {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]}, {tw:\"\u5e36\",cn:\"\u5e26\",py:[\"d\u00e0i\"]}, {tw:\"\u4e86\",cn:\"\u4e86\",py:[\"le\"]},\n        {tw:\"\u975e\u5e38\",cn:\"\u975e\u5e38\",py:[\"f\u0113i\",\"ch\u00e1ng\"]}, {tw:\"\u597d\u559d\",cn:\"\u597d\u559d\",py:[\"h\u01ceo\",\"h\u0113\"]}, {tw:\"\u7684\",cn:\"\u7684\",py:[\"de\"]},\n        {tw:\"\u9152\",cn:\"\u9152\",py:[\"ji\u01d4\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}\n      ],\n      answers:[[0,1,2,3,4,5,6]],\n      explanation:'No \u628a here \u2014 this isn\\'t a specific bottle the listener already knows about; they have no idea which sake Jonathan brought, so \u628a doesn\\'t apply.' },\n\n    { title:\"Setting Things Down\", context:'Tiffany smiles: \"You\\'re all too polite! Come on, let\\'s make dumplings together \u2014 just put your things on that table for now.\"',\n      tiles:[\n        {tw:\"\u4f60\u5011\",cn:\"\u4f60\u4eec\",py:[\"n\u01d0\",\"men\"]}, {tw:\"\u53ef\u4ee5\",cn:\"\u53ef\u4ee5\",py:[\"k\u011b\",\"y\u01d0\"]}, {tw:\"\u5148\",cn:\"\u5148\",py:[\"xi\u0101n\"]},\n        {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u6771\u897f\",cn:\"\u4e1c\u897f\",py:[\"d\u014dng\",\"x\u012b\"]}, {tw:\"\u653e\",cn:\"\u653e\",py:[\"f\u00e0ng\"]},\n        {tw:\"\u5728\",cn:\"\u5728\",py:[\"z\u00e0i\"]}, {tw:\"\u90a3\u500b\",cn:\"\u90a3\u4e2a\",py:[\"n\u00e0\",\"ge\"]}, {tw:\"\u684c\u5b50\",cn:\"\u684c\u5b50\",py:[\"zhu\u014d\",\"zi\"]}, {tw:\"\u4e0a\",cn:\"\u4e0a\",py:[\"sh\u00e0ng\"]}\n      ],\n      answers:[[0,1,2,3,4,5,6,7,8,9]],\n      explanation:'\u628a is needed \u2014 \"'+zh('\u6771\u897f','\u4e1c\u897f')+'\" refers to the specific things they\\'re carrying, and the sentence states the result: where those things end up.' },\n\n    { title:\"Chilling the Sake\", context:'Jonathan says the sake tastes better cold, and wants to put it in the fridge first.',\n      tiles:[\n        {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]}, {tw:\"\u60f3\",cn:\"\u60f3\",py:[\"xi\u01ceng\"]}, {tw:\"\u5148\",cn:\"\u5148\",py:[\"xi\u0101n\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]},\n        {tw:\"\u5b83\",cn:\"\u5b83\",py:[\"t\u0101\"]}, {tw:\"\u653e\",cn:\"\u653e\",py:[\"f\u00e0ng\"]}, {tw:\"\u5728\",cn:\"\u5728\",py:[\"z\u00e0i\"]}, {tw:\"\u51b0\u7bb1\",cn:\"\u51b0\u7bb1\",py:[\"b\u012bng\",\"xi\u0101ng\"]}\n      ],\n      answers:[[0,1,2,3,4,5,6,7]],\n      explanation:'\u628a is needed \u2014 \"\u5b83\" (the sake) is a specific bottle already mentioned, and the sentence gives its resulting location: the fridge.' },\n\n    { title:\"The Chewed-Up Charger\", context:'Tiffany asks Sam if she found the charger left behind last time. Sam says she found it \u2014 but her dog chewed it up.',\n      tiles:[\n        {tw:\"\u6211\u7684\",cn:\"\u6211\u7684\",py:[\"w\u01d2\",\"de\"]}, {tw:\"\u72d7\",cn:\"\u72d7\",py:[\"g\u01d2u\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]},\n        {tw:\"\u5b83\",cn:\"\u5b83\",py:[\"t\u0101\"]}, {tw:\"\u54ac\u58de\",cn:\"\u54ac\u574f\",py:[\"y\u01ceo\",\"hu\u00e0i\"]}, {tw:\"\u4e86\",cn:\"\u4e86\",py:[\"le\"]}\n      ],\n      answers:[[0,1,2,3,4,5]],\n      explanation:'\u628a is needed \u2014 \"\u5b83\" (the charger) is specific and already known, and the sentence describes exactly what happened to it: chewed up.' },\n\n    { title:\"A Replacement Charger\", context:'\"So we bought you a new one.\"',\n      tiles:[\n        {tw:\"\u6211\u5011\",cn:\"\u6211\u4eec\",py:[\"w\u01d2\",\"men\"]}, {tw:\"\u8cb7\",cn:\"\u4e70\",py:[\"m\u01cei\"]}, {tw:\"\u4e00\u500b\",cn:\"\u4e00\u4e2a\",py:[\"y\u00ed\",\"ge\"]},\n        {tw:\"\u65b0\u7684\",cn:\"\u65b0\u7684\",py:[\"x\u012bn\",\"de\"]}, {tw:\"\u7d66\",cn:\"\u7ed9\",py:[\"g\u011bi\"]}, {tw:\"\u4f60\",cn:\"\u4f60\",py:[\"n\u01d0\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}\n      ],\n      answers:[[0,1,2,3,4,5]],\n      explanation:'No \u628a here \u2014 \"'+zh('\u4e00\u500b\u65b0\u7684','\u4e00\u4e2a\u65b0\u7684')+'\" is a brand-new charger that didn\\'t exist yet in the conversation, not a specific, already-known item, so \u628a doesn\\'t fit.' },\n\n    { title:\"Grab a Wrapper\", context:'\"Got it! Everyone come over and let\\'s start making dumplings. First, grab a dumpling wrapper.\"',\n      tiles:[\n        {tw:\"\u62ff\",cn:\"\u62ff\",py:[\"n\u00e1\"]}, {tw:\"\u4e00\u5f35\",cn:\"\u4e00\u5f20\",py:[\"y\u00ec\",\"zh\u0101ng\"]}, {tw:\"\u9903\u5b50\u76ae\",cn:\"\u997a\u5b50\u76ae\",py:[\"ji\u01ceo\",\"zi\",\"p\u00ed\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}\n      ],\n      answers:[[0,1,2]],\n      explanation:'No \u628a here \u2014 \"'+zh('\u4e00\u5f35\u9903\u5b50\u76ae','\u4e00\u5f20\u997a\u5b50\u76ae')+'\" is just any wrapper from the stack, not one already singled out, so there\\'s nothing definite for \u628a to front.' },\n\n    { title:\"Adding the Filling\", context:'\"And then scoop a bit of filling and place it on the wrapper.\"',\n      tiles:[\n        {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u9921\",cn:\"\u9985\",py:[\"xi\u00e0n\"]}, {tw:\"\u653e\",cn:\"\u653e\",py:[\"f\u00e0ng\"]},\n        {tw:\"\u5728\",cn:\"\u5728\",py:[\"z\u00e0i\"]}, {tw:\"\u9903\u5b50\u76ae\",cn:\"\u997a\u5b50\u76ae\",py:[\"ji\u01ceo\",\"zi\",\"p\u00ed\"]}, {tw:\"\u4e0a\",cn:\"\u4e0a\",py:[\"sh\u00e0ng\"]}\n      ],\n      answers:[[0,1,2,3,4,5]],\n      explanation:'\u628a is needed \u2014 \"'+zh('\u9921','\u9985')+'\" is the specific spoonful just scooped, and the sentence states the result: where it ends up on the wrapper.' },\n\n    { title:\"Folding the Dumpling\", context:'\"Then fold it up like this.\"',\n      tiles:[\n        {tw:\"\u50cf\",cn:\"\u50cf\",py:[\"xi\u00e0ng\"]}, {tw:\"\u9019\u6a23\",cn:\"\u8fd9\u6837\",py:[\"zh\u00e8\",\"y\u00e0ng\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]},\n        {tw:\"\u5b83\",cn:\"\u5b83\",py:[\"t\u0101\"]}, {tw:\"\u5305\",cn:\"\u5305\",py:[\"b\u0101o\"]}, {tw:\"\u8d77\u4f86\",cn:\"\u8d77\u6765\",py:[\"q\u01d0\",\"l\u00e1i\"]}\n      ],\n      answers:[[0,1,2,3,4,5],[2,3,0,1,4,5]],\n      explanation:'\u628a is needed \u2014 \"\u5b83\" (the dumpling being folded) is specific, and \"'+zh('\u5305\u8d77\u4f86','\u5305\u8d77\u6765')+'\" describes the result: how it ends up folded. Both \"'+zh('\u50cf\u9019\u6a23\u628a\u5b83\u5305\u8d77\u4f86','\u50cf\u8fd9\u6837\u628a\u5b83\u5305\u8d77\u6765')+'\" and \"'+zh('\u628a\u5b83\u50cf\u9019\u6a23\u5305\u8d77\u4f86','\u628a\u5b83\u50cf\u8fd9\u6837\u5305\u8d77\u6765')+'\" work here \u2014 \u628a just needs to come right before \u5b83.' },\n\n    { title:\"How Many Dumplings?\", context:'\"Rob, you\\'re amazing \u2014 you turned your dumplings into xiaolongbao! Sam, yours are huge \u2014 how many are you planning to eat?\"',\n      tiles:[\n        {tw:\"\u4f60\",cn:\"\u4f60\",py:[\"n\u01d0\"]}, {tw:\"\u6253\u7b97\",cn:\"\u6253\u7b97\",py:[\"d\u01ce\",\"su\u00e0n\"]}, {tw:\"\u5403\",cn:\"\u5403\",py:[\"ch\u012b\"]},\n        {tw:\"\u5e7e\",cn:\"\u51e0\",py:[\"j\u01d0\"]}, {tw:\"\u9846\",cn:\"\u9897\",py:[\"k\u0113\"]}, {tw:\"\u9903\u5b50\",cn:\"\u997a\u5b50\",py:[\"ji\u01ceo\",\"zi\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}\n      ],\n      answers:[[0,1,2,3,4,5]],\n      explanation:'No \u628a here \u2014 \"'+zh('\u5e7e\u9846\u9903\u5b50','\u51e0\u9897\u997a\u5b50')+'\" is an unknown quantity being asked about, not a specific set already identified, so \u628a doesn\\'t apply.' },\n\n    { title:\"Eating Every Last One\", context:'\"I\\'m planning to eat every dumpling I made!\"',\n      tiles:[\n        {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]}, {tw:\"\u6253\u7b97\",cn:\"\u6253\u7b97\",py:[\"d\u01ce\",\"su\u00e0n\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u6211\",cn:\"\u6211\",py:[\"w\u01d2\"]},\n        {tw:\"\u5305\",cn:\"\u5305\",py:[\"b\u0101o\"]}, {tw:\"\u7684\",cn:\"\u7684\",py:[\"de\"]}, {tw:\"\u9903\u5b50\",cn:\"\u997a\u5b50\",py:[\"ji\u01ceo\",\"zi\"]},\n        {tw:\"\u5168\",cn:\"\u5168\",py:[\"qu\u00e1n\"]}, {tw:\"\u5403\u6389\",cn:\"\u5403\u6389\",py:[\"ch\u012b\",\"di\u00e0o\"]}\n      ],\n      answers:[[0,1,2,3,4,5,6,7,8]],\n      explanation:'\u628a is needed \u2014 \"'+zh('\u6211\u5305\u7684\u9903\u5b50','\u6211\u5305\u7684\u997a\u5b50')+'\" is a specific, already-identified batch, and the sentence states their fate: all eaten.' },\n\n    { title:\"Don't Tear the Wrapper\", context:'\"Jonathan, be gentle \u2014 don\\'t tear the wrapper.\"',\n      tiles:[\n        {tw:\"\u5225\",cn:\"\u522b\",py:[\"bi\u00e9\"]}, {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u9903\u5b50\u76ae\",cn:\"\u997a\u5b50\u76ae\",py:[\"ji\u01ceo\",\"zi\",\"p\u00ed\"]}, {tw:\"\u634f\u7834\",cn:\"\u634f\u7834\",py:[\"ni\u0113\",\"p\u00f2\"]}\n      ],\n      answers:[[0,1,2,3]],\n      explanation:'\u628a is needed \u2014 \"'+zh('\u9903\u5b50\u76ae','\u997a\u5b50\u76ae')+'\" is the specific wrapper in Jonathan\\'s hand right now, and the sentence warns about a result: tearing it.' },\n\n    { title:\"Into the Pot\", context:'\"Now, drop the dumplings you made into the boiling water and let them cook.\" Then it\\'s finally time to eat!',\n      tiles:[\n        {tw:\"\u628a\",cn:\"\u628a\",py:[\"b\u01ce\"]}, {tw:\"\u4f60\u5011\",cn:\"\u4f60\u4eec\",py:[\"n\u01d0\",\"men\"]}, {tw:\"\u5305\",cn:\"\u5305\",py:[\"b\u0101o\"]}, {tw:\"\u7684\",cn:\"\u7684\",py:[\"de\"]},\n        {tw:\"\u9903\u5b50\",cn:\"\u997a\u5b50\",py:[\"ji\u01ceo\",\"zi\"]}, {tw:\"\u653e\",cn:\"\u653e\",py:[\"f\u00e0ng\"]}, {tw:\"\u9032\",cn:\"\u8fdb\",py:[\"j\u00ecn\"]},\n        {tw:\"\u71b1\u6c34\",cn:\"\u70ed\u6c34\",py:[\"r\u00e8\",\"shu\u01d0\"]}, {tw:\"\u88e1\",cn:\"\u91cc\",py:[\"l\u01d0\"]}, {tw:\"\u716e\",cn:\"\u716e\",py:[\"zh\u01d4\"]}\n      ],\n      answers:[[0,1,2,3,4,5,6,7,8,9]],\n      explanation:'\u628a is needed \u2014 \"'+zh('\u4f60\u5011\u5305\u7684\u9903\u5b50','\u4f60\u4eec\u5305\u7684\u997a\u5b50')+'\" is a specific, known batch, and the sentence states where they end up: into the water to cook.' }\n  ];\n\n  var total = STEPS.length, solved = 0;\n  document.getElementById('jcz-total').textContent = total;\n\n  function tileHTML(t, stepIdx, tileIdx){\n    var pinyin = t.py.join(\" \");\n    var tw = '<ruby><span class=\"rb\">'+t.tw+'<\/span><rt>'+pinyin+'<\/rt><\/ruby>';\n    var cn = '<ruby><span class=\"rb\">'+t.cn+'<\/span><rt>'+pinyin+'<\/rt><\/ruby>';\n    return '<button class=\"jcz-tile\" data-step=\"'+stepIdx+'\" data-tile=\"'+tileIdx+'\">'+\n      '<span class=\"jcz-zh-tw\">'+tw+'<\/span><span class=\"jcz-zh-cn\">'+cn+'<\/span>'+\n    '<\/button>';\n  }\n\n  \/\/ Fisher-Yates shuffle of [0..n-1]. Used only to decide the on-screen\n  \/\/ order tiles are laid out in the pool \u2014 tileIdx (the index into a\n  \/\/ step's own tiles array) stays exactly as-is, so answer-checking and\n  \/\/ answer-key mode are completely unaffected by shuffling.\n  function shuffledIndices(n){\n    var arr = [];\n    for (var i = 0; i < n; i++){ arr.push(i); }\n    for (var i = arr.length - 1; i > 0; i--){\n      var j = Math.floor(Math.random() * (i + 1));\n      var tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;\n    }\n    return arr;\n  }\n\n  function buildStepHTML(step, idx){\n    var poolOrder = shuffledIndices(step.tiles.length);\n    var poolTiles = poolOrder.map(function(i){ return tileHTML(step.tiles[i], idx, i); }).join(\"\");\n    return '<div class=\"jcz-step\" data-step=\"'+idx+'\">'+\n      '<div class=\"jcz-step-head\"><span class=\"jcz-step-num\">Step '+(idx+1)+'<\/span>'+\n      '<h3 class=\"jcz-step-title\">'+step.title+'<\/h3><\/div>'+\n      '<p class=\"jcz-step-context\">'+step.context+'<\/p>'+\n      '<div class=\"jcz-builder\" data-step=\"'+idx+'\"><span class=\"jcz-builder-placeholder\">Tap tiles below to build the sentence\u2026<\/span><\/div>'+\n      '<span class=\"jcz-wrong-msg\">Not quite \u2014 try again<\/span>'+\n      '<div class=\"jcz-pool\" data-step=\"'+idx+'\">'+poolTiles+'<\/div>'+\n      '<div class=\"jcz-explain\"><b>Why'+(step.explanation.indexOf(\"No \u628a\")===0?\" no \u628a\":\" \u628a\")+'?<\/b> '+step.explanation+'<\/div>'+\n    '<\/div>';\n  }\n\n  document.getElementById('jcz-steps').innerHTML = STEPS.map(buildStepHTML).join(\"\");\n\n  \/\/ Keep the dynamically-rendered tiles in sync with the site's real\n  \/\/ Text Display (Traditional\/Simplified) switch. Rather than guessing\n  \/\/ what class or mechanism the site's switch uses, read the computed\n  \/\/ style of a real, site-controlled reference pair (the hero title's\n  \/\/ lang-zh-TW \/ lang-zh-CN spans, which the site's own global CSS\n  \/\/ already governs) and mirror that state onto data-jcz-script here.\n  \/\/ The tiles themselves use their own private jcz-zh-tw \/ jcz-zh-cn\n  \/\/ classes (see tileHTML below) rather than the site's shared\n  \/\/ lang-zh-TW \/ lang-zh-CN classes, specifically so the site's own\n  \/\/ switch script never detects or touches them.\n  function syncDisplayState(){\n    var refTrad = root.querySelector('.jcz-title .lang-zh-TW');\n    var refSimp = root.querySelector('.jcz-title .lang-zh-CN');\n    var scriptMode = 'trad';\n    if (refTrad){\n      if (refSimp){\n        var tradVisible = getComputedStyle(refTrad).display !== 'none';\n        var simpVisible = getComputedStyle(refSimp).display !== 'none';\n        if (simpVisible){\n          if (!tradVisible){\n            scriptMode = 'simp';\n          }\n        }\n      }\n    }\n    root.setAttribute('data-jcz-script', scriptMode);\n  }\n  syncDisplayState();\n  new MutationObserver(syncDisplayState).observe(document.documentElement, {attributes:true, subtree:true, attributeFilter:['class']});\n  setInterval(syncDisplayState, 800);\n\n  \/\/ per-step runtime state: the ordered list of tile indices currently in the builder\n  var builderState = STEPS.map(function(){ return []; });\n\n  \/\/ All of a step's accepted answers are alternate word-orders of the\n  \/\/ same tiles, so they always share the same length.\n  function answerLength(step){\n    return step.answers[0].length;\n  }\n  function ordersMatch(order, answer){\n    if (order.length !== answer.length) return false;\n    for (var i = 0; i < order.length; i++){\n      if (order[i] !== answer[i]) return false;\n    }\n    return true;\n  }\n  function isAnyAnswerMatch(order, step){\n    for (var i = 0; i < step.answers.length; i++){\n      if (ordersMatch(order, step.answers[i])) return true;\n    }\n    return false;\n  }\n\n  function updateScore(){\n    document.getElementById('jcz-solved').textContent = solved;\n  }\n\n  function renderBuilder(stepIdx){\n    var step = STEPS[stepIdx];\n    var stepEl = root.querySelector('.jcz-step[data-step=\"'+stepIdx+'\"]');\n    var builderEl = stepEl.querySelector('.jcz-builder');\n    var order = builderState[stepIdx];\n    if (order.length === 0){\n      builderEl.innerHTML = '<span class=\"jcz-builder-placeholder\">Tap tiles below to build the sentence\u2026<\/span>';\n    } else {\n      builderEl.innerHTML = order.map(function(tileIdx){ return tileHTML(step.tiles[tileIdx], stepIdx, tileIdx); }).join(\"\");\n    }\n    \/\/ gray out placed tiles in the pool\n    var poolEl = stepEl.querySelector('.jcz-pool');\n    poolEl.querySelectorAll('.jcz-tile').forEach(function(btn){\n      var ti = parseInt(btn.getAttribute('data-tile'), 10);\n      btn.classList.toggle('placed', order.indexOf(ti) !== -1);\n    });\n    poolEl.classList.toggle('disabled', order.length >= answerLength(step));\n  }\n\n  function checkStep(stepIdx){\n    var step = STEPS[stepIdx];\n    var order = builderState[stepIdx];\n    var neededLength = answerLength(step);\n    if (order.length < neededLength) return;\n    var stepEl = root.querySelector('.jcz-step[data-step=\"'+stepIdx+'\"]');\n    var builderEl = stepEl.querySelector('.jcz-builder');\n    \/\/ order.length is guaranteed === neededLength here: checkStep only\n    \/\/ runs after a push, and the click handler never lets order grow past\n    \/\/ neededLength, so the tile-count check above is sufficient.\n    var isCorrect = isAnyAnswerMatch(order, step);\n    if (isCorrect){\n      builderEl.classList.add('solved');\n      stepEl.classList.add('solved');\n      solved++;\n      updateScore();\n    } else {\n      builderEl.classList.add('wrong');\n      var msg = stepEl.querySelector('.jcz-wrong-msg');\n      msg.classList.add('show');\n      setTimeout(function(){\n        builderEl.classList.remove('wrong');\n        msg.classList.remove('show');\n      }, 900);\n    }\n  }\n\n  root.addEventListener('click', function(e){\n    var poolBtn = e.target.closest('.jcz-pool .jcz-tile');\n    if (poolBtn){\n      var stepIdx = parseInt(poolBtn.getAttribute('data-step'), 10);\n      var stepEl = root.querySelector('.jcz-step[data-step=\"'+stepIdx+'\"]');\n      if (stepEl.classList.contains('solved')) return;\n      var tileIdx = parseInt(poolBtn.getAttribute('data-tile'), 10);\n      var order = builderState[stepIdx];\n      if (order.length >= answerLength(STEPS[stepIdx]) || order.indexOf(tileIdx) !== -1) return;\n      order.push(tileIdx);\n      renderBuilder(stepIdx);\n      checkStep(stepIdx);\n      return;\n    }\n    var builderBtn = e.target.closest('.jcz-builder .jcz-tile');\n    if (builderBtn){\n      var bStepIdx = parseInt(builderBtn.getAttribute('data-step'), 10);\n      var bStepEl = root.querySelector('.jcz-step[data-step=\"'+bStepIdx+'\"]');\n      if (bStepEl.classList.contains('solved')) return;\n      var bTileIdx = parseInt(builderBtn.getAttribute('data-tile'), 10);\n      var bOrder = builderState[bStepIdx];\n      var pos = bOrder.indexOf(bTileIdx);\n      if (pos !== -1){\n        bOrder.splice(pos, 1);\n        renderBuilder(bStepIdx);\n      }\n      return;\n    }\n  });\n\n  document.getElementById('jcz-reset').addEventListener('click', function(){\n    STEPS.forEach(function(step, idx){\n      builderState[idx] = [];\n      var stepEl = root.querySelector('.jcz-step[data-step=\"'+idx+'\"]');\n      stepEl.classList.remove('solved');\n      stepEl.querySelector('.jcz-builder').classList.remove('solved','wrong');\n      renderBuilder(idx);\n    });\n    solved = 0;\n    updateScore();\n  });\n\n  function applyKeyMode(on){\n    STEPS.forEach(function(step, idx){\n      var stepEl = root.querySelector('.jcz-step[data-step=\"'+idx+'\"]');\n      var builderEl = stepEl.querySelector('.jcz-builder');\n      if (on){\n        builderEl.innerHTML = step.answers[0].map(function(tileIdx){ return tileHTML(step.tiles[tileIdx], idx, tileIdx); }).join(\"\");\n        stepEl.classList.add('solved');\n      } else if (!builderEl.classList.contains('solved') || builderState[idx].length !== answerLength(step)){\n        \/\/ restore quiz-mode view for steps not actually solved by the user\n        var reallySolved = false;\n        if (builderState[idx].length === answerLength(step)){\n          reallySolved = isAnyAnswerMatch(builderState[idx], step);\n        }\n        stepEl.classList.toggle('solved', reallySolved);\n        renderBuilder(idx);\n      }\n    });\n  }\n\n  var seg = root.querySelector('.jcz-seg[data-role=\"mode\"]');\n  seg.addEventListener('click', function(e){\n    var b = e.target.closest('button');\n    if (!b) return;\n    seg.querySelectorAll('button').forEach(function(x){ x.classList.remove('active'); });\n    b.classList.add('active');\n    var isKey = b.getAttribute('data-val') === 'key';\n    root.classList.toggle('mode-key', isKey);\n    applyKeyMode(isKey);\n  });\n\n  var enSeg = root.querySelector('.jcz-seg[data-role=\"english\"]');\n  enSeg.addEventListener('click', function(e){\n    var b = e.target.closest('button');\n    if (!b) return;\n    enSeg.querySelectorAll('button').forEach(function(x){ x.classList.remove('active'); });\n    b.classList.add('active');\n    root.classList.toggle('hide-en', b.getAttribute('data-val') === 'hide');\n  });\n\n  updateScore();\n})();\n<\/script>\n\n\n\n<div style=\"height:17px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-medium is-resized\"><a href=\"https:\/\/ko-fi.com\/tiffanystalk\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"58\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png\" alt=\"\" class=\"wp-image-570\" style=\"width:150px;height:29px\" srcset=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png 300w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-600x115.png 600w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-1024x197.png 1024w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-768x148.png 768w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-1536x296.png 1536w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-2048x394.png 2048w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-850x164.png 850w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">Do you like it? \ud83d\ude42<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/tiffanysmandarin.com\/index.php\/grammar\/\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"86\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png\" alt=\"\" class=\"wp-image-571\" style=\"width:150px;height:43px\" srcset=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png 300w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-600x171.png 600w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png 700w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Grammar Practice \u00b7 Sentence Structure \u628a\u628a b\u01ce or Not Practice The \u628a b\u01ce construction moves the object in front of the verb: \u628a + object + verb (+ result). It&#8217;s used when a sentence describes what happens to a specific, already-known thing \u2014 moving it, placing it, finishing it off, breaking it. A general or&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[14,13],"tags":[204,206],"class_list":["post-7619","post","type-post","status-publish","format-standard","hentry","category-hsk3","category-hsk4","tag-ba","tag-206"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Use \u628a b\u01ce or not Practice - OneDotDot Chinese<\/title>\n<meta name=\"description\" content=\"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Use \u628a b\u01ce or not Practice - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-12T16:19:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-29T04:17:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/10\/throw_stone_pond.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"tiffany\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tiffany\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/\"},\"author\":{\"name\":\"tiffany\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"headline\":\"Use \u628a b\u01ce or not Practice\",\"datePublished\":\"2023-05-12T16:19:47+00:00\",\"dateModified\":\"2026-08-29T04:17:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/\"},\"wordCount\":126,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/fcacd-buymeacoffee_red402x-300x58.png\",\"keywords\":[\"ba\",\"\u628a\"],\"articleSection\":[\"HSK 3\",\"HSK 4\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/\",\"name\":\"Use \u628a b\u01ce or not Practice - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/fcacd-buymeacoffee_red402x-300x58.png\",\"datePublished\":\"2023-05-12T16:19:47+00:00\",\"dateModified\":\"2026-08-29T04:17:19+00:00\",\"description\":\"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/fcacd-buymeacoffee_red402x.png\",\"contentUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/fcacd-buymeacoffee_red402x.png\",\"width\":3050,\"height\":587},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2023\\\/05\\\/13\\\/ba-practice\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use \u628a b\u01ce or not Practice\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\",\"name\":\"OneDotDot Chinese\",\"description\":\"Learn a little Chinese every day\",\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tiffanysmandarin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\",\"name\":\"tiffany\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"url\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"contentUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"width\":214,\"height\":214,\"caption\":\"tiffany\"},\"logo\":{\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/tiffanys_talk\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tiffany-huang-mandarin\\\/\"],\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/author\\\/tiffany\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Use \u628a b\u01ce or not Practice - OneDotDot Chinese","description":"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/","og_locale":"en_US","og_type":"article","og_title":"Use \u628a b\u01ce or not Practice - OneDotDot Chinese","og_description":"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/","og_site_name":"OneDotDot Chinese","article_published_time":"2023-05-12T16:19:47+00:00","article_modified_time":"2026-08-29T04:17:19+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/10\/throw_stone_pond.png","type":"image\/png"}],"author":"tiffany","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tiffany","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#article","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/"},"author":{"name":"tiffany","@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"headline":"Use \u628a b\u01ce or not Practice","datePublished":"2023-05-12T16:19:47+00:00","dateModified":"2026-08-29T04:17:19+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/"},"wordCount":126,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png","keywords":["ba","\u628a"],"articleSection":["HSK 3","HSK 4"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/","name":"Use \u628a b\u01ce or not Practice - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#primaryimage"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png","datePublished":"2023-05-12T16:19:47+00:00","dateModified":"2026-08-29T04:17:19+00:00","description":"Improve your Chinese skills with our \u628a b\u01ce practice. Master the language component with our range of exercises and examples.","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#primaryimage","url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x.png","contentUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x.png","width":3050,"height":587},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2023\/05\/13\/ba-practice\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"Use \u628a b\u01ce or not Practice"}]},{"@type":"WebSite","@id":"https:\/\/tiffanysmandarin.com\/#website","url":"https:\/\/tiffanysmandarin.com\/","name":"OneDotDot Chinese","description":"Learn a little Chinese every day","publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tiffanysmandarin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99","name":"tiffany","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","contentUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","width":214,"height":214,"caption":"tiffany"},"logo":{"@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png"},"sameAs":["https:\/\/www.instagram.com\/tiffanys_talk\/","https:\/\/www.linkedin.com\/in\/tiffany-huang-mandarin\/"],"url":"https:\/\/tiffanysmandarin.com\/index.php\/author\/tiffany\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/7619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/comments?post=7619"}],"version-history":[{"count":8,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/7619\/revisions"}],"predecessor-version":[{"id":16164,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/7619\/revisions\/16164"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=7619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/categories?post=7619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/tags?post=7619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}