PageSourceSearch

https://hanabi.github.io/assets/js/e170ca5b.26047eb2.js

js hanabi.github.io collected 2026-10-03 09:19:31 UTC 18,304 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkhanabi_github_io=self.webpackChunkhanabi_github_io||[]).push([["8474"],{28521(e,t,i){i.r(t),i.d(t,{metadata:()=>es,default:()=>ek,frontMatter:()=>ey,contentTitle:()=>ew,toc:()=>eE,assets:()=>ev});var r,l,a,n,s,c,h,o,m,d,u,g,x,f,p,y,w,v,E,b,k,j,N,A,_,H,T,C,B,S,q,O,P,I,z,G,D,M,$,Q,V,F,L,R,U,W,X,J,Y,K,Z,ee,et,ei,er,el,ea,en,es=JSON.parse('{"id":"beginner/good-touch-principle-question-2","title":"Good Touch Principle (Question 2)","description":"<Tabs","source":"@site/docs/beginner/good-touch-principle-question-2.mdx","sourceDirName":"beginner","slug":"/beginner/good-touch-principle-question-2","permalink":"/beginner/good-touch-principle-question-2","draft":false,"unlisted":false,"editUrl":"https://github.com/hanabi/hanabi.github.io/edit/main/docs/beginner/good-touch-principle-question-2.mdx","tags":[],"version":"current","frontMatter":{"title":"Good Touch Principle (Question 2)"},"sidebar":"mainSidebar","previous":{"title":"Good Touch Principle (Question 1)","permalink":"/beginner/good-touch-principle-question-1"},"next":{"title":"Good Touch Principle (Question 3)","permalink":"/beginner/good-touch-principle-question-3"}}'),ec=i(74848),eh=i(28453),eo=i(14220),em=i(50773),ed=i(57250),eu=i(96540);function eg(){return(eg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)({}).hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(null,arguments)}let ex=e=>eu.createElement("svg",eg({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:944,height:375,baseProfile:"full",viewBox:"0 0 944 375",className:"example"},e),r||(r=eu.createElement("defs",null,eu.createElement("filter",{id:"good-touch-principle-question-2_yml__a",width:1,height:1,x:0,y:0},eu.createElement("feFlood",{floodColor:"#0ff"})))),l||(l=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red1.svg",width:70,height:100})),a||(a=eu.createElement("image",{xlinkHref:"/img/pieces/cards/yellow0.svg",width:70,height:100,x:78})),n||(n=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green0.svg",width:70,height:100,x:156})),s||(s=eu.createElement("image",{xlinkHref:"/img/pieces/cards/blue3.svg",width:70,height:100,x:234})),c||(c=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple3.svg",width:70,height:100,x:312})),eu.createElement("svg",eg({width:90,height:100,x:464,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Alice"),h||(h=eu.createElement("text",{x:"0%",y:"50%",dominantBaseline:"central",dy:30,filter:"url(#good-touch-principle-question-2_yml__a)"},"Clue Giver")),o||(o=eu.createElement("text",{x:"0%",y:"50%",dominantBaseline:"central",dy:30},"Clue Giver"))),eu.createElement("svg",eg({width:70,height:100,x:554,className:"example"},e),m||(m=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",eg({width:70,height:100,x:632,className:"example"},e),d||(d=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",eg({width:70,height:100,x:710,className:"example"},e),u||(u=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",eg({width:70,height:100,x:788,className:"example"},e),g||(g=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",eg({width:70,height:100,x:866,className:"example"},e),x||(x=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",eg({width:90,height:100,x:464,y:125,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Bob")),f||(f=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple1.svg",width:70,height:100,x:554,y:125})),p||(p=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple5.svg",width:70,height:100,x:632,y:125})),y||(y=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red4.svg",width:70,height:100,x:710,y:125})),w||(w=eu.createElement("image",{xlinkHref:"/img/pieces/cards/blue1.svg",width:70,height:100,x:788,y:125})),v||(v=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red2.svg",width:70,height:100,x:866,y:125})),eu.createElement("svg",eg({width:90,height:100,x:464,y:250,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Cathy")),E||(E=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green2.svg",width:70,height:100,x:554,y:250})),b||(b=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple2.svg",width:70,height:100,x:632,y:250})),k||(k=eu.createElement("rect",{width:76,height:106,x:707,y:247,fill:"orange",rx:5,ry:5})),j||(j=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red3.svg",width:70,height:100,x:710,y:250})),N||(N=eu.createElement("rect",{width:76,height:106,x:785,y:247,fill:"orange",rx:5,ry:5})),A||(A=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red4.svg",width:70,height:100,x:788,y:250})),_||(_=eu.createElement("rect",{width:76,height:106,x:863,y:247,fill:"orange",rx:5,ry:5})),H||(H=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green3.svg",width:70,height:100,x:866,y:250})));function ef(){return(ef=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)({}).hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(null,arguments)}let ep=e=>eu.createElement("svg",ef({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:944,height:410,baseProfile:"full",viewBox:"0 0 944 410",className:"example"},e),T||(T=eu.createElement("defs",null,eu.createElement("filter",{id:"good-touch-principle-answer-2_yml__a",width:1,height:1,x:0,y:0},eu.createElement("feFlood",{floodColor:"#0ff"})),eu.createElement("filter",{id:"good-touch-principle-answer-2_yml__b"},eu.createElement("feOffset",{dx:2,dy:2,in:"SourceAlpha",result:"offsetblur"}),eu.createElement("feComponentTransfer",{result:"shadow"},eu.createElement("feFuncA",{slope:.5,type:"linear"})),eu.createElement("feMorphology",{in:"SourceAlpha",operator:"dilate",radius:1,result:"border"}),eu.createElement("feMerge",null,eu.createElement("feMergeNode",{in:"shadow"}),eu.createElement("feMergeNode",{in:"border"}),eu.createElement("feMergeNode",{in:"SourceGraphic"}))))),C||(C=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red1.svg",width:70,height:100})),B||(B=eu.createElement("image",{xlinkHref:"/img/pieces/cards/yellow0.svg",width:70,height:100,x:78})),S||(S=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green0.svg",width:70,height:100,x:156})),q||(q=eu.createElement("image",{xlinkHref:"/img/pieces/cards/blue3.svg",width:70,height:100,x:234})),O||(O=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple3.svg",width:70,height:100,x:312})),eu.createElement("svg",ef({width:90,height:100,x:464,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Alice"),P||(P=eu.createElement("text",{x:"0%",y:"50%",dominantBaseline:"central",dy:30,filter:"url
1(#good-touch-principle-answer-2_yml__a)"},"Clue Giver")),I||(I=eu.createElement("text",{x:"0%",y:"50%",dominantBaseline:"central",dy:30},"Clue Giver"))),eu.createElement("svg",ef({width:70,height:100,x:554,className:"example"},e),z||(z=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",ef({width:70,height:100,x:632,className:"example"},e),G||(G=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",ef({width:70,height:100,x:710,className:"example"},e),D||(D=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",ef({width:70,height:100,x:788,className:"example"},e),M||(M=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",ef({width:70,height:100,x:866,className:"example"},e),$||($=eu.createElement("rect",{width:70,height:100,fill:"gray",rx:5,ry:5}))),eu.createElement("svg",ef({width:90,height:100,x:464,y:125,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Bob")),Q||(Q=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple1.svg",width:70,height:100,x:554,y:125})),V||(V=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple5.svg",width:70,height:100,x:632,y:125})),F||(F=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red4.svg",width:70,height:100,x:710,y:125})),L||(L=eu.createElement("image",{xlinkHref:"/img/pieces/cards/blue1.svg",width:70,height:100,x:788,y:125})),R||(R=eu.createElement("rect",{width:76,height:106,x:863,y:122,fill:"orange",rx:5,ry:5})),U||(U=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red2.svg",width:70,height:100,x:866,y:125})),W||(W=eu.createElement("image",{xlinkHref:"/img/pieces/arrow.svg",width:50,height:70,x:876,y:85})),X||(X=eu.createElement("circle",{cx:901,cy:110,r:15,stroke:"#fff",strokeWidth:2})),eu.createElement("svg",ef({width:16,height:16,x:893,y:102,className:"example"},e),eu.createElement("text",{x:"50%",y:"50%",fill:"#fff",dominantBaseline:"central",style:{fontSize:"1.4em"},textAnchor:"middle"},"2")),eu.createElement("svg",ef({width:64,height:40,x:869,y:230,className:"example"},e),J||(J=eu.createElement("path",{fill:"gold",stroke:"#000",d:"M0 0h64v40H0z"})),eu.createElement("svg",ef({width:64,height:20,className:"example"},e),Y||(Y=eu.createElement("text",{x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},"Save or"))),eu.createElement("svg",ef({width:64,height:20,y:20,className:"example"},e),K||(K=eu.createElement("text",{x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},"Play")))),eu.createElement("svg",ef({width:70,height:100,x:866,y:125,className:"example"},e),eu.createElement("text",{x:"50%",y:"50%",fill:"#fff",stroke:"#fff",dominantBaseline:"central",style:{fontSize:"1.5em",filter:"url(#good-touch-principle-answer-2_yml__b)"},textAnchor:"middle"},"r2, y2")),eu.createElement("svg",ef({width:90,height:100,x:464,y:285,className:"example"},e),eu.createElement("text",{x:"0%",y:"50%",className:"site-theme-text",dominantBaseline:"central",style:{fontSize:"1.4em"}},"Cathy")),Z||(Z=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green2.svg",width:70,height:100,x:554,y:285})),ee||(ee=eu.createElement("image",{xlinkHref:"/img/pieces/cards/purple2.svg",width:70,height:100,x:632,y:285})),et||(et=eu.createElement("rect",{width:76,height:106,x:707,y:282,fill:"orange",rx:5,ry:5})),ei||(ei=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red3.svg",width:70,height:100,x:710,y:285})),er||(er=eu.createElement("rect",{width:76,height:106,x:785,y:282,fill:"orange",rx:5,ry:5})),el||(el=eu.createElement("image",{xlinkHref:"/img/pieces/cards/red4.svg",width:70,height:100,x:788,y:285})),ea||(ea=eu.createElement("rect",{width:76,height:106,x:863,y:282,fill:"orange",rx:5,ry:5})),en||(en=eu.createElement("image",{xlinkHref:"/img/pieces/cards/green3.svg",width:70,height:100,x:866,y:285}))),ey={title:"Good Touch Principle (Question 2)"},ew,ev={},eE=[];function eb(e){let t={em:"em",li:"li",ul:"ul",...(0,eh.R)(),...e.components};return(0,ec.jsxs)(ec.Fragment,{children:[(0,ec.jsx)(eo.A,{id:"good-touch-principle-question-2"}),"\n",(0,ec.jsxs)(em.A,{queryString:"tab",defaultValue:"question",values:[{label:"Question",value:"question"},{label:"Solution",value:"solution"}],children:[(0,ec.jsxs)(ed.A,{value:"question",children:[(0,ec.jsxs)(t.ul,{children:["\n",(0,ec.jsx)(t.li,{children:"What action should Alice perform?"}),"\n",(0,ec.jsxs)(t.li,{children:["If Alice should give a clue, what ",(0,ec.jsx)(t.em,{children:"card note"})," will be written on the focused card? (Be specific.)"]}),"\n"]}),(0,ec.jsx)(ex,{})]}),(0,ec.jsxs)(ed.A,{value:"solution",children:[(0,ec.jsxs)(t.ul,{children:["\n",(0,ec.jsxs)(t.li,{children:["Alice needs to give a ",(0,ec.jsx)(t.em,{children:"Play Clue"})," to Bob's red 2 before it is discarded."]}),"\n",(0,ec.jsx)(t.li,{children:"If Alice clues red, then it would focus the red 2, but the red 4 would be duplicated (because it is already clued in Cathy's hand)."}),"\n",(0,ec.jsx)(t.li,{children:"If Alice clues number 2, then it would only touch the red 2."}),"\n",(0,ec.jsx)(t.li,{children:"Thus, Alice should clue number 2 to Bob."}),"\n",(0,ec.jsxs)(t.li,{children:["Bob will write a ",(0,ec.jsx)(t.em,{children:"card note"})," with the following identities:","\n",(0,ec.jsxs)(t.ul,{children:["\n",(0,ec.jsxs)(t.li,{children:["red 2 (as a ",(0,ec.jsx)(t.em,{children:"Play Clue"}),")"]}),"\n",(0,ec.jsxs)(t.li,{children:["yellow 2 (as a ",(0,ec.jsx)(t.em,{children:"2 Save"}),")"]}),"\n"]}),"\n"]}),"\n",(0,ec.jsxs)(t.li,{children:["(Bob knows that it cannot be a ",(0,ec.jsx)(t.em,{children:"2 Save"})," on a green 2 because that card is present in Cathy's hand and it is not on chop yet.)"]}),"\n"]}),(0,ec.jsx)(ep,{})]})]})]})}function ek(e={}){let{wrapper:t}={...(0,eh.R)(),...e.components};return t?(0,ec.jsx)(t,{...e,children:(0,ec.jsx)(eb,{...e})}):eb(e)}},57250(e,t,i){i.d(t,{A:()=>s});var r=i(74848);i(96540);var l=i(34164),a=i(57663);function n({children:e,className:t,hidden:i}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,l.A)("tabItem_Ymn6",t),hidden:i,children:e})}function s({children:e,className:t,value:i}){let{selectedValue:l,lazy:c}=(0,a.uc)(),h=i===l;return!h&&c?null:(0,r.jsx)(n,{className:t,hidden:!h,children:e})}},50773(e,t,i){i.d(t,{A:()=>d});var r=i(74848);i(96540);var l=i(34164),a=i(88287),n=i(57663),s=i(28584),c=i(19863);function h({className:e}){let{selectedValue:t,selectValue:i,tabValues:a,block:c}=(0,n.uc)(),o=[],{blockElementScrollPositionUntilNextRender:m}=(0,s.a_)(),d=e=>{let r=e.currentTarget,l=a[o.indexOf(r)].value;l!==t&&(m(r),i(l))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{let i=o.indexOf(e.currentTarget)+1;t=o[i]??o[0];break}case"ArrowLeft":{let i=o.indexOf(e.currentTarget)-1;t=o[i]??o[o.length-1]}}t?.focus()};return(0,r.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":c},e),children:a.map(({value:e,label:i,attributes:a})=>(0,r.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:d,...a,className:(0,l.A)("tabs__item","tabItem_LNqP",a?.className,{"tabs__item--active":t===e}),children:i??e},e))})}function o({children:e}){return(0,r.jsx)("div",{className:"margin-top--md",children:e})}function m({className:e,children:t}){return(0,r.jsxs)("div",{className:(0,l.A)(a.G.tabs.container,"tabs-container","tabList__CuJ"),children:[(0,r.jsx)(h,{className:e}),(0,r.jsx)(o,{children:t})]})}function d(e){let t=(0,c.A)(),i=(0,n.OC)(e);return(0,r.jsx)(n.O_,{value:i,children:(0,r.jsx)(m,{className:e.className,children:(0,n.vT)(e.children)})},String(t))}},57663(e,t,i){i.d(t,{OC:()=>d,O_:()=>x,uc:()=>g,vT:()=>o});var r=i(74848),l=i(96540),a=i(56347),n=i(99989),s=i(96629),c=i(80618),h=i(41367);function o(e){return l.Children.toArray(e).filter(e=>"\n"!==e)}function m({value:e,tabValues:t}){return t.some(t=>t.value===e)}function d(e){let t,{defaultValue:i,queryString:r=!1,groupId:o}=e,d=function(e){let{values:t,children:i}=e;return(0,l.useMemo)(()=>{let e=t??l.Children.toArray(i).flatMap(e=>{if(!e)return[];if((0,l.isValidElement)(e)&&function(e){let{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return[e];
1let t="string"==typeof e.type?e.type:e.type.name;throw Error(`Docusaurus error: Bad <Tabs> child <${t}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.
2If you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.`)}).map(({props:{value:e,label:t,attributes:i,default:r}})=>({value:e,label:t,attributes:i,default:r})),r=(0,c.XI)(e,(e,t)=>e.value===t.value);if(r.length>0)throw Error(`Docusaurus error: Duplicate values "${r.map(e=>`'${e.value}'`).join(", ")}" found in <Tabs>. Every value needs to be unique.`);return e},[t,i])}(e),[u,g]=(0,l.useState)(()=>(function({defaultValue:e,tabValues:t}){if(0===t.length)throw Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!m({value:e,tabValues:t}))throw Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}let i=t.find(e=>e.default)??t[0];if(!i)throw Error("Unexpected error: 0 tabValues");return i.value})({defaultValue:i,tabValues:d})),[x,f]=function({queryString:e=!1,groupId:t}){let i=(0,a.W6)(),r=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,s.aZ)(r),(0,l.useCallback)(e=>{if(!r)return;let t=new URLSearchParams(i.location.search);t.set(r,e),i.replace({...i.location,search:t.toString()})},[r,i])]}({queryString:r,groupId:o}),[p,y]=function({groupId:e}){let t=e?`docusaurus.tab.${e}`:null,[i,r]=(0,h.Dv)(t);return[i,(0,l.useCallback)(e=>{t&&r.set(e)},[t,r])]}({groupId:o}),w=m({value:t=x??p,tabValues:d})?t:null;return(0,n.A)(()=>{w&&g(w)},[w]),{selectedValue:u,selectValue:(0,l.useCallback)(e=>{if(!m({value:e,tabValues:d}))throw Error(`Can't select invalid tab value=${e}`);g(e),f(e),y(e)},[f,y,d]),tabValues:d,lazy:e.lazy??!1,block:e.block??!1}}let u=(0,l.createContext)(null);function g(){let e=l.useContext(u);if(!e)throw Error("useTabsContext() must be used within a Tabs component");return e}function x(e){return(0,r.jsx)(u.Provider,{value:e.value,children:e.children})}},14220(e,t,i){i.d(t,{A:()=>a});var r=i(68366);let l=(0,r.N)("Beginner's Guide"),a=(0,r.D)(l,"beginner")}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.