{"id":4837,"date":"2025-04-13T11:50:59","date_gmt":"2025-04-13T08:50:59","guid":{"rendered":"https:\/\/shibalogia.info\/?p=4837"},"modified":"2025-10-05T17:11:08","modified_gmt":"2025-10-05T14:11:08","slug":"inhorealistinen-pentugeneraattori","status":"publish","type":"post","link":"https:\/\/shibalogia.info\/?p=4837","title":{"rendered":"Inhorealistinen pentugeneraattori"},"content":{"rendered":"    <div class=\"wp-block-bplugins-custom-html\" id='bPluginsCustomHtml-1'>\r\n    <!DOCTYPE html>\n<html lang=\"fi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Lonkkakirjaingeneraattori<\/title>\n    <style>\n        .genotype-container {\n            display: flex;\n            margin-bottom: 20px;\n        }\n        .genotype-select {\n            flex: 1;\n            margin-right: 10px;\n            text-align: center;\n        }\n        .genotype-image {\n            display: block;\n            max-width: 100px;\n            margin: 2px auto;\n        }\n        .puppy {\n            display: inline-block;\n            text-align: center;\n            margin: 1px;\n        }\n        .puppyzero {\n            text-align: center;\n        }\n        .puppy-row {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: flex-start;\n        }\n        .genotype-text {\n            font-weight: bold;\n            margin-top: 1px;\n        }\n        .disease-text {\n            font-size: 0.5em;\n            color: #555;\n            margin-top: 0;\n        }\n        button[type=\"submit\"] {\n            position: relative;  \n            top: -25px;\n        }\n        label {\n            font-weight: bold;\n        }\n        .lonkka-text {\n            position: relative;\n            display: block;\n            margin: 0;\n            padding: 0;\n            font-weight: bold;\n        }\n        .disease-list {\n            list-style-type: none;\n            margin: 0;\n            padding: 0;\n            font-size: 0.9em;\n            line-height: 1.2;\n        }\n        .disease-list li {\n            padding-left: 0;\n            display: inline-block;\n        }\n        .disease-list span {\n            display: inline-block;\n        }\n        .puppy img {\n            margin-top: 5px;\n            margin-bottom: 5px;\n        }\n        .puppy span {\n            margin-top: 0;\n            margin-bottom: 2px;\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <form id=\"genotypeForm\">\n        <div class=\"genotype-container\">\n            <div class=\"genotype-select\">\n                <label for=\"parent1\">Uroksen kirjain:<\/label>\n                <select id=\"parent1\" name=\"parent1\" required>\n                    <option value=\"A\">A-lonkka<\/option>\n                    <option value=\"B\">B-lonkka<\/option>\n                    <option value=\"C\">C-lonkka<\/option>\n                <\/select>\n                <img decoding=\"async\" id=\"parent1Image\" class=\"genotype-image\" src=\"https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/urosa.jpg\" alt=\"Kuva uros\">\n            <\/div>\n\n            <div class=\"genotype-select\">\n                <label for=\"parent2\">Nartun kirjain:<\/label>\n                <select id=\"parent2\" name=\"parent2\" required>\n                    <option value=\"A\">A-lonkka<\/option>\n                    <option value=\"B\">B-lonkka<\/option>\n                    <option value=\"C\">C-lonkka<\/option>\n                <\/select>\n                <img decoding=\"async\" id=\"parent2Image\" class=\"genotype-image\" src=\"https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/narttua.jpg\" alt=\"Kuva narttu\">\n            <\/div>\n        <\/div>\n        <button type=\"submit\" id=\"submitBtn\">Pennuta!<\/button>\n    <\/form>\n\n    <div id=\"results\" class=\"puppy-container\"><\/div>\n\n    <script>\n        const parentImageMap = {\n            A: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/urosa.jpg',\n            B: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/urosb.jpg',\n            C: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/urosc.jpg',\n        };\n\n        const parent2ImageMap = {\n            A: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/narttua.jpg',\n            B: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/narttub.jpg',\n            C: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/narttuc.jpg',\n        };\n\n        const puppyImageMap = {\n            A: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/pentua.jpg',\n            B: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/pentub.jpg',\n            C: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/pentuc.jpg',\n            D: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/pentud.jpg',\n            E: 'https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/pentue.jpg',\n        };\n\n        const puppyTextMap = {\n            A: 'A\/A',\n            B: 'B\/B',\n            C: 'C\/C',\n            D: 'D\/D',\n            E: 'E\/E',\n        };\n\n        const probabilityMap = {\n            AA: { A: 0.62, B: 0.25, C: 0.09, D: 0.04, E: 0.0 },\n            AB: { A: 0.42, B: 0.34, C: 0.17, D: 0.05, E: 0.02 },\n            AC: { A: 0.21, B: 0.37, C: 0.33, D: 0.07, E: 0.02 },\n            BB: { A: 0.38, B: 0.29, C: 0.23, D: 0.07, E: 0.03 },\n            BC: { A: 0.23, B: 0.32, C: 0.25, D: 0.19, E: 0.01 },\n            CC: { C: 0.7, B: 0.2, A: 0.1 },\n            BA: { A: 0.42, B: 0.34, C: 0.17, D: 0.05, E: 0.02 },\n            CB: { A: 0.23, B: 0.32, C: 0.25, D: 0.19, E: 0.01 },\n            CA: { A: 0.21, B: 0.37, C: 0.33, D: 0.07, E: 0.02 }\n        };\n\n        function updateParentDisplay(parentId, isParent2 = false) {\n            const select = document.getElementById(parentId);\n            const value = select.value.trim().toUpperCase();\n            const img = document.getElementById(parentId + 'Image');\n            img.src = isParent2 ? parent2ImageMap[value] : parentImageMap[value];\n        }\n\n        function checkIfDisabled() {\n            const parent1 = document.getElementById('parent1').value.trim().toUpperCase();\n            const parent2 = document.getElementById('parent2').value.trim().toUpperCase();\n            const submitBtn = document.getElementById('submitBtn');\n\n            if (parent1 === 'C' && parent2 === 'C') {\n                submitBtn.disabled = true;\n                submitBtn.style.opacity = '0.5';\n                submitBtn.title = \"C + C -yhdistelm\u00e4 ei ole sallittu.\";\n            } else {\n                submitBtn.disabled = false;\n                submitBtn.style.opacity = '1';\n                submitBtn.removeAttribute('title');\n            }\n        }\n\n        window.onload = () => {\n            updateParentDisplay('parent1');\n            updateParentDisplay('parent2', true);\n            checkIfDisabled();\n        };\n\n        document.getElementById('parent1').addEventListener('change', () => {\n            updateParentDisplay('parent1');\n            checkIfDisabled();\n        });\n\n        document.getElementById('parent2').addEventListener('change', () => {\n            updateParentDisplay('parent2', true);\n            checkIfDisabled();\n        });\n\n        function calculatePuppyCount() {\n            const r = Math.random() * 100;\n            if (r < 15) return 0;\n            if (r < 24) return 1;\n            if (r < 45) return 2;\n            if (r < 83) return 3;\n            if (r < 95) return 4;\n            return 5;\n        }\n\n        function generateSingleLetter(parent1, parent2) {\n            const key = parent1 + parent2;\n            const probabilities = probabilityMap[key];\n            if (!probabilities) return \"A\";\n\n            const r = Math.random();\n            let acc = 0;\n            for (const [letter, prob] of Object.entries(probabilities)) {\n                acc += prob;\n                if (r <= acc) return letter;\n            }\n            return \"A\";\n        }\n\n        function generateRandomDiseases() {\n            const diseases = [];\n            if (Math.random() < 0.28) diseases.push(\"IHO\/SUOLI\");\n            if (Math.random() < 0.15) diseases.push(\"PELKOTILA\");\n            if (Math.random() < 0.07) diseases.push(\"KIVESVIKA\");\n            if (Math.random() < 0.15) diseases.push(\"SAIRAUS X\");\n            return diseases;\n        }\n\n        document.getElementById('genotypeForm').addEventListener('submit', function (event) {\n            event.preventDefault();\n\n            const parent1 = document.getElementById('parent1').value.trim().toUpperCase();\n            const parent2 = document.getElementById('parent2').value.trim().toUpperCase();\n\n            const puppiesCount = calculatePuppyCount();\n            const puppies = [];\n\n            for (let i = 0; i < puppiesCount; i++) {\n                const lonkka = generateSingleLetter(parent1, parent2);\n                const diseases = generateRandomDiseases();\n                puppies.push({ lonkka, diseases: diseases });\n            }\n\n            let resultsHTML = '';\n            if (puppiesCount === 0) {\n                resultsHTML += '<div class=\"puppyzero\">';\n                resultsHTML += '<img decoding=\"async\" src=\"https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/tyhjaboksi.jpg\" alt=\"Kuva pentulaatikosta\"><br>';\n                resultsHTML += '<\/div>';\n            } else {\n                resultsHTML += '<div class=\"puppy-row\">';\n                puppies.forEach(puppy => {\n                    const puppyImage = puppyImageMap[puppy.lonkka];\n                    const puppyText = puppyTextMap[puppy.lonkka];\n                    resultsHTML += '<div class=\"puppy\">';\n                    resultsHTML += '<span class=\"lonkka-text\">' + puppyText + '<\/span>';\n                    resultsHTML += '<img decoding=\"async\" src=\"' + puppyImage + '\" alt=\"Kuva pennusta\">';\n                    if (puppy.diseases.length > 0) {\n                        resultsHTML += '<div class=\"disease-list\">';\n                        puppy.diseases.forEach(disease => {\n                            resultsHTML += '<span>' + disease + '<\/span><br>';\n                        });\n                        resultsHTML += '<\/div>';\n                    }\n                    resultsHTML += '<\/div>';\n                });\n                resultsHTML += '<\/div>';\n            }\n\n            document.getElementById('results').innerHTML = resultsHTML;\n        });\n    <\/script>\n\n<\/body>\n<\/html>\n    <\/div>\r\n    \n\n\n<p>(Inho)realistinen pentugeneraattori on avattu yleis\u00f6lle. T\u00e4ll\u00e4 kertaa voi tutkia niiden legendaaristen lonkkakirjainten periytymist\u00e4 shiboissa. Todenn\u00e4k\u00f6isyydet perustuvat siihen, miten vanhempien tulokset on ennustaneet penskojen kirjaimia viimeisen 20 vuoden aikana.<\/p>\n\n\n\n<p>C x C ja D x mik\u00e4\u00e4n ei ole generoitavissa, koska niist\u00e4 on tiedossa vasta tosi pieni m\u00e4\u00e4r\u00e4 pentuja. Muita on A x A (175), A x B (208), A x C (85), B x B (69), B x C (57). Eriparikirjaimia ei huomioida, eik\u00e4 kirjainten taustatekij\u00f6it\u00e4. <\/p>\n\n\n\n<p>Iho\/suoli on niit\u00e4 shibojen kutinoita ja suolisto-oireiluja. Pelkotila on \u00e4\u00e4niarkuudet ja hy\u00f6nteiskammot yhess\u00e4. N\u00e4ihin todenn\u00e4k\u00f6isyydet terveyskyselyst\u00e4 ja tasaisesti kaikille. Kivesvian ja muiden sairauksien todenn\u00e4k\u00f6isyyksin\u00e4 on 7% ja 15%, ja lienev\u00e4t sinne p\u00e4in.      <\/p>\n\n\n\n<p>Kirjainjalostuksen kulta-aikaa oli selv\u00e4sti 60- ja 70-luvut. Sen j\u00e4lkeen h\u00e4mm\u00e4steltiin tuloksia ja todettiin, ett\u00e4 ei tainnutkaan olla niin yksinkertaista kuin piti. Esimerkiksi <a href=\"https:\/\/jalostus.kennelliitto.fi\/frmTerveys.aspx?R=166&amp;Lang=fi\">t\u00e4m\u00e4n rodun kirjaimia <\/a>on jalostettu nyt yli puoli vuosisataa.<\/p>\n\n\n\n<p>Shibojen kuvat on Craiyon AI:n tuottamia. <\/p>\n\n\n\n<p>C x C ja erilaiset D:t olisi olleet n\u00e4ill\u00e4 m\u00e4\u00e4rill\u00e4 paras valinta.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"745\" height=\"443\" src=\"https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/image-1.png\" alt=\"\" class=\"wp-image-4849\" style=\"width:392px;height:auto\" srcset=\"https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/image-1.png 745w, https:\/\/shibalogia.info\/wp-content\/uploads\/2025\/04\/image-1-300x178.png 300w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Inho)realistinen pentugeneraattori on avattu yleis\u00f6lle. T\u00e4ll\u00e4 kertaa voi tutkia niiden legendaaristen lonkkakirjainten periytymist\u00e4 shiboissa. Todenn\u00e4k\u00f6isyydet perustuvat siihen, miten vanhempien tulokset on ennustaneet penskojen kirjaimia viimeisen 20 vuoden aikana. C x C ja D x mik\u00e4\u00e4n ei ole generoitavissa, koska niist\u00e4 on tiedossa vasta tosi pieni m\u00e4\u00e4r\u00e4 pentuja. Muita on A x A (175), A x [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4850,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","site-transparent-header":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[12,33],"tags":[],"class_list":["post-4837","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-terveys","category-viihde"],"_links":{"self":[{"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/posts\/4837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shibalogia.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4837"}],"version-history":[{"count":9,"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/posts\/4837\/revisions"}],"predecessor-version":[{"id":5153,"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/posts\/4837\/revisions\/5153"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shibalogia.info\/index.php?rest_route=\/wp\/v2\/media\/4850"}],"wp:attachment":[{"href":"https:\/\/shibalogia.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shibalogia.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shibalogia.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}