{"id":2600,"date":"2026-05-05T10:54:42","date_gmt":"2026-05-05T09:54:42","guid":{"rendered":"https:\/\/wiskunst.nl\/?page_id=2600"},"modified":"2026-05-08T13:31:46","modified_gmt":"2026-05-08T12:31:46","slug":"15-en-bke-en-het-magisch-vierkant","status":"publish","type":"page","link":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/","title":{"rendered":"15-en, BKE en het magisch vierkant"},"content":{"rendered":"<p><strong><span class=\"collapseomatic \" id=\"id69fddf724f354\"  tabindex=\"0\" title=\"Inhoud\"    >Inhoud<\/span><div id=\"target-id69fddf724f354\" class=\"collapseomatic_content \"><\/strong><\/p>\n<ul>\n<li><a href=\"#inleiding\">Inleiding<\/a><\/li>\n<li><a href=\"#vijftien\">15-en<\/a><\/li>\n<li><a href=\"#bke\">Boter-Kaas-en-Eieren<\/a><\/li>\n<li><a href=\"#vierkant\">Het Magisch Vierkant<\/a><\/li>\n<li><a href=\"#alles\">Alles bij elkaar<\/a><\/li>\n<\/ul>\n<\/div>\n<h3><a id=\"inleiding\"><\/a>Inleiding<\/h3>\n<p>In dit artikel gaan we kijken naar drie verschillende onderwerpen.<\/p>\n<p>Allereerst kijken we naar het spelletje 15-en dat met 2 personen kan worden gespeeld of met 1 persoon tegen de computer.<\/p>\n<p>Daarna kijken we naar het beroemde spelletje Boter-Kaas-en-Eieren (BKE) en gaan we op zoek naar een goede strategie.<\/p>\n<p>Tot slot kijken we naar het magisch vierkant. Dit is een vierkant van 3&#215;3 met een bijzondere eigenschap.<\/p>\n<p>Zo op het oog nogal een ratjetoe van totaal verschillende onderwerpen.<br \/>\nMaar schijn bedriegt&#8230;<\/p>\n<h3><a id=\"vijftien\"><\/a>15-en<\/h3>\n<p>Het spel 15-en gaat als volgt, we gaan even ervan uit dat 2 personen tegen elkaar spelen:<\/p>\n<p>Leg op tafel 9 kaartjes neer met daarop respectievelijk de getallen 1 tot en met 9.<\/p>\n<figure id=\"attachment_2627\" aria-describedby=\"caption-attachment-2627\" style=\"width: 889px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2627 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg\" alt=\"Figuur 1: De 9 kaartjes voor 15-en\" width=\"889\" height=\"130\" srcset=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg 889w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes-300x44.jpg 300w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes-768x112.jpg 768w\" sizes=\"auto, (max-width: 889px) 100vw, 889px\" \/><\/a><figcaption id=\"caption-attachment-2627\" class=\"wp-caption-text\">Figuur 1<\/figcaption><\/figure>\n<p>Om de beurt mag een speler 1 van de kaartjes op tafel pakken.<\/p>\n<p>Wanneer een speler met 3 van zijn kaartjes de som van 15 kan maken heeft deze gewonnen.<br \/>\nHet hoeven niet per se de laatste 3 gekozen kaartjes te zijn.<\/p>\n<p>Voorbeeld:<\/p>\n<p>Speler 1 kiest kaartje met nummer 7 erop (in &#8217;t kort: S1G7),<br \/>\nS2G5,<br \/>\nS1G3,<br \/>\nS2G4,<br \/>\nS1G8<\/p>\n<p>Speler 1 heeft nu 3 kaarten met de waardes: 7, 3 en 8. Hiermee kan hij \/zij geen 15 maken.<\/p>\n<p>S2G1<\/p>\n<p>Speler 2 heeft nu 3 kaarten met de waardes: 5, 4 en 1 en hiermee kan hij\/zij geen 15 maken.<\/p>\n<p>S1G2<\/p>\n<p>Speler 1 kan nog steeds geen 15 maken met 3 van zijn\/haar 4 kaarten.<\/p>\n<p>S2G9<\/p>\n<p>Speler 2 heeft nu de kaarten: 4, 5, 1 en 9 en kan nu wel 15 maken. Namelijk met de kaarten 4, 1 en 9 want 4+1+9=15.<\/p>\n<p>Speler 2 heeft dus gewonnen!<\/p>\n<p>Met het onderstaande Python programma kun je dit spel tegen de computer spelen.<br \/>\nDoe dat maar eens een aantal keer en kijk of je van de computer kan winnen&#8230;<\/p>\n<p><em><span class=\"collapseomatic \" id=\"id69fddf724f444\"  tabindex=\"0\" title=\"Python 15-en\"    >Python 15-en<\/span><div id=\"target-id69fddf724f444\" class=\"collapseomatic_content \"><\/em><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># 15-en<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">import random<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">from itertools import combinations<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">stock=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">human=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">computer=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">move=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">player=&#8217;computer&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">stop=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">defensive=True<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def question(question, default):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 a=input(question+&#8217; [&#8216;+default+&#8217;]: &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if a==&#8221; or a[0].upper()==default.upper():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 return False<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def resetup():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global stock, human, computer, move, player<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 for i in range(1, 10):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 stock.append(i)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 human=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 computer=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 move=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if player==&#8217;computer&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;computer&#8217;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def setup():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global player,defensive<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8217;15-en&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 q=&#8217;Do you want the computer play defensive(d) or at random(r)?&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if question(q, &#8216;D&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 defensive=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 defensive=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if question(&#8216;Do you want to start?&#8217;, &#8216;Yes&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;computer&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print() <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 resetup()<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def scoreboard():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global stock, human, computer<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 human=sorted(human)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 computer=sorted(computer)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 stock=sorted(stock)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8216;&#8212;&#8211;Scoreboard&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8216;Stock:&#8217;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(*stock, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8216;You:&#8217;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(*human, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8216;Computer:&#8217;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(*computer)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 print(&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8216;)<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def check15():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 s=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 c=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if player==&#8217;human&#8217;: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 comb=combinations(human,3)<br \/>\n<\/span><span class=\"collapseomatic \" id=\"id69fddf724f591\"  tabindex=\"0\" title=\"uitleg code\"    >uitleg code<\/span><div id=\"target-id69fddf724f591\" class=\"collapseomatic_content \">\nMet de functie <em>combinations<\/em> uit <em>itertools<\/em> worden de verschillende combinaties van de list <em>human<\/em> met een lengte van <em>3<\/em> bepaald. Het resultaat is een list.<\/div>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for i in comb: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for j in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=i[j]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 c.append(i[j])<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if s==15:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 c=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 comb=combinations(computer,3)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for i in comb:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for j in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=i[j]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 c.append(i[j])<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==15:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 c=[]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 return (s==15), sorted(c)<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def humanpick():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global player, move, human<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if move&lt;9:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 scoreboard()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 while wrong:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;\\nYour turn&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;You can choose the following number(s): &#8216;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216; &#8216;.join(str(x) for x in stock))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 try:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=int(input(&#8216;Choose your number: &#8216;))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 except:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;You gave a false number: Try again&#8230;&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if g==0:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 exit(0)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if g in stock:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stock.remove(g)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 human.append(g)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;You choose a wrong number: Try again&#8230;&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 move+=1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if move&gt;4:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 w,c = check15()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if w:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;You have won!!!&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;Winning combination: &#8216;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(*c)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;computer&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;computer&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 0<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def computerpick():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global player, move<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if move&lt;9:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 scoreboard()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;\\nMy turn:&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;I can choose one of the following numbers: &#8216;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216; &#8216;.join(str(x) for x in stock))<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 wrong=True<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 #defensive<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if defensive:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if move&gt;=3:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 temp=human.copy()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for i in range(1,10):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if not (i in temp) and (i in stock):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 temp.append(i)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 comb=combinations(temp,3)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for x in comb:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for y in range(3): <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=x[y]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==15:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 temp.remove(i)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=i<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 temp.remove(i)<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 while wrong:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=random.randrange(1,10)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=not(g in stock)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(f&#8217;I choose {g}&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 stock.remove(g)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 computer.append(g)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 move+=1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if move&gt;4:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 w,c = check15()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if w:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;I have won!!!&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;Winning combination: &#8216;, end=&#8217; &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216; &#8216;.join(str(x) for x in c))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return 0<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def play():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global stop<br \/>\n<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 while not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if move&gt;=9:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;It is a draw.&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stop=not(question(&#8216;Play again? &#8216;, &#8216;Y&#8217;))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resetup()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 exit(0)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 elif player==&#8217;human&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if humanpick():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stop=not(question(&#8216;Play again? &#8216;, &#8216;Y&#8217;))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resetup()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 exit(0)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 elif player==&#8217;computer&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if computerpick():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stop=not(question(&#8216;Play again? &#8216;, &#8216;Y&#8217;))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resetup()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 exit(0)<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">setup()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">play()<\/span><\/p>\n\r\n        <style>\r\n            span.cacwp_text.index_1 {\r\n\r\n                cursor: pointer;\r\n                display: inline-block;\r\n                transition: ease-in-out .5s;\r\n\r\n                background-color: #f4efcd;\r\n                color: #000000;\r\n\r\n                font-family: Arial;\r\n                font-weight: normal;\r\n                text-align: center;\r\n                text-transform: none;\r\n                font-size: 12px;\r\n                line-height: 1;\r\n                letter-spacing: normal;\r\n\r\n                padding-top: 0;\r\n                padding-right: 0;\r\n                padding-bottom: 0;\r\n                padding-left: 0;\r\n\r\n                margin-top: 0;\r\n                margin-right: 0;\r\n                margin-bottom: 0;\r\n                margin-left: 0;\r\n\r\n                border-top: 0;\r\n                border-right: 0;\r\n                border-bottom: 0;\r\n                border-left: 0;\r\n                border-color: #ffffff;\r\n                border-style: solid;\r\n\r\n                border-top-left-radius: 0;\r\n                border-top-right-radius: 0;\r\n                border-bottom-right-radius: 0;\r\n                border-bottom-left-radius: 0;\r\n\r\n            }\r\n            span.cacwp_text.index_1:hover {\r\n                background-color: ;\r\n                color: ;\r\n            }\r\n        <\/style>\r\n\r\n        <span class=\"cacwp_text index_1\" title=\"Click to copy\" data-content=\"# 15-en\r\n\r\nimport random\r\nfrom itertools import combinations\r\n\r\nstock=[]\r\nhuman=[]\r\ncomputer=[]\r\nmove=0\r\nplayer=&#039;computer&#039;\r\nstop=False\r\ndefensive=True\r\n\r\ndef question(question, default):\r\n    a=input(question+&#039; [&#039;+default+&#039;]: &#039;)\r\n    if a==&#039;&#039; or a[0].upper()==default.upper():\r\n        return True\r\n    else:\r\n        return False\r\n\r\ndef resetup():\r\n    global stock, human, computer, move, player\r\n    \r\n    for i in range(1, 10):\r\n        stock.append(i)\r\n    human=[]\r\n    computer=[]\r\n    move=0\r\n    if player==&#039;computer&#039;:\r\n        player=&#039;human&#039;\r\n    else:\r\n        player=&#039;computer&#039;\r\n        \r\ndef setup():\r\n    global player,defensive\r\n    \r\n    print(&#039;15-en&#039;)\r\n    print()\r\n    q=&#039;Do you want the computer play defensive(d) or at random(r)?&#039;\r\n    if question(q, &#039;D&#039;):\r\n        defensive=True\r\n    else:\r\n        defensive=False\r\n    if question(&#039;Do you want to start?&#039;, &#039;Yes&#039;):\r\n        player=&#039;computer&#039;\r\n    else:\r\n        player=&#039;human&#039;\r\n    print()    \r\n    resetup()\r\n    \r\ndef scoreboard():\r\n    global stock, human, computer\r\n    \r\n    human=sorted(human)\r\n    computer=sorted(computer)\r\n    stock=sorted(stock)\r\n    print(&#039;-----Scoreboard-------------------------&#039;)\r\n    print(&#039;Stock:&#039;, end=&#039; &#039;)\r\n    print(*stock, end=&#039; &#039;)\r\n    print(&#039;You:&#039;, end=&#039; &#039;)\r\n    print(*human, end=&#039; &#039;)\r\n    print(&#039;Computer:&#039;, end=&#039; &#039;)\r\n    print(*computer)\r\n    print(&#039;----------------------------------------&#039;)\r\n    \r\ndef check15():\r\n    s=0\r\n    c=[]\r\n    if player==&#039;human&#039;:        \r\n        comb=combinations(human,3)\r\n        for i in comb:            \r\n            for j in range(3):\r\n                s+=i[j]\r\n                c.append(i[j])\r\n            if s==15:\r\n                break\r\n            else:\r\n                s=0\r\n                c=[]\r\n    else:\r\n        comb=combinations(computer,3)\r\n        for i in comb:\r\n            for j in range(3):\r\n                s+=i[j]\r\n                c.append(i[j])\r\n            if s==15:\r\n                break\r\n            else:\r\n                s=0\r\n                c=[]\r\n    return (s==15), sorted(c)\r\n\r\ndef humanpick():\r\n    global player, move, human\r\n    \r\n    wrong=True\r\n    if move4:\r\n            w,c = check15()\r\n            if w:\r\n                print(&#039;You have won!!!&#039;)\r\n                print(&#039;Winning combination: &#039;, end=&#039; &#039;)\r\n                print(*c)\r\n                return 1\r\n            else:\r\n                player=&#039;computer&#039;\r\n                return 0\r\n        else:\r\n            player=&#039;computer&#039;\r\n            return 0\r\n            \r\ndef computerpick():\r\n    global player, move\r\n    \r\n    if move=3:\r\n                temp=human.copy()\r\n                s=0\r\n                for i in range(1,10):\r\n                    if not (i in temp) and (i in stock):\r\n                        temp.append(i)\r\n                        comb=combinations(temp,3)\r\n                        for x in comb:\r\n                            for y in range(3):                                \r\n                                s+=x[y]\r\n                        if s==15:\r\n                            temp.remove(i)\r\n                            wrong=False\r\n                            g=i\r\n                            break\r\n                        else:\r\n                            s=0\r\n                            temp.remove(i)\r\n                \r\n        while wrong:\r\n            g=random.randrange(1,10)\r\n            wrong=not(g in stock)\r\n        print(f&#039;I choose {g}&#039;)\r\n        print()\r\n        stock.remove(g)\r\n        computer.append(g)\r\n        move+=1\r\n        if move&gt;4:\r\n            w,c = check15()\r\n            if w:\r\n                print(&#039;I have won!!!&#039;)\r\n                print(&#039;Winning combination: &#039;, end=&#039; &#039;)\r\n                print(&#039; &#039;.join(str(x) for x in c))\r\n                return 1\r\n            else:\r\n                player=&#039;human&#039;\r\n                return 0\r\n        else:\r\n            player=&#039;human&#039;\r\n            return 0\r\n\r\ndef play():\r\n    global stop\r\n    while not stop:\r\n        if move&gt;=9:\r\n            print(&#039;It is a draw.&#039;)\r\n            stop=not(question(&#039;Play again? &#039;, &#039;Y&#039;))\r\n            if not stop:\r\n                resetup()\r\n            else:\r\n                exit(0)\r\n        elif player==&#039;human&#039;:\r\n            if humanpick():\r\n                stop=not(question(&#039;Play again? &#039;, &#039;Y&#039;))\r\n                if not stop:\r\n                    resetup()\r\n                else:\r\n                    exit(0)\r\n        elif player==&#039;computer&#039;:\r\n            if computerpick():\r\n                stop=not(question(&#039;Play again? &#039;, &#039;Y&#039;))\r\n                if not stop:\r\n                    resetup()\r\n                else:\r\n                    exit(0)\r\n\r\nsetup()\r\nplay()\" data-text=\"kopieer 15-en.py naar kladblok\">kopieer 15-en.py naar kladblok<\/span>\r\n        \r\n        \n<\/div>\n<p><em><span class=\"collapseomatic \" id=\"id69fddf724faca\"  tabindex=\"0\" title=\"Permutaties en combinaties\"    >Permutaties en combinaties<\/span><div id=\"target-id69fddf724faca\" class=\"collapseomatic_content \"><\/em><\/p>\n<p>In de Python code wordt gebruik gemaakt van een functie die combinaties berekent.<\/p>\n<p>Maar wat is ook al weer het verschil tussen combinaties en permutaties?<\/p>\n<p>Voor beiden geldt dat je kijkt op hoeveel en op welke manier je <em>k<\/em> elementen uit een verzameling van <em>n<\/em> elementen haalt.<\/p>\n<p>Voor de combinatie geldt dat de volgorde er niet toe doet.<br \/>\nVoor de permutatie doet de volgorde er wel toe.<\/p>\n<p>De formule voor de combinatie luidt:<\/p>\n<div class=\"wp-katex-eq katex-display\" data-display=\"true\">C(n,k)=nCr=\\frac{n!}{k!(n-k)!}<\/div>\n<p>De formule voor de permutatie luidt:<\/p>\n<div class=\"wp-katex-eq katex-display\" data-display=\"true\">P(n,k)=nPr=\\frac{n!}{(n-k)!}<\/div>\n<p>Laten we eens kijken op hoeveel manieren je 3 elementen uit een verzameling van 4 elementen kunt halen:<\/p>\n<p>Het aantal combinaties is:<\/p>\n<div class=\"wp-katex-eq katex-display\" data-display=\"true\">C(4,3)=\\frac{4!}{3!(4-3)!}=\\frac{4!}{3!.1!}=\\frac{24}{6}=4<\/div>\n<p>Het aantal permutaties is:<\/p>\n<div class=\"wp-katex-eq katex-display\" data-display=\"true\">P(4,3)=\\frac{4!}{(4-3)!}=\\frac{4!}{1!}=\\frac{24}{1}=24<\/div>\n<p>Voorbeeld:<\/p>\n<p>Stel we hebben de verzameling {1, 2, 3, 4}.<br \/>\nWelke combinaties (dat zijn er dus 4) van 3 elementen kan ik dan maken?<br \/>\nWelnu: {1, 2, 3}, {1, 2, 4}, {1, 3, 4} en {2, 3, 4}.<\/p>\n<p>Als we vervolgens eens kijken naar de verzameling {1, 2, 3} en gaan hiervan de permutaties bekijken (dat zijn er 6) dan krijgen we:<\/p>\n<p>{1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2} en {3, 2, 1}.<\/p>\n<p>En ik had al 4 combinaties en er zijn dus per combinatie 6 permutaties. Dat betekent dat er 4\u00d76 permutaties van onze startverzameling zijn:<\/p>\n<figure id=\"attachment_2640\" aria-describedby=\"caption-attachment-2640\" style=\"width: 1248px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2640 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per.jpg\" alt=\"Figuur 2: Alle combinaties en permutaties van de verzameling {1, 2, 3, 4}\" width=\"1248\" height=\"115\" srcset=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per.jpg 1248w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per-300x28.jpg 300w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per-1024x94.jpg 1024w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per-768x71.jpg 768w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/com_per-1200x111.jpg 1200w\" sizes=\"auto, (max-width: 1248px) 100vw, 1248px\" \/><\/a><figcaption id=\"caption-attachment-2640\" class=\"wp-caption-text\">Figuur 2<\/figcaption><\/figure>\n<\/div>\n<p>De vraag is nu: Is er een winnende strategie?<\/p>\n<h3><a id=\"bke\"><\/a>Boter-Kaas-en-Eieren<\/h3>\n<p>Dit spel is overbekend maar voor diegenen die het toch niet kennen even een korte uitleg:<\/p>\n<p>Boter-Kaas-en-Eieren wordt gespeeld op een 3\u00d73 bord tussen 2 spelers. De speler die begint speelt met een X en de andere speler speelt met een O. Per beurt mag een speler zijn\/haar symbool op een leeg vak plaatsen. De eerste die een horizontale, verticale of diagonale rij met zij\/haar symbool heeft gemaakt heeft gewonnen.<\/p>\n<p>Een spel kan er als volgt uitzien:<\/p>\n<figure id=\"attachment_2604\" aria-describedby=\"caption-attachment-2604\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2604 size-medium\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01-300x278.jpg\" alt=\"Figuur 3: Een spelletje Boter-Kaas-en-Eieren\" width=\"300\" height=\"278\" srcset=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01-300x278.jpg 300w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01.jpg 364w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2604\" class=\"wp-caption-text\">Figuur 3<\/figcaption><\/figure>\n<p>Met het onderstaande Python programma kun je dit spel tegen de computer spelen.<br \/>\nDoe dat maar eens een aantal keer en kijk of je van de computer kan winnen&#8230;<\/p>\n<p><em><span class=\"collapseomatic \" id=\"id69fddf724fbd4\"  tabindex=\"0\" title=\"Python BKE\"    >Python BKE<\/span><div id=\"target-id69fddf724fbd4\" class=\"collapseomatic_content \"><\/em><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># Tic-Tac-Toe: human vs computer<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># Computer can play defensive<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">import random<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">board=[[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;],[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;],[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;]]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">player=&#8217;X&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">computer=&#8217;O&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">turn=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">move=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">stop=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#nt is used in printboard for normal-text(nt=True) or extended asccii-text(nt=False)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">nt=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">defensive=True<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def question(question, default):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 a=input(question+&#8217; [&#8216;+default+&#8217;]: &#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if a==&#8221; or a[0].upper()==default.upper():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return False<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def printboard(normaltext=False):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if normaltext:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;&#8212;&#8212;-&#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;\u2554\u2550\u2566\u2550\u2566\u2550\u2557&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if normaltext:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(f&#8217;|{board[x][0] if board[x][0] != &#8220;.&#8221; else 3*x+1}|&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">f'{board[x][1] if board[x][1] != &#8220;.&#8221; else 3*x+2}|&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">f'{board[x][2] if board[x][2] != &#8220;.&#8221; else 3*x+3}|\\n&#8212;&#8212;-&#8216;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(f&#8217;\u2551{board[x][0] if board[x][0] != &#8220;.&#8221; else 3*x+1}\u2551&#8217; <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">f'{board[x][1] if board[x][1] != &#8220;.&#8221; else 3*x+2}\u2551&#8217; <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">f'{board[x][2] if board[x][2] != &#8220;.&#8221; else 3*x+3}\u2551&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if x&lt;2:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;\u2560\u2550\u256c\u2550\u256c\u2550\u2563&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if normaltext:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print() <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;\u255a\u2550\u2569\u2550\u2569\u2550\u255d&#8217;)<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def setup():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global player, computer, turn, nt, defensive<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 q=&#8217;Do you want plain-text(p) or Ascii-text(a) for the grid?&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if question(q, &#8216;A&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 nt=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 nt=True<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 q=&#8217;Do you watn the computer play defensive(d) or at random(r)?&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if question(q, &#8216;D&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 defensive=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 defensive=False<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 q=&#8217;Do you want to play with &#8220;X&#8221;?&#8217; <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if question(q,&#8217;Yes&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;X&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 computer=&#8217;O&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;O&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 computer=&#8217;X&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;computer&#8217;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def playerturn():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global move, stop<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 while wrong:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 printboard(normaltext=nt)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 try:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v=int(input(&#8216;Wich field (number) do you want to use?&#8217;))<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 except:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;false input: Give integer number&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if v==0:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stop=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 exit(0)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=(v-1)\/\/3<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=(v)%3-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if g==-1:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=2<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=(board[f][g] != &#8216;.&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if wrong:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(f&#8217;false input: Board({f+1}, {g+1}) (number {v}) is not free&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 board[f][g]=player<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 move += 1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def givesum(cs):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 s=0 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #1st row horizontal<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==1:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for y in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[0][y]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**y<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #2nd row horizontal<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==2:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for y in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[1][y]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(y+3)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #3rd row horizontal<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==3:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for y in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[2][y]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(y+6)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #1st column vertical<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==4:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[x][0]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(x*3)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #2nd column vertical<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==5:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[x][1]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(x*3+1)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #3rd column vertical<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==6:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[x][2]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(x*3+2)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #Diagonal from upper left to lower right<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==7:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[x][x]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=2**(4*x)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #Diagonal from upper right to lower left<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cs==8:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[2-x][x]==player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s+=4**(x+1)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 return s<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def computerturn():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global move<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 #Defense<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if defensive:<br \/>\n<\/span><span class=\"collapseomatic \" id=\"id69fddf724fd83\"  tabindex=\"0\" title=\"uitleg code\"    >uitleg code<\/span><div id=\"target-id69fddf724fd83\" class=\"collapseomatic_content \">\nOm niet eindeloos veel geneste if-elif-combinaties te krijgen is hier wat wiskunde toegepast. Ieder veld van het vierkant heeft een uniek binair nummer gekregen. Hiermee zal de som van iedere combinatie van cellen een unieke waarde opleveren. De binaire getallen zijn uiteraard omgezet in decimale getallen.<\/div>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for t in range(9):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s=givesum(t) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==3 or s==5 or s==6: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=7-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=p\/\/2<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==24 or s==40 or s==48: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=56-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=p\/\/16 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==192 or s==320 or s==384: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=448-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=2<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=p\/\/128<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==9 or s==65 or s==72: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=73-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=0 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=round((p**(1\/3))*0.5) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==18 or s==130 or s==144: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=146-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=1 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=round(p**0.25)-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==36 or s==260 or s==288: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=292-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=2 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=round((p**0.25)\/\/2) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==17 or s==257 or s==272: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=273-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=(p**0.25)\/\/2<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=f<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if s==20 or s==68 or s==80: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=84-s<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=(p**0.5)\/\/4<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-g+2 <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[int(f)][int(g)]==&#8217;.&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=-1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if f==-1: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 wrong=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 while wrong:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v=random.randint(1,9)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 f=(v-1)\/\/3<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=(v)%3-1<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if g==-1:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 g=2<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wrong=(board[f][g] != &#8216;.&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 board[int(f)][int(g)]=computer <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 move += 1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def score():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global turn<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 pw=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 cw=False<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if board[x][0] == player and board[x][1] == player and board[x][2] == player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if not pw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for y in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[0][y] == player and board[1][y] == player and board[2][y] == player:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if not pw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if (board[0][0] == player and board[1][1] == player and board[2][2] == player) or \\<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 (board[0][2] == player and board[1][1] == player and board[2][0] == player):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if pw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 printboard(normaltext=nt)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;You have won!!!&#8217;) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return 1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 for x in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if board[x][0] == computer and board[x][1] == computer and board[x][2] == computer:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if not pw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 for y in range(3):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if board[0][y] == computer and board[1][y] == computer and board[2][y] == computer:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if not pw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if (board[0][0] == computer and board[1][1] == computer and board[2][2] == computer) or \\<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 (board[0][2] == computer and board[1][1] == computer and board[2][0] == computer):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cw=True<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if cw:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 printboard(normaltext=nt)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8216;I have won!!!&#8217;) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return 1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if move == 9:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 printboard(normaltext=nt)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 print(&#8220;It&#8217;s a draw!&#8221;) <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 return 1<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if turn == &#8216;human&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;computer&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 return 0<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">def play():<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 global turn, stop, player, computer, board, move<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 while not stop: <\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if turn==&#8217;human&#8217;:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 playerturn()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=score()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 computerturn()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 p=score()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 if p == 1:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 stop=not question(&#8216;Play Again?&#8217;, &#8216;Yes&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 move=0<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if not stop:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 board=[[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;],[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;],[&#8216;.&#8217;,&#8217;.&#8217;,&#8217;.&#8217;]]<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if question(&#8216;Do you want to play with &#8220;X&#8221;?&#8217;, &#8216;Yes&#8217;):<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;X&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 computer=&#8217;O&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;human&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 player=&#8217;O&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 computer=&#8217;X&#8217;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 turn=&#8217;computer&#8217;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">setup()<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">print(f'{&#8220;You&#8221; if turn==&#8221;human&#8221; else &#8220;Computer&#8221;} play{&#8220;s&#8221; if turn==&#8221;Computer&#8221; else &#8220;&#8221;} with X.&#8217;)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">play()<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#defensive play:<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#used grid<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#\u00a0 \u00a0 \u00a0 \u00a0 \u00a084<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># 1 2 4 7<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># 8 16 32 56<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># 64 128 256 488<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># 73 146 292 273<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># numbers in grid are decimal representitives of binairy numbers (000000001 to 100000000),<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\"># wich ensures unique sums of all different combinations of cells<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">#<\/span><\/p>\n\r\n        <style>\r\n            span.cacwp_text.index_0 {\r\n\r\n                cursor: pointer;\r\n                display: inline-block;\r\n                transition: ease-in-out .5s;\r\n\r\n                background-color: #f4efcd;\r\n                color: #000000;\r\n\r\n                font-family: Arial;\r\n                font-weight: normal;\r\n                text-align: center;\r\n                text-transform: none;\r\n                font-size: 11px;\r\n                line-height: 1;\r\n                letter-spacing: normal;\r\n\r\n                padding-top: 0;\r\n                padding-right: 0;\r\n                padding-bottom: 0;\r\n                padding-left: 0;\r\n\r\n                margin-top: 0;\r\n                margin-right: 0;\r\n                margin-bottom: 0;\r\n                margin-left: 0;\r\n\r\n                border-top: 0;\r\n                border-right: 0;\r\n                border-bottom: 0;\r\n                border-left: 0;\r\n                border-color: #ffffff;\r\n                border-style: solid;\r\n\r\n                border-top-left-radius: 0;\r\n                border-top-right-radius: 0;\r\n                border-bottom-right-radius: 0;\r\n                border-bottom-left-radius: 0;\r\n\r\n            }\r\n            span.cacwp_text.index_0:hover {\r\n                background-color: ;\r\n                color: ;\r\n            }\r\n        <\/style>\r\n\r\n        <span class=\"cacwp_text index_0\" title=\"Click to copy\" data-content=\"# Tic-Tac-Toe: human vs computer\r\n# Computer can play defensive\r\n\r\nimport random\r\n\r\nboard=[[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;],[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;],[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;]]\r\nplayer=&#039;X&#039;\r\ncomputer=&#039;O&#039;\r\nturn=&#039;human&#039;\r\nmove=0\r\nstop=False\r\n#nt is used in printboard for normal-text(nt=True) or extended asccii-text(nt=False)\r\nnt=False\r\ndefensive=True\r\n\r\ndef question(question, default):\r\n    a=input(question+&#039; [&#039;+default+&#039;]: &#039;)\r\n    if a==&#039;&#039; or a[0].upper()==default.upper():\r\n        return True\r\n    else:\r\n        return False\r\n\r\ndef printboard(normaltext=False):\r\n    if normaltext:\r\n        print(&#039;-------&#039;)\r\n    else:\r\n        print(&#039;\u2554\u2550\u2566\u2550\u2566\u2550\u2557&#039;)\r\n    for x in range(3):\r\n        if normaltext:\r\n            print(f&#039;|{board[x][0] if board[x][0] != &quot;.&quot; else 3*x+1}|&#039;\r\n                 f&#039;{board[x][1] if board[x][1] != &quot;.&quot; else 3*x+2}|&#039;\r\n                 f&#039;{board[x][2] if board[x][2] != &quot;.&quot; else 3*x+3}|\\n-------&#039;)\r\n        else:\r\n            print(f&#039;\u2551{board[x][0] if board[x][0] != &quot;.&quot; else 3*x+1}\u2551&#039;              \r\n                f&#039;{board[x][1] if board[x][1] != &quot;.&quot; else 3*x+2}\u2551&#039;              \r\n                f&#039;{board[x][2] if board[x][2] != &quot;.&quot; else 3*x+3}\u2551&#039;)\r\n            if x&lt;2:\r\n                print(&#039;\u2560\u2550\u256c\u2550\u256c\u2550\u2563&#039;)\r\n    if normaltext:\r\n        print()          \r\n    else:\r\n        print(&#039;\u255a\u2550\u2569\u2550\u2569\u2550\u255d&#039;)\r\n\r\ndef setup():\r\n    global player, computer, turn, nt, defensive\r\n    \r\n    q=&#039;Do you want plain-text(p) or Ascii-text(a) for the grid?&#039;\r\n    if question(q, &#039;A&#039;):\r\n        nt=False\r\n    else:\r\n        nt=True\r\n    \r\n    q=&#039;Do you watn the computer play defensive(d) or at random(r)?&#039;\r\n    if question(q, &#039;D&#039;):\r\n        defensive=True\r\n    else:\r\n        defensive=False\r\n    \r\n    q=&#039;Do you want to play with &quot;X&quot;?&#039;    \r\n    if question(q,&#039;Yes&#039;):\r\n        player=&#039;X&#039;\r\n        computer=&#039;O&#039;\r\n        turn=&#039;human&#039;\r\n    else:\r\n        player=&#039;O&#039;\r\n        computer=&#039;X&#039;\r\n        turn=&#039;computer&#039;\r\n\r\ndef playerturn():\r\n    global move, stop\r\n    \r\n    wrong=True\r\n    while wrong:\r\n        printboard(normaltext=nt)\r\n        try:\r\n            v=int(input(&#039;Wich field (number) do you want to use?&#039;))\r\n        except:\r\n            print(&#039;false input: Give integer number&#039;)\r\n            wrong=True\r\n            continue\r\n        if v==0:\r\n            stop=True\r\n            exit(0)\r\n        else:\r\n            f=(v-1)\/\/3\r\n            g=(v)%3-1\r\n            if g==-1:\r\n                g=2\r\n            wrong=(board[f][g] != &#039;.&#039;)\r\n            if wrong:\r\n                print(f&#039;false input: Board({f+1}, {g+1}) (number {v}) is not free&#039;)\r\n    if not stop:\r\n        board[f][g]=player\r\n        move += 1\r\n        \r\ndef givesum(cs):\r\n    s=0    \r\n    #1st row horizontal\r\n    if cs==1:\r\n        for y in range(3):\r\n            if board[0][y]==player:\r\n                s+=2**y\r\n    #2nd row horizontal\r\n    if cs==2:\r\n        for y in range(3):\r\n            if board[1][y]==player:\r\n                s+=2**(y+3)\r\n    #3rd row horizontal\r\n    if cs==3:\r\n        for y in range(3):\r\n            if board[2][y]==player:\r\n                s+=2**(y+6)\r\n    #1st column vertical\r\n    if cs==4:\r\n        for x in range(3):\r\n            if board[x][0]==player:\r\n                s+=2**(x*3)\r\n    #2nd column vertical\r\n    if cs==5:\r\n        for x in range(3):\r\n            if board[x][1]==player:\r\n                s+=2**(x*3+1)\r\n    #3rd column vertical\r\n    if cs==6:\r\n        for x in range(3):\r\n            if board[x][2]==player:\r\n                s+=2**(x*3+2)\r\n    #Diagonal from upper left to lower right\r\n    if cs==7:\r\n        for x in range(3):\r\n            if board[x][x]==player:\r\n                s+=2**(4*x)\r\n    #Diagonal from upper right to lower left\r\n    if cs==8:\r\n        for x in range(3):\r\n            if board[2-x][x]==player:\r\n                s+=4**(x+1)\r\n    return s\r\n\r\ndef computerturn():\r\n    global move\r\n    \r\n    #Defense\r\n    f=-1\r\n    if defensive:\r\n        for t in range(9):\r\n            s=givesum(t)            \r\n            if s==3 or s==5 or s==6:                \r\n                p=7-s\r\n                f=0\r\n                g=p\/\/2\r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==24 or s==40 or s==48:                \r\n                p=56-s\r\n                f=1\r\n                g=p\/\/16                        \r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==192 or s==320 or s==384:                \r\n                p=448-s\r\n                f=2\r\n                g=p\/\/128\r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==9 or s==65 or s==72:                \r\n                p=73-s\r\n                g=0            \r\n                f=round((p**(1\/3))*0.5)                \r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==18 or s==130 or s==144:                \r\n                p=146-s\r\n                g=1                \r\n                f=round(p**0.25)-1\r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==36 or s==260 or s==288:                \r\n                p=292-s\r\n                g=2                \r\n                f=round((p**0.25)\/\/2)                \r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==17 or s==257 or s==272:                \r\n                p=273-s\r\n                f=(p**0.25)\/\/2\r\n                g=f\r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n            if s==20 or s==68 or s==80:                \r\n                p=84-s\r\n                g=(p**0.5)\/\/4\r\n                f=-g+2                \r\n                if board[int(f)][int(g)]==&#039;.&#039;:\r\n                    break\r\n                else:\r\n                    f=-1\r\n    \r\n    if f==-1:        \r\n        wrong=True\r\n        while wrong:\r\n            v=random.randint(1,9)\r\n            f=(v-1)\/\/3\r\n            g=(v)%3-1\r\n            if g==-1:\r\n                g=2\r\n            wrong=(board[f][g] != &#039;.&#039;)\r\n    board[int(f)][int(g)]=computer    \r\n    move += 1\r\n    \r\ndef score():\r\n    global turn\r\n    \r\n    pw=False\r\n    cw=False\r\n    for x in range(3):\r\n        if board[x][0] == player and board[x][1] == player and board[x][2] == player:\r\n            pw=True\r\n    if not pw:\r\n        for y in range(3):\r\n            if board[0][y] == player and board[1][y] == player and board[2][y] == player:\r\n                pw=True\r\n    if not pw:\r\n        if (board[0][0] == player and board[1][1] == player and board[2][2] == player) or \\\r\n        (board[0][2] == player and board[1][1] == player and board[2][0] == player):\r\n            pw=True\r\n    if pw:\r\n        printboard(normaltext=nt)\r\n        print(&#039;You have won!!!&#039;)        \r\n        return 1\r\n    \r\n    for x in range(3):\r\n        if board[x][0] == computer and board[x][1] == computer and board[x][2] == computer:\r\n            cw=True\r\n    if not pw:\r\n        for y in range(3):\r\n            if board[0][y] == computer and board[1][y] == computer and board[2][y] == computer:\r\n                cw=True\r\n    if not pw:\r\n        if (board[0][0] == computer and board[1][1] == computer and board[2][2] == computer) or \\\r\n        (board[0][2] == computer and board[1][1] == computer and board[2][0] == computer):\r\n            cw=True\r\n    if cw:\r\n        printboard(normaltext=nt)\r\n        print(&#039;I have won!!!&#039;)        \r\n        return 1\r\n\r\n    if move == 9:\r\n        printboard(normaltext=nt)\r\n        print(&quot;It&#039;s a draw!&quot;)        \r\n        return 1\r\n        \r\n    if turn == &#039;human&#039;:\r\n        turn=&#039;computer&#039;\r\n    else:\r\n        turn=&#039;human&#039;\r\n    return 0\r\n\r\ndef play():\r\n    global turn, stop, player, computer, board, move\r\n    \r\n    while not stop:        \r\n        if turn==&#039;human&#039;:\r\n            playerturn()\r\n            p=score()\r\n        else:\r\n            computerturn()\r\n            p=score()\r\n        if p == 1:\r\n            stop=not question(&#039;Play Again?&#039;, &#039;Yes&#039;)\r\n            move=0\r\n            if not stop:\r\n                board=[[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;],[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;],[&#039;.&#039;,&#039;.&#039;,&#039;.&#039;]]\r\n                if question(&#039;Do you want to play with &quot;X&quot;?&#039;, &#039;Yes&#039;):\r\n                    player=&#039;X&#039;\r\n                    computer=&#039;O&#039;\r\n                    turn=&#039;human&#039;\r\n                else:\r\n                    player=&#039;O&#039;\r\n                    computer=&#039;X&#039;\r\n                    turn=&#039;computer&#039;\r\n\r\nsetup()\r\nprint(f&#039;{&quot;You&quot; if turn==&quot;human&quot; else &quot;Computer&quot;} play{&quot;s&quot; if turn==&quot;Computer&quot; else &quot;&quot;} with X.&#039;)\r\nplay()\r\n\r\n#defensive play:\r\n#used grid\r\n#                    84\r\n#    1    2    4      7\r\n#    8   16   32     56\r\n#   64  128  256    488\r\n#\r\n#   73  146  292    273\r\n#\r\n# numbers in grid are decimal representitives of binairy numbers (000000001 to 100000000),\r\n# wich ensures unique sums of all different combinations of cells\r\n#\" data-text=\"kopieer tictactoe.py naar kladblok\">kopieer tictactoe.py naar kladblok<\/span>\r\n        \r\n        \n<\/div>\n<p>En ook hier luidt de vraag: Is er een winnende strategie?<\/p>\n<h3><a id=\"vierkant\"><\/a>Het magisch vierkant<\/h3>\n<p>Een magisch vierkant is een vierkant gevuld met getallen waarbij (op z&#8217;n minst) de sommen van de rijen, kolommen en (hoofd-)diagonalen gelijk zijn.<\/p>\n<p>Voorbeeld:<\/p>\n<figure id=\"attachment_2608\" aria-describedby=\"caption-attachment-2608\" style=\"width: 211px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_01.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2608 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_01.jpg\" alt=\"Figuur 4: Een magisch vierkant van 4 bij 4\" width=\"211\" height=\"145\" \/><\/a><figcaption id=\"caption-attachment-2608\" class=\"wp-caption-text\">Figuur 4<\/figcaption><\/figure>\n<p>In bovenstaand 4\u00d74-vierkant zijn de getallen 1 t\/m 16 zodanig ingevuld dat de som van de rijen, kolommen en hoofddiagonalen allemaal gelijk zijn, namelijk 34.<br \/>\nEr zitten nog meer 2\u00d72 vierkantjes in waarvan de som ook 34 bedraagt!<\/p>\n<p>De moeder van alle magische vierkanten, HET magisch vierkant, is een vierkant van 3\u00d73 waar de getallen 1 t\/m 9 zodanig zijn ingevuld dat de som van de rijen, kolommen en diagonalen gelijk zijn, namelijk 15:<\/p>\n<figure id=\"attachment_2609\" aria-describedby=\"caption-attachment-2609\" style=\"width: 169px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_02.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2609 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_02.jpg\" alt=\"Figuur 5: Het magische vierkant van 3 bij 3\" width=\"169\" height=\"121\" \/><\/a><figcaption id=\"caption-attachment-2609\" class=\"wp-caption-text\">Figuur 5<\/figcaption><\/figure>\n<p>Om een 3\u00d73 magisch vierkant te maken kun je gebruik maken van de volgende methode:<\/p>\n<ul>\n<li>Plaats ergens een 1<\/li>\n<li>Plaats het opeenvolgende getal rechts boven het vorige getal<\/li>\n<li>Wanneer je op de bovenste rij en\/of de meest rechtse kolom bent doe dan alsof het vierkant een bol is (dus in het voorbeeld hierboven:\u00a0 bijvoorbeeld de 8 &#8220;grenst&#8221; aan de 9 en de 1 &#8220;grenst&#8221; dan aan de 2 etc.)<\/li>\n<li>Als het vakje al gevuld is ga je \u00e9\u00e9n plaats recht naar onderen<\/li>\n<\/ul>\n<p>Op die manier vul je, als het ware, de diagonalen.<\/p>\n<p>Deze methode werkt voor iedere <em>n<\/em>\u00d7<em>n<\/em>-vierkant waarbij <em>n<\/em> oneven is.<\/p>\n<p>Wanneer je gebruik maakt van opeenvolgende getallen vanaf 1 om een magisch vierkant te vullen dan is de magische som:<\/p>\n<div class=\"wp-katex-eq katex-display\" data-display=\"true\">\\frac{\\sum\\limits_{k=1}^{n}k}{\\sqrt{n}}<\/div>\n<p>Oftewel: Je telt alle getallen van 1 t\/m <em>n<\/em> op en deelt deze som dan door de wortel van <em>n<\/em>.<\/p>\n<p>Voor een 3\u00d73-vierkant krijg je dan: 45\/3=9 en voor het 4\u00d74-vierkant: 136\/4=34.<\/p>\n<p>Een magisch vierkant is verder roteerbaar (90\u00b0, 180\u00b0 ,270\u00b0) en\u00a0 horizontaal, verticaal en diagonaal spiegelbaar:<\/p>\n<figure id=\"attachment_2631\" aria-describedby=\"caption-attachment-2631\" style=\"width: 673px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_03-1.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2631 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_03-1.jpg\" alt=\"Figuur 6: Rotaties en spiegelingen van het Magisch Vierkant\" width=\"673\" height=\"217\" srcset=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_03-1.jpg 673w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_03-1-300x97.jpg 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/a><figcaption id=\"caption-attachment-2631\" class=\"wp-caption-text\">Figuur 6<\/figcaption><\/figure>\n<p>Op het internet zijn heel veel sites over magische vierkanten te vinden. Zo zijn er ook generieke methodes voor een <em>n<\/em>\u00d7<em>n<\/em> vierkant waarbij <em>n<\/em> een viervoud is en generieke methodes voor een <em>n<\/em>\u00d7<em>n<\/em> vierkant met <em>n<\/em> even maar niet deelbaar door 4.<\/p>\n<h3><a id=\"alles\"><\/a>Alles bij elkaar<\/h3>\n<p>En nu komt alles bij elkaar!<\/p>\n<p>Het spelen van het spelletje 15-en is in feite niets anders dan het spelen van Boter-Kaas-en-Eieren met het magische vierkant.<\/p>\n<p>Er bestaat geen winnende strategie voor BKE en dus ook niet voor 15-en.<\/p>\n<p>Er bestaat echter wel een strategie waarbij je nooit hoeft te verliezen, maar die laat ik graag aan de lezer dezes over&#8230;<\/p>\n<p>Als je tegenstander niet zo sterk speelt dan zou je het volgende eens bij BKE kunnen proberen:<\/p>\n<p>Als je als eerste aan de beurt bent zet dan je X in de linker bovenhoek. Je tegenspeler hoeft nog niet defensief te spelen en kan zijn O dus overal neerzetten (behalve linksboven). Als je tegenspeler de O niet in het midden zet probeer dan jouw X in een ander hoekpunt te plaatsen, zo ver mogelijk weg van de O.<br \/>\nHerhaal dat nogmaals zodat je 3 hoekpunten bezet krijgt. Nu moet je tegenspeler wel defensief spelen, want je kunt nu wellicht een horizontale rij of een verticale kolom vullen. Maar je kunt tegelijkertijd ook \u00e9\u00e9n van de diagonalen vullen, zodat je bij de volgende beurt altijd zult winnen!<\/p>\n<p>Deze strategie zie je op de eerste afbeelding van dit artikel.<\/p>\n<p>Ter herinnering:<\/p>\n<figure id=\"attachment_2604\" aria-describedby=\"caption-attachment-2604\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2604 size-medium\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01-300x278.jpg\" alt=\"Figuur 7: Hetzelfde als figuur 3: Een spelletje Boter-Kaas-en-Eieren\" width=\"300\" height=\"278\" srcset=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01-300x278.jpg 300w, https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/bke_01.jpg 364w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2604\" class=\"wp-caption-text\">Figuur 7<\/figcaption><\/figure>\n<p>Zo&#8217;n zelfde strategie kun je nu ook bij 15-en toepassen:<\/p>\n<figure id=\"attachment_2609\" aria-describedby=\"caption-attachment-2609\" style=\"width: 169px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_02.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2609 size-full\" src=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/magisch_vierkant_02.jpg\" alt=\"Figuur 8: Het zelfde als figuur 5: Het magische vierkant van 3 bij 3\" width=\"169\" height=\"121\" \/><\/a><figcaption id=\"caption-attachment-2609\" class=\"wp-caption-text\">Figuur 8<\/figcaption><\/figure>\n<p>Analoog aan de BKE-strategie:<\/p>\n<p>Kies 8, tegenspeler kiest (bv.) 2. Kies 4, tegenspeler kiest 3. Kies 6, tegenspeler kiest 1. Kies 5 en je kunt nu 15 maken met 4, 5 en 6.<\/p>\n<p>Dus je speelt 15-en als BKE met het magische vierkant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inleiding In dit artikel gaan we kijken naar drie verschillende onderwerpen. Allereerst kijken we naar het spelletje 15-en dat met 2 personen kan worden gespeeld of met 1 persoon tegen de computer. Daarna kijken we naar het beroemde spelletje Boter-Kaas-en-Eieren (BKE) en gaan we op zoek naar een goede strategie. Tot slot kijken we naar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2065,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/template-full-width.php","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"class_list":["post-2600","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>15-en, BKE en het magisch vierkant - Wiskunst<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"15-en, BKE en het magisch vierkant - Wiskunst\" \/>\n<meta property=\"og:description\" content=\"Inleiding In dit artikel gaan we kijken naar drie verschillende onderwerpen. Allereerst kijken we naar het spelletje 15-en dat met 2 personen kan worden gespeeld of met 1 persoon tegen de computer. Daarna kijken we naar het beroemde spelletje Boter-Kaas-en-Eieren (BKE) en gaan we op zoek naar een goede strategie. Tot slot kijken we naar [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/\" \/>\n<meta property=\"og:site_name\" content=\"Wiskunst\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-08T12:31:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"889\" \/>\n\t<meta property=\"og:image:height\" content=\"130\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/\",\"name\":\"15-en, BKE en het magisch vierkant - Wiskunst\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wiskunst.nl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/kaartjes.jpg\",\"datePublished\":\"2026-05-05T09:54:42+00:00\",\"dateModified\":\"2026-05-08T12:31:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/kaartjes.jpg\",\"contentUrl\":\"https:\\\/\\\/wiskunst.nl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/kaartjes.jpg\",\"width\":889,\"height\":130},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/15-en-bke-en-het-magisch-vierkant\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wiskunde is leuk\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Nieuwe artikelen\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Artikel 10-1F\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/wiskunde-is-leuk\\\/nieuwe-artikelen\\\/artikel-10-1f\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"15-en, BKE en het magisch vierkant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/\",\"name\":\"Wiskunst\",\"description\":\"2\u221e\u2227&gt;\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wiskunst.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"15-en, BKE en het magisch vierkant - Wiskunst","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:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/","og_locale":"nl_NL","og_type":"article","og_title":"15-en, BKE en het magisch vierkant - Wiskunst","og_description":"Inleiding In dit artikel gaan we kijken naar drie verschillende onderwerpen. Allereerst kijken we naar het spelletje 15-en dat met 2 personen kan worden gespeeld of met 1 persoon tegen de computer. Daarna kijken we naar het beroemde spelletje Boter-Kaas-en-Eieren (BKE) en gaan we op zoek naar een goede strategie. Tot slot kijken we naar [&hellip;]","og_url":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/","og_site_name":"Wiskunst","article_modified_time":"2026-05-08T12:31:46+00:00","og_image":[{"width":889,"height":130,"url":"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"15 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/","url":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/","name":"15-en, BKE en het magisch vierkant - Wiskunst","isPartOf":{"@id":"https:\/\/wiskunst.nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/#primaryimage"},"image":{"@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/#primaryimage"},"thumbnailUrl":"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg","datePublished":"2026-05-05T09:54:42+00:00","dateModified":"2026-05-08T12:31:46+00:00","breadcrumb":{"@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/#primaryimage","url":"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg","contentUrl":"https:\/\/wiskunst.nl\/wp-content\/uploads\/2026\/05\/kaartjes.jpg","width":889,"height":130},{"@type":"BreadcrumbList","@id":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/15-en-bke-en-het-magisch-vierkant\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wiskunst.nl\/"},{"@type":"ListItem","position":2,"name":"Wiskunde is leuk","item":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/"},{"@type":"ListItem","position":3,"name":"Nieuwe artikelen","item":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/"},{"@type":"ListItem","position":4,"name":"Artikel 10-1F","item":"https:\/\/wiskunst.nl\/index.php\/wiskunde-is-leuk\/nieuwe-artikelen\/artikel-10-1f\/"},{"@type":"ListItem","position":5,"name":"15-en, BKE en het magisch vierkant"}]},{"@type":"WebSite","@id":"https:\/\/wiskunst.nl\/#website","url":"https:\/\/wiskunst.nl\/","name":"Wiskunst","description":"2\u221e\u2227&gt;","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wiskunst.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"}]}},"_links":{"self":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/2600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/comments?post=2600"}],"version-history":[{"count":30,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/2600\/revisions"}],"predecessor-version":[{"id":2647,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/2600\/revisions\/2647"}],"up":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/2065"}],"wp:attachment":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/media?parent=2600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}