{"id":61,"date":"2010-03-03T17:29:15","date_gmt":"2010-03-03T16:29:15","guid":{"rendered":"https:\/\/sprutskalle.dk\/blog\/?p=61"},"modified":"2019-02-16T18:30:24","modified_gmt":"2019-02-16T17:30:24","slug":"bankoplader","status":"publish","type":"post","link":"https:\/\/sprutskalle.dk\/blog\/2010\/03\/03\/bankoplader\/","title":{"rendered":"Bankoplader"},"content":{"rendered":"<p>For nylig diskuterede vi i min datters klasser\u00e5d forskellige muligheder for at f\u00e5 penge i klassekassen, uden n\u00f8dvendigvis direkte at opkr\u00e6ve penge hos for\u00e6ldrene.<\/p>\n<p>I den forbindelse fremkom der forslag om at afholde banko-spil. En id\u00e9 jeg synes var god. Det er sjovt, s\u00e5 nemt at mindre s\u00f8skende kan v\u00e6re med og forholdsvis enkelt og billigt at gennemf\u00f8re.<\/p>\n<p>N\u00f8rden i mig begyndte straks med overvejelser om hvordan man kan implementere et system \u2013 gerne web-baseret \u2013 som kan hj\u00e6lpe med afviklingen af et banko-spil. Det kunne v\u00e6re sjovt at lave \ud83d\ude42<\/p>\n<p>F\u00f8rste udfordring er s\u00e5 udformingen af banko-pladerne, for der synes at v\u00e6re et system og nogle regler for tallenes placering p\u00e5 pladerne, men det st\u00e5r ikke klart hvordan og hvorledes.<!--more--><\/p>\n<p><!-- \t\t@page { size: 8.27in 11.69in; margin: 0.79in } \t\tP { margin-bottom: 0.08in } -->Forskelligt udformede s\u00f8gninger p\u00e5 nettet giver mange hits, men de fleste er til online-banko sites, regler for lokale bankoklubber og firmaer som laver banko-udstyr (herunder programmer som kan forest\u00e5 afviklingen af bankospil).<\/p>\n<p>Konkret information om udformingen af bankopladerne er sv\u00e6rere at finde.<\/p>\n<p>Heldigvis har en Nils Andersen (<a title=\"Datalogisk Institut p\u00e5 K\u00f8benhavns Universitet\" href=\"http:\/\/www.diku.dk\" target=\"_blank\" rel=\"noopener\">diku<\/a>) beg\u00e5et et lille skriv om hvor mange forskellige bankoplader der findes \u2013 se <a href=\"https:\/\/sprutskalle.dk\/blog\/wp-content\/uploads\/bankoplader.pdf\">bankoplader<\/a>.<\/p>\n<p>I f\u00f8rste afsnit (1 Specifikation) fremg\u00e5r det tydeligt hvordan bankopladerne udformes; jeg vil repetere dem her:<\/p>\n<ol>\n<li>Der benyttes 15 forskellige tal mellem 1 og 90.<\/li>\n<li>Hver plade har 3 r\u00e6kker med hver 9 kolonner.<\/li>\n<li>Tallene fordeles s\u00e5ledes at der er mindst \u00e9t tal i hver kolonne og pr\u00e6cis 5 i hver r\u00e6kke.<\/li>\n<li>F\u00f8rste kolonne indholder tallene fra 1 t.o.m. 9, anden kolonne 10-19, tredie 20-29 osv.; 9. kolonne indeholder tallene fra 80 t.o.m. 90.<\/li>\n<li>I hver kolonne placeres tallene i stigende orden ovenfra og ned.<\/li>\n<\/ol>\n<p>Det g\u00e5r alts\u00e5 ikke bare at udv\u00e6lge 15 tilf\u00e6ldige tal mellem 1 og 90 og placere dem rundt omkring p\u00e5 pladen!<\/p>\n<p>Jeg har naturligvis hygget mig med at implementere en algoritme i Java, som kan generere bankoplader. Min algoritme er som f\u00f8lger:<\/p>\n<ol>\n<li>F\u00f8rst udv\u00e6lges et tilf\u00e6ldigt tal til hver kolonne; alts\u00e5 9 tal.<\/li>\n<li>De resterende 6 tal v\u00e6lges tilf\u00e6ldigt, dog s\u00e5ledes at der h\u00f8jst er 3 tal i samme kolonne.<\/li>\n<li>Kolonnerne gennemg\u00e5s med henblik p\u00e5 at fordele tallene i r\u00e6kker:\n<ol>\n<li>Kolonner med 3 tal &#8211; her placeres et tal i hver r\u00e6kke, stigende orden.<\/li>\n<li>Kolonner med 2 tal fordeles &#8220;tilf\u00e6ldigt&#8221; i r\u00e6kkerne (dog stadig stigende), s\u00e5 l\u00e6nge det er muligt. Her kan der opst\u00e5 fejl hvis der kun er plads til tal i \u00e9n r\u00e6kke. I s\u00e5 fald startes forfra.<\/li>\n<li>Kolonner med 1 tal fordeles &#8220;tilf\u00e6ldigt&#8221; i r\u00e6kkerne, s\u00e5 l\u00e6nge det er muligt.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Nu g\u00e5r det jo ikke hvis man til et bankospil har flere ens bankoplader, derfor udt\u00e6nktes ogs\u00e5 en algoritme for hvordan man kan &#8220;m\u00e6rke&#8221; hver plade med et id, som indeholder fuld information om pladens opbygning.<\/p>\n<p>N\u00e5r en &#8220;tilf\u00e6ldig&#8221; plade genereres er det alts\u00e5 blot at sammenligne disse id&#8217;er for at sikre at der ikke er 2 ens.<\/p>\n<p>M\u00e5ske vil det ogs\u00e5 v\u00e6re hensigtsm\u00e6ssigt at sikre at der ikke er 2 plader der indeholder de samme tal \u2013 s\u00e5 der ikke er 2 forskellige deltagere der sl\u00e5s om banko-prisen til sidst. En variant af ovenst\u00e5ende id benyttes til dette form\u00e5l.<\/p>\n<p>Endelig udt\u00e6nktes ogs\u00e5 en databasemodel for hvordan bankopladerne kan repr\u00e6senteres s\u00e5 check og opt\u00e6lling af r\u00e6kker og plader kan foreg\u00e5 i databasen, og ikke i applikationen. Starten p\u00e5 en hel applikation er lagt \ud83d\ude42<\/p>\n<p>Af hensyn til dem som kunne t\u00e6nke sig at se outputtet af min &#8220;bankopladegenerator&#8221; har jeg genereret 9000 tilf\u00e6ldige plader, lagt dem i en database og lavet en lille hjemmeside som viser 4 ad gangen (passer med en A4 side). Disse kan benyttes frit: <a title=\"9000 bankoplader\" href=\"http:\/\/www.judby.dk\/bankoplader.php\" target=\"_self\">bankoplader.php<\/a>.<\/p>\n<p>Skal du bruge bankoplader med andet udseende kan du hente inspiration p\u00e5: <a href=\"http:\/\/bankopladerne.dk\">http:\/\/bankopladerne.dk<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bankoplader: lidt om hvordan tallene fordeles p\u00e5 pladerne og hvordan det s\u00e5 kan g\u00f8res. Link til hjemmeside med bankoplader.<\/p>\n","protected":false},"author":1,"featured_media":236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-61","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sjov"],"_links":{"self":[{"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/posts\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":14,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":641,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/posts\/61\/revisions\/641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/media\/236"}],"wp:attachment":[{"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sprutskalle.dk\/blog\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}