{"id":6195,"date":"2025-05-22T18:00:48","date_gmt":"2025-05-22T16:00:48","guid":{"rendered":"https:\/\/fahrtauglich.ch\/?page_id=6195"},"modified":"2026-10-12T15:57:34","modified_gmt":"2026-10-12T13:57:34","slug":"arukone","status":"publish","type":"page","link":"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","title":{"rendered":"Arukone &#8211; Number Link"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6195\" class=\"elementor elementor-6195\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a66490 e-flex e-con-boxed e-con e-parent\" data-id=\"1a66490\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09e14e4 elementor-widget elementor-widget-html\" data-id=\"09e14e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\r\n    Arukone \u2014 fahrtauglich.ch\/praxisportal\/arukone\/\r\n    Einbau: Inhalt dieser Datei vollstaendig in EIN Elementor-HTML-Widget einfuegen.\r\n    Das Snippet deckt die ganze Seite zwischen Header und Footer ab (Titel,\r\n    Einleitung mit Link auf trainmybrain.ch, Spiel, Spielanleitung, Texte, Quellen).\r\n    Alle uebrigen Elementor-Widgets der Seite werden geloescht. Kein\r\n    <html>\/<head>\/<body>: Header und Footer liefert das Theme.\r\n\r\n    Grundlage: trainmybrain-arukone.html (Stand 2026-08-26), Spiellogik und die\r\n    172 Raetsel unveraendert uebernommen. Am 2026-10-12 unabhaengig nachgeprueft\r\n    (eigene SAT-Kodierung der drei Nikoli-Regeln): alle 172 haben genau eine\r\n    Loesung, die hinterlegte Loesung ist jeweils korrekt. Gegenprobe: 20 von 20\r\n    absichtlich entschaerften Raetseln wurden als mehrdeutig erkannt.\r\n    Die alte Fassung dieser Seite verteilte die Zahlen zufaellig: ab Level 7\r\n    war gemessen keines von 40 Brettern loesbar, keines war je eindeutig.\r\n\r\n    Optik: fahrtauglich.ch \u2014 Poppins, Gelb #FFBF00, Flaechen #F3F5F8, Pill-Buttons.\r\n    Alles CSS haengt an #ftar, damit nichts in die Elementor-Seite durchschlaegt.\r\n-->\r\n<style>\r\n    #ftar {\r\n        --ftar-gelb: #FFBF00;\r\n        --ftar-gelb-dunkel: #E6AB00;\r\n        --ftar-gelb-hell: #FFF4CC;\r\n        --ftar-schwarz: #000000;\r\n        --ftar-text: #1F2937;\r\n        --ftar-text-2: #4B5563;\r\n        --ftar-flaeche: #F3F5F8;\r\n        --ftar-linie: #C8D5DC;\r\n        --ftar-gruen: #047857;\r\n        --ftar-fehler: #B91C1C;\r\n\r\n        font-family: 'Poppins', sans-serif;\r\n        color: var(--ftar-text);\r\n        line-height: 1.5;\r\n        width: 100%;\r\n        max-width: 850px;\r\n        margin: 20px auto 60px;\r\n        box-sizing: border-box;\r\n    }\r\n    #ftar *, #ftar *::before, #ftar *::after { box-sizing: border-box; }\r\n    #ftar [hidden] { display: none !important; }\r\n\r\n    \/* ===== Seitenkopf \u2014 Masse wie die bisherigen Elementor-Widgets ===== *\/\r\n    #ftar .ftar-titel {\r\n        margin: 0;\r\n        font-family: inherit;\r\n        font-size: 48px;\r\n        font-weight: 600;\r\n        line-height: 1.2;\r\n        letter-spacing: 0;\r\n        text-align: center;\r\n        color: var(--ftar-schwarz);\r\n    }\r\n    #ftar .ftar-intro {\r\n        max-width: 760px;\r\n        margin: 50px auto 0;\r\n        font-size: 20px;\r\n        font-weight: 300;\r\n        line-height: 1.5;\r\n        text-align: center;\r\n        color: var(--ftar-schwarz);\r\n    }\r\n    \/* Links: schwarz mit gelber Unterstreichung \u2014 Gelb als Schrift auf Weiss\r\n       hielte nur 1.65:1. *\/\r\n    #ftar .ftar-intro a,\r\n    #ftar .ftar-box a {\r\n        color: var(--ftar-schwarz);\r\n        font-weight: 400;\r\n        text-decoration: underline;\r\n        text-decoration-color: var(--ftar-gelb);\r\n        text-decoration-thickness: 3px;\r\n        text-underline-offset: 3px;\r\n        overflow-wrap: anywhere;\r\n    }\r\n    #ftar .ftar-intro a:hover, #ftar .ftar-box a:hover,\r\n    #ftar .ftar-intro a:focus, #ftar .ftar-box a:focus { color: var(--ftar-schwarz); background: rgba(255, 191, 0, 0.18); }\r\n    #ftar a:focus-visible { outline: 3px solid var(--ftar-schwarz); outline-offset: 2px; }\r\n\r\n    \/* Spielkarte (Optik wie Wordle auf fahrtauglich.ch). overflow: clip statt\r\n       hidden \u2014 sonst verschiebt ein Fokus\/scrollIntoView den Karteninhalt. *\/\r\n    #ftar .ftar-karte {\r\n        position: relative;\r\n        overflow: clip;\r\n        background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\r\n        border: 2px solid #dee2e6;\r\n        border-radius: 20px;\r\n        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\r\n        padding: 36px 30px;\r\n    }\r\n    #ftar .ftar-karte::before {\r\n        content: '';\r\n        position: absolute;\r\n        top: -50%; left: -50%;\r\n        width: 200%; height: 200%;\r\n        background: radial-gradient(circle, rgba(52, 58, 64, 0.05) 1px, transparent 1px);\r\n        background-size: 30px 30px;\r\n        animation: ftar-hintergrund 25s linear infinite;\r\n        z-index: 0;\r\n        pointer-events: none;\r\n    }\r\n    @keyframes ftar-hintergrund {\r\n        0%   { transform: translate(0, 0) rotate(0deg); }\r\n        100% { transform: translate(-30px, -30px) rotate(360deg); }\r\n    }\r\n\r\n    \/* ===== Buttons (Pill-Stil der fahrtauglich.ch-Buttons) ===== *\/\r\n    #ftar .ftar-knopf {\r\n        -webkit-appearance: none;\r\n        appearance: none;\r\n        margin: 0;\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        min-height: 48px;\r\n        padding: 10px 28px;\r\n        background: var(--ftar-gelb);\r\n        border: 2px solid var(--ftar-gelb);\r\n        border-radius: 100px;\r\n        box-shadow: none;\r\n        font-family: inherit;\r\n        font-size: 1rem;\r\n        font-weight: 500;\r\n        line-height: 1.2;\r\n        text-transform: none;\r\n        text-decoration: none;\r\n        color: var(--ftar-schwarz);\r\n        cursor: pointer;\r\n        transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;\r\n    }\r\n    #ftar .ftar-knopf:hover,\r\n    #ftar .ftar-knopf:focus {\r\n        background: var(--ftar-gelb-dunkel);\r\n        border-color: var(--ftar-gelb-dunkel);\r\n        color: var(--ftar-schwarz);\r\n    }\r\n    #ftar .ftar-knopf:hover { transform: translateY(-1px); }\r\n    #ftar .ftar-knopf-hell { background: #ffffff; border-color: var(--ftar-schwarz); }\r\n    #ftar .ftar-knopf-hell:hover,\r\n    #ftar .ftar-knopf-hell:focus { background: var(--ftar-flaeche); border-color: var(--ftar-schwarz); }\r\n    #ftar .ftar-knopf-klein { min-height: 44px; padding: 8px 20px; font-size: 0.9rem; }\r\n\r\n    #ftar .ftar-knopf:focus-visible,\r\n    #ftar summary:focus-visible {\r\n        outline: 3px solid var(--ftar-schwarz);\r\n        outline-offset: 2px;\r\n    }\r\n\r\n    \/* ===== Spielanleitung ===== *\/\r\n    #ftar .ftar-anleitung {\r\n        margin-top: 24px;\r\n        text-align: left;\r\n        background: #ffffff;\r\n        border-radius: 8px;\r\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);\r\n        padding: 15px 18px;\r\n    }\r\n    #ftar .ftar-anleitung summary {\r\n        cursor: pointer;\r\n        list-style: none;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        gap: 1rem;\r\n        padding: 4px 0;\r\n        font-size: 1.15rem;\r\n        font-weight: 600;\r\n        color: var(--ftar-schwarz);\r\n        user-select: none;\r\n    }\r\n    #ftar .ftar-anleitung summary::-webkit-details-marker { display: none; }\r\n    #ftar .ftar-chev { width: 20px; height: 20px; flex: 0 0 auto; transition: transform 0.2s ease; }\r\n    #ftar .ftar-anleitung[open] .ftar-chev { transform: rotate(180deg); }\r\n    #ftar .ftar-anleitung-liste {\r\n        list-style: none;\r\n        margin: 12px 0 4px;\r\n        padding: 0;\r\n        display: grid;\r\n        gap: 8px;\r\n    }\r\n    #ftar .ftar-anleitung-liste li {\r\n        margin: 0;\r\n        padding: 10px 14px;\r\n        background: var(--ftar-flaeche);\r\n        border-left: 3px solid var(--ftar-gelb);\r\n        border-radius: 6px;\r\n        font-size: 0.95rem;\r\n        font-weight: 300;\r\n        line-height: 1.55;\r\n        color: var(--ftar-schwarz);\r\n    }\r\n    #ftar .ftar-anleitung-liste li strong { font-weight: 600; }\r\n\r\n    \/* ===== Textabschnitte (Kartenstil der bisherigen Textboxen) ===== *\/\r\n    #ftar .ftar-abschnitt { margin-top: 70px; }\r\n    #ftar .ftar-abschnitt h2 {\r\n        margin: 0 0 20px;\r\n        font-family: inherit;\r\n        font-size: 36px;\r\n        font-weight: 600;\r\n        line-height: 1.2;\r\n        letter-spacing: 0;\r\n        text-transform: none;\r\n        text-align: center;\r\n        color: var(--ftar-schwarz);\r\n    }\r\n    #ftar .ftar-box {\r\n        background: #ffffff;\r\n        border-radius: 8px;\r\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\r\n        padding: 15px 20px;\r\n        font-size: 22px;\r\n        font-weight: 300;\r\n        line-height: 1.5;\r\n        color: var(--ftar-schwarz);\r\n        text-align: left;\r\n    }\r\n    #ftar .ftar-box p { margin: 0 0 14px; }\r\n    #ftar .ftar-box p:last-child { margin-bottom: 0; }\r\n    #ftar .ftar-box strong { font-weight: 500; }\r\n\r\n    #ftar .ftar-tipps { margin: 0; padding-left: 1.2em; }\r\n    #ftar .ftar-tipps li { margin: 0 0 14px; padding-left: 0.2em; }\r\n    #ftar .ftar-tipps li:last-child { margin-bottom: 0; }\r\n    #ftar .ftar-tipps li::marker { color: var(--ftar-gelb-dunkel); }\r\n    #ftar .ftar-tipps strong { display: block; }\r\n\r\n    #ftar .ftar-nutzen { list-style: none; margin: 6px 0 14px; padding: 0; }\r\n    #ftar .ftar-nutzen li {\r\n        display: grid;\r\n        grid-template-columns: 2.4em 1fr;\r\n        gap: 0 0.6em;\r\n        padding: 14px 0;\r\n        border-top: 1px solid var(--ftar-linie);\r\n    }\r\n    #ftar .ftar-nutzen li:last-child { border-bottom: 1px solid var(--ftar-linie); }\r\n    #ftar .ftar-nutzen-nr { font-weight: 600; line-height: 1.5; color: var(--ftar-gelb-dunkel); }\r\n    #ftar .ftar-nutzen strong { display: block; }\r\n    #ftar .ftar-vermerk {\r\n        padding: 10px 14px;\r\n        background: var(--ftar-flaeche);\r\n        border-left: 3px solid var(--ftar-gelb);\r\n        border-radius: 6px;\r\n        font-size: 0.85em;\r\n    }\r\n    #ftar .ftar-quellen-titel { margin-top: 20px !important; font-weight: 500; }\r\n    #ftar .ftar-quellen { list-style: none; margin: 0; padding: 0; font-size: 0.8em; }\r\n    #ftar .ftar-quellen li { margin: 0 0 10px; }\r\n    #ftar .ftar-quellen li:last-child { margin-bottom: 0; }\r\n\r\n    #ftar .ftar-sr { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\r\n    \/* ===== Spielbereich ===== *\/\r\n    #ftar .ftar-spiel {\r\n        max-width: 680px;\r\n        margin: 34px auto 0;\r\n        text-align: center;\r\n    }\r\n    #ftar .ftar-inhalt {\r\n        position: relative;\r\n        z-index: 1;\r\n        display: flex;\r\n        flex-direction: column;\r\n        align-items: center;\r\n        gap: 14px;\r\n    }\r\n    \/* Feste Hoehe von zwei Zeilen: sonst verschiebt jede Meldung das Brett *\/\r\n    #ftar .ftar-info {\r\n        max-width: 480px;\r\n        min-height: 3em;\r\n        margin: 0;\r\n        font-size: 1rem;\r\n        line-height: 1.5;\r\n        color: var(--ftar-text);\r\n    }\r\n    #ftar .ftar-fortschritt {\r\n        width: 100%;\r\n        max-width: 480px;\r\n        height: 8px;\r\n        background: rgba(0, 0, 0, 0.08);\r\n        border-radius: 100px;\r\n        overflow: hidden;\r\n    }\r\n    #ftar .ftar-fortschritt-fuellung {\r\n        height: 100%;\r\n        width: 0%;\r\n        background: var(--ftar-gelb);\r\n        border-radius: 100px;\r\n        transition: width 0.4s ease;\r\n    }\r\n\r\n    \/* Brett: quadratisch, Zellgroesse folgt aus dem Raster *\/\r\n    #ftar #ftar-game-board {\r\n        display: grid;\r\n        grid-template-columns: repeat(var(--ar-n, 10), 1fr);\r\n        grid-template-rows: repeat(var(--ar-n, 10), 1fr);\r\n        width: min(100%, 520px);\r\n        aspect-ratio: 1;\r\n        gap: var(--ar-gap, 2px);\r\n        padding: var(--ar-pad, 8px);\r\n        background: #343a40;\r\n        border-radius: 12px;\r\n        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);\r\n        touch-action: none;          \/* hier wird gezogen *\/\r\n        container-type: inline-size; \/* Bezug fuer die Schriftgroesse der Zellen *\/\r\n    }\r\n    #ftar #ftar-game-board:empty { display: none; }\r\n    #ftar .ar-cell {\r\n        min-width: 0;\r\n        min-height: 0;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        background: #ffffff;\r\n        border: 2px solid #DDE3E8;\r\n        border-radius: 4px;\r\n        font-family: inherit;\r\n        font-weight: 600;\r\n        font-size: clamp(0.5rem, calc(42cqi \/ var(--ar-n, 10)), 1.15rem);\r\n        line-height: 1;\r\n        cursor: pointer;\r\n        transition: background 0.1s ease, border-color 0.1s ease;\r\n        -webkit-user-select: none;\r\n        user-select: none;\r\n        -webkit-tap-highlight-color: transparent;\r\n    }\r\n    #ftar .ar-cell:not(.terminal):not(.path):not(.active-path):hover { border-color: var(--ftar-gelb-dunkel); background: var(--ftar-gelb-hell); }\r\n    #ftar .ar-cell.terminal { font-weight: 700; background: #ffffff; }\r\n    #ftar .ar-cell.terminal:hover { opacity: 0.85; }\r\n    #ftar .ar-cell.ar-hint-flash { outline: 3px solid var(--ftar-schwarz); outline-offset: -3px; z-index: 1; }\r\n    @media (prefers-reduced-motion: no-preference) {\r\n        #ftar .ar-cell.ar-hint-flash { animation: ftar-puls 0.5s ease-in-out 2; }\r\n    }\r\n    @keyframes ftar-puls {\r\n        0%, 100% { transform: scale(1); }\r\n        50%      { transform: scale(1.1); }\r\n    }\r\n\r\n    #ftar .ftar-knoepfe { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }\r\n    #ftar .ftar-statistik {\r\n        display: flex;\r\n        gap: 10px 24px;\r\n        flex-wrap: wrap;\r\n        justify-content: center;\r\n        font-size: 0.95rem;\r\n        font-weight: 500;\r\n        color: var(--ftar-schwarz);\r\n        font-variant-numeric: tabular-nums;\r\n    }\r\n\r\n    #ftar .ftar-sr { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\r\n\r\n    \/* ===== Responsive (Elementor: Tablet <= 1024px, Handy <= 767px) ===== *\/\r\n    @media (max-width: 1024px) {\r\n        #ftar .ftar-titel { font-size: 45px; }\r\n        #ftar .ftar-intro { font-size: 16px; margin-top: 30px; }\r\n        #ftar .ftar-box   { font-size: 16px; }\r\n    }\r\n    @media (max-width: 768px) {\r\n        #ftar { max-width: 95%; }\r\n        #ftar .ftar-karte { padding: 24px 20px; }\r\n    }\r\n    @media (max-width: 767px) {\r\n        #ftar .ftar-titel { font-size: 28px; }\r\n        #ftar .ftar-intro { margin-top: 20px; }\r\n        #ftar .ftar-spiel { margin-top: 24px; }\r\n        #ftar .ftar-abschnitt { margin-top: 50px; }\r\n        #ftar .ftar-abschnitt h2 { font-size: 28px; }\r\n        #ftar .ftar-box   { padding: 15px; }\r\n    }\r\n    @media (max-width: 520px) {\r\n        #ftar .ftar-karte { padding: 16px 8px; border-radius: 16px; }\r\n        #ftar #ftar-game-board { --ar-gap: 1px; --ar-pad: 4px; }\r\n        #ftar .ar-cell { border-width: 1px; border-radius: 2px; }\r\n        #ftar .ftar-knoepfe .ftar-knopf { padding: 10px 16px; font-size: 0.95rem; }\r\n        #ftar .ftar-statistik { gap: 6px 16px; font-size: 0.88rem; }\r\n    }\r\n\r\n    @media (prefers-reduced-motion: reduce) {\r\n        #ftar *, #ftar *::before, #ftar *::after {\r\n            animation-duration: 0.01ms !important;\r\n            animation-iteration-count: 1 !important;\r\n            transition-duration: 0.01ms !important;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"ftar\">\r\n\r\n    <div class=\"ftar-sr\" aria-live=\"polite\" aria-atomic=\"true\" id=\"ftar-sr\"><\/div>\r\n\r\n    <h1 class=\"ftar-titel\">Arukone \u2013 Number Link<\/h1>\r\n\r\n    <p class=\"ftar-intro\">Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen. Jedes R\u00e4tsel hat genau eine L\u00f6sung. Weitere Spiele f\u00fcr Ged\u00e4chtnis, Konzentration und Logik finden Sie auf <a href=\"https:\/\/trainmybrain.ch\/\">trainmybrain.ch<\/a>, unserer Plattform f\u00fcr kognitive Spiele.<\/p>\r\n\r\n    <div class=\"ftar-spiel\">\r\n\r\n        <section class=\"ftar-karte\" aria-label=\"Arukone Spielbereich\">\r\n            <div class=\"ftar-inhalt\">\r\n\r\n                <p class=\"ftar-info\" id=\"ftar-game-info\" aria-live=\"polite\">Gleiche Zahlen durch Linien verbinden, ohne Kreuzungen.<\/p>\r\n\r\n                <div class=\"ftar-fortschritt\" aria-hidden=\"true\">\r\n                    <div class=\"ftar-fortschritt-fuellung\" id=\"ftar-progress-fill\"><\/div>\r\n                <\/div>\r\n\r\n                <div id=\"ftar-game-board\" role=\"application\" aria-label=\"Arukone-R\u00e4tsel mit 10 mal 10 Feldern. Von einer Zahl zur gleichen Zahl ziehen.\"><\/div>\r\n\r\n                <div class=\"ftar-knoepfe\">\r\n                    <button type=\"button\" class=\"ftar-knopf ftar-knopf-hell\" id=\"ftar-clear-button\">Zur\u00fccksetzen<\/button>\r\n                    <button type=\"button\" class=\"ftar-knopf ftar-knopf-hell\" id=\"ftar-hint-button\">Hinweis<\/button>\r\n                <\/div>\r\n\r\n                <nav class=\"ftar-knoepfe\" aria-label=\"R\u00e4tselauswahl\">\r\n                    <button type=\"button\" class=\"ftar-knopf ftar-knopf-hell\" id=\"ftar-prev-button\" aria-label=\"Vorheriges R\u00e4tsel\">\u2190 Zur\u00fcck<\/button>\r\n                    <button type=\"button\" class=\"ftar-knopf\" id=\"ftar-random-button\">Zuf\u00e4lliges R\u00e4tsel<\/button>\r\n                    <button type=\"button\" class=\"ftar-knopf ftar-knopf-hell\" id=\"ftar-next-button\" aria-label=\"N\u00e4chstes R\u00e4tsel\">Weiter \u2192<\/button>\r\n                <\/nav>\r\n\r\n                <div class=\"ftar-statistik\">\r\n                    <span id=\"ftar-pairs-display\">Paare: 0 \/ 0<\/span>\r\n                    <span id=\"ftar-time-display\">Zeit: 0:00<\/span>\r\n                <\/div>\r\n\r\n            <\/div>\r\n        <\/section>\r\n\r\n        <!-- Spielanleitung -->\r\n        <details class=\"ftar-anleitung\" id=\"ftar-anleitung\">\r\n            <summary>\r\n                Spielanleitung\r\n                <svg class=\"ftar-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\r\n            <\/summary>\r\n            <ul class=\"ftar-anleitung-liste\">\r\n                <li><strong>Weg ziehen:<\/strong> Auf eine Zahl tippen und mit gedr\u00fcckter Maustaste oder dem Finger bis zur gleichen Zahl ziehen, waagrecht und senkrecht, nie diagonal.<\/li>\r\n                <li><strong>Oder Feld f\u00fcr Feld:<\/strong> Statt zu ziehen k\u00f6nnen Sie die Felder auch einzeln antippen.<\/li>\r\n                <li><strong>Leere Felder sind erlaubt:<\/strong> Nicht jedes Feld muss benutzt werden. Gel\u00f6st ist das R\u00e4tsel, sobald alle Paare verbunden sind.<\/li>\r\n                <li><strong>Korrigieren:<\/strong> Im laufenden Weg zur\u00fcckziehen k\u00fcrzt ihn. Ein Tipp auf eine fertige Verbindung l\u00f6st sie wieder. \u00abZur\u00fccksetzen\u00bb r\u00e4umt das ganze Brett.<\/li>\r\n                <li><strong>Hinweis:<\/strong> Tr\u00e4gt den richtigen Weg eines Paares f\u00fcr Sie ein.<\/li>\r\n                <li><strong>Weitere R\u00e4tsel:<\/strong> Mit \u00abZur\u00fcck\u00bb, \u00abWeiter\u00bb oder \u00abZuf\u00e4lliges R\u00e4tsel\u00bb wechseln Sie zwischen 172 R\u00e4tseln. Gel\u00f6ste R\u00e4tsel merkt sich Ihr Browser.<\/li>\r\n            <\/ul>\r\n        <\/details>\r\n\r\n    <\/div><!-- \/.ftar-spiel -->\r\n\r\n    <!-- ===== Wie funktioniert Arukone? ===== -->\r\n    <section class=\"ftar-abschnitt\" aria-labelledby=\"ftar-h-regeln\">\r\n        <h2 id=\"ftar-h-regeln\">Wie funktioniert Arukone?<\/h2>\r\n        <div class=\"ftar-box\">\r\n            <p>Arukone, auch Number Link oder Nanbarinku genannt, ist ein Logikr\u00e4tsel aus Japan. Auf einem Gitter stehen Zahlenpaare: zweimal die 1, zweimal die 2 und so weiter. Es gelten drei Regeln:<\/p>\r\n            <ol class=\"ftar-nutzen\">\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">01<\/span><div>Verbinden Sie je zwei gleiche Zahlen durch eine durchgehende Linie.<\/div><\/li>\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">02<\/span><div>Die Linien verlaufen waagrecht oder senkrecht von Feld zu Feld und nie zweimal durch dasselbe Feld.<\/div><\/li>\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">03<\/span><div>Linien kreuzen sich nicht, verzweigen sich nicht und f\u00fchren nicht durch ein Zahlenfeld.<\/div><\/li>\r\n            <\/ol>\r\n            <p>Nicht jedes Feld muss benutzt werden. Jedes der 172 R\u00e4tsel auf dieser Seite wurde vorab mit einem Computerprogramm gepr\u00fcft: Es gibt genau eine L\u00f6sung. Was Sie sicher ableiten, stimmt also auch, und Sie sind fertig, sobald das letzte Paar verbunden ist.<\/p>\r\n            <p>Was einfach klingt, wird schnell knifflig. Jede Linie verstellt den anderen Paaren Wege. Wer vorschnell auf dem k\u00fcrzesten Weg verbindet, mauert sich ein und kommt mit dem letzten Paar nicht mehr durch.<\/p>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Nutzen ===== -->\r\n    <section class=\"ftar-abschnitt\" aria-labelledby=\"ftar-h-nutzen\">\r\n        <h2 id=\"ftar-h-nutzen\">Was ist der Nutzen von Arukone?<\/h2>\r\n        <div class=\"ftar-box\">\r\n            <p>Arukone verlangt, mehrere Wege gleichzeitig im Kopf zu planen. Dabei sind diese F\u00e4higkeiten gefordert:<\/p>\r\n            <ol class=\"ftar-nutzen\">\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">01<\/span><div><strong>Vorausplanen<\/strong>Bevor Sie eine Linie ziehen, \u00fcberlegen Sie, welchen Paaren sie den Weg versperrt.<\/div><\/li>\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">02<\/span><div><strong>R\u00e4umliches Vorstellungsverm\u00f6gen<\/strong>M\u00f6gliche Wege durch das Gitter sehen, bevor sie gezeichnet sind.<\/div><\/li>\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">03<\/span><div><strong>Logisches Schliessen<\/strong>Aus Engstellen und belegten Feldern ableiten, welcher Weg zwingend ist.<\/div><\/li>\r\n                <li><span class=\"ftar-nutzen-nr\" aria-hidden=\"true\">04<\/span><div><strong>Umdenken<\/strong>Eine Sackgasse erkennen, eine Verbindung l\u00f6sen und einen anderen Weg versuchen.<\/div><\/li>\r\n            <\/ol>\r\n            <p class=\"ftar-vermerk\">Arukone ist ein Denkspiel zur Unterhaltung und zum \u00dcben. Es ist kein Test und sagt nichts \u00fcber die Fahreignung aus.<\/p>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Tipps ===== -->\r\n    <section class=\"ftar-abschnitt\" aria-labelledby=\"ftar-h-tipps\">\r\n        <h2 id=\"ftar-h-tipps\">Tipps f\u00fcr Arukone<\/h2>\r\n        <div class=\"ftar-box\">\r\n            <ul class=\"ftar-tipps\">\r\n                <li><strong>R\u00e4nder und Ecken zuerst<\/strong>Zahlen am Rand haben weniger m\u00f6gliche Wege. Oft ist ihre Verbindung schnell klar und schr\u00e4nkt die \u00fcbrigen ein.<\/li>\r\n                <li><strong>Engstellen suchen<\/strong>F\u00fchrt zwischen zwei Bereichen nur ein schmaler Durchgang, muss genau eine Linie dort hindurch.<\/li>\r\n                <li><strong>Der k\u00fcrzeste Weg ist selten der richtige<\/strong>Eine Luftlinie blockiert meist einen Korridor, den ein anderes Paar noch braucht. Lange Wege laufen oft am Rand entlang.<\/li>\r\n                <li><strong>Vom anderen Ende denken<\/strong>Wirkt ein Weg verbaut, planen Sie ihn von der zweiten Zahl aus.<\/li>\r\n                <li><strong>Fr\u00fch l\u00f6sen statt sp\u00e4t feststecken<\/strong>Tippen Sie auf eine fertige Verbindung, um sie zu l\u00f6sen, sobald sie im Weg steht. Je fr\u00fcher, desto weniger Folgefehler.<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Hintergrund ===== -->\r\n    <section class=\"ftar-abschnitt\" aria-labelledby=\"ftar-h-hintergrund\">\r\n        <h2 id=\"ftar-h-hintergrund\">Hintergrund<\/h2>\r\n        <div class=\"ftar-box\">\r\n            <p>R\u00e4tsel dieser Art sind \u00e4lter, als man denkt. Eine fr\u00fche Form erschien 1897 in einer R\u00e4tselspalte von Sam Loyd im \u00abBrooklyn Daily Eagle\u00bb. Der englische R\u00e4tselautor Henry Ernest Dudeney nahm 1917 eine Variante in sein Buch \u00abAmusements in Mathematics\u00bb auf, passenderweise als R\u00e4tsel f\u00fcr Autofahrer.<\/p>\r\n            <p>Bekannt wurde das R\u00e4tsel durch den japanischen Verlag Nikoli unter den Namen Arukone und Nanbarinku (Number Link). Heute gibt es zahlreiche Varianten, auch als Apps. Auch die Informatik besch\u00e4ftigt sich damit: Bei wachsender Zahl von Paaren gilt das L\u00f6sen solcher R\u00e4tsel als grunds\u00e4tzlich schwer, auch f\u00fcr Computer (NP-vollst\u00e4ndig).<\/p>\r\n            <p class=\"ftar-quellen-titel\">Quellen<\/p>\r\n            <ul class=\"ftar-quellen\">\r\n                <li>Dudeney, H. E. (1917). <em>Amusements in Mathematics.<\/em> London: Thomas Nelson and Sons (R\u00e4tsel 252).<\/li>\r\n                <li>Wikipedia: Numberlink. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Numberlink\" target=\"_blank\" rel=\"noopener\">https:\/\/en.wikipedia.org\/wiki\/Numberlink<\/a><\/li>\r\n                <li>Wikipedia: Arukone. <a href=\"https:\/\/de.wikipedia.org\/wiki\/Arukone\" target=\"_blank\" rel=\"noopener\">https:\/\/de.wikipedia.org\/wiki\/Arukone<\/a><\/li>\r\n            <\/ul>\r\n        <\/div>\r\n    <\/section>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n    'use strict';\r\n\r\n    \/\/ Elementor oder ein Optimierungs-Plugin kann das Skript nach\r\n    \/\/ DOMContentLoaded ausfuehren \u2014 dann wuerde ein reiner Listener nie feuern.\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', ftarStart);\r\n    } else {\r\n        ftarStart();\r\n    }\r\n\r\n    function ftarStart() {\r\n        const root = document.getElementById('ftar');\r\n        if (!root || root.dataset.ftarBereit) return;\r\n        root.dataset.ftarBereit = '1';\r\n\r\n        \/** Spielereignis an GTM (dataLayer). Nur Spieldaten, keine Personendaten. *\/\r\n        function ftEvent(daten) {\r\n            try {\r\n                window.dataLayer = window.dataLayer || [];\r\n                window.dataLayer.push(Object.assign({ spiel_seite: 'fahrtauglich' }, daten));\r\n            } catch (e) {}\r\n        }\r\n\r\n        \/* ============================================================\r\n           ARUKONE \u2014 Number Link nach den Regeln von Nikoli\r\n           ============================================================\r\n\r\n           Es gelten die drei Regeln von Nikoli, unveraendert:\r\n             1. Gleiche Zahlen durch eine durchgehende Linie verbinden.\r\n             2. Linien laufen waagerecht oder senkrecht von Feldmitte zu Feldmitte\r\n                und nie zweimal durch dasselbe Feld.\r\n             3. Linien kreuzen sich nicht, verzweigen nicht und fuehren nicht durch\r\n                ein Zahlenfeld.\r\n\r\n           Eine Pflicht, JEDES Feld zu belegen, gibt es NICHT \u2014 Nikoli kennt sie\r\n           nicht, und janko.at verneint sie ausdruecklich (\"Nicht jedes Feld wird\r\n           notwendigerweise von einer Linie durchquert\"). Gewonnen ist daher,\r\n           sobald alle Paare regelkonform verbunden sind.\r\n\r\n           Die 172 Raetsel sind offline erzeugt und jedes einzelne mit einem\r\n           unabhaengigen SAT-Solver darauf geprueft, dass es unter genau diesen\r\n           drei Regeln GENAU EINE Loesung hat. Weil die Loesung eindeutig ist,\r\n           genuegt als Siegpruefung, dass alle Paare verbunden sind \u2014 ein Abgleich\r\n           mit der hinterlegten Loesung ist nicht noetig. Diese dient allein dem\r\n           Hinweis-Knopf.\r\n\r\n           Die Reihenfolge 1..172 ist eine grobe Sortierung nach Erzeugungsmerkmalen,\r\n           KEINE Schwierigkeitsskala, und wird auch nicht als solche bezeichnet.\r\n\r\n           Format je Raetsel: p = Gitter mit den Zahlenpaaren, s = Loesungsgitter.\r\n           '.' ist ein leeres Feld, Paare sind base36-Ziffern. Gitter immer 10x10. *\/\r\n\r\n        const AR_PUZZLES = [\r\n            \/*   1 *\/ {p:\"7.........1...2.3...78....28...3..1................4.....4....56..65................................\",s:\"7777777777111122333778811228377388188837733888333774333334477456666547745555554774444444477777777777\"},\r\n            \/*   2 *\/ {p:\"...............4.5....8....6...32..........1.......2.........................6....83.4.5..717.......\",s:\"7777777777733334455773883346577328834657722183465772118346577118834657718833465771833445577177777777\"},\r\n            \/*   3 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5..........65..........6..4......................\",s:\"7777777777111122333778811228377388118837733888843775333334377565553437756665343775555533377777777777\"},\r\n            \/*   4 *\/ {p:\".......717......38.....54........6..............2.......1......6...2.....5...83.....4...............\",s:\"7777777717744443381774554388177456338117745638812774563811277456388227745533883774444333377777777777\"},\r\n            \/*   5 *\/ {p:\".......................5.4.83....6...2........1...........2....6..........54..........38.........717\",s:\"7777777777733333333773554488377356488227735648112773564881277356448117735554881773333338177777777717\"},\r\n            \/*   6 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5...................6..6..4...5..................\",s:\"7777777777111122333778811228377388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*   7 *\/ {p:\"................................56..65...4.....4................1...3...82....87..3..2...1.........7\",s:\"7777777777744444444774555555477456666547743333344773388833377388188837738211188773322211117777777777\"},\r\n            \/*   8 *\/ {p:\".................................6..65....5.........4....4.......1..3...82....87...3.2...1.........7\",s:\"7777777777733333333773555555377356666537735444443773448884377388818837738221188773332211117777777777\"},\r\n            \/*   9 *\/ {p:\".......717..5.4.38....6.........................2.......1..........23...6....8....5.4...............\",s:\"7777777717755443381775643388177564388117756438112775643812277564388237756433883775544333377777777777\"},\r\n            \/*  10 *\/ {p:\".........7..4..2...1..82....87.4..1...3...3....5.........6.....6.............5......................\",s:\"7777777777744222111174821118877488188837733888553773555556377356666637735555553773333333377777777777\"},\r\n            \/*  11 *\/ {p:\".........7...3.2...1..82....87....1...3........4...5..........65..........6..4......................\",s:\"7777777777733322111173822118877388118837733888843775333334377565553437756665343775555533377777777777\"},\r\n            \/*  12 *\/ {p:\"..............4........5...8.....6...23.......1...........2....6.........5..........4.38.........717\",s:\"7777777777744443333774553388377456388237745638122774563811277456388117745533881774444338177777777717\"},\r\n            \/*  13 *\/ {p:\"717.........83...........45.........6....2...........1........2...6....38...5........4..............\",s:\"7177777777718334444771883455477118336547721883654772118365477228836547738833554773333444477777777777\"},\r\n            \/*  14 *\/ {p:\".................................6..65....5.........4....4.......1..3...82....87...3.2...1.........7\",s:\"7777777777733333333773555555377356666537735444443773448884377388818837738221188773332211117777777777\"},\r\n            \/*  15 *\/ {p:\"..............4........5...8.....6...23.......1...........2....6.........5..........4.38.........717\",s:\"7777777777744443333774553388377456388237745638122774563811277456388117745533881774444338177777777717\"},\r\n            \/*  16 *\/ {p:\".......717....4.38.....5.........6..............2.......1......6...23....5...8......4...............\",s:\"7777777717744443381774553388177456388117745638112774563812277456388237745533883774444333377777777777\"},\r\n            \/*  17 *\/ {p:\".......................54..8.....6...23.................1.2....6.........5..........4.38.........717\",s:\"7777777777744443333774554388377456338237745638822774563811277456388117745533881774444338177777777717\"},\r\n            \/*  18 *\/ {p:\".........7....6....1.....1..87...4....2......4..3..............2...35......5.8......6...............\",s:\"7777777777766661111176888188877684888227768444223776822223377682888357768885885776666555577777777777\"},\r\n            \/*  19 *\/ {p:\"717.........83..........4..4.............2...........1...6...32.........8............5.65...........\",s:\"7177777777718333333771884444377118833337721183555772218356577328835657738833565773333556577777777777\"},\r\n            \/*  20 *\/ {p:\".........7.........1.....3..87...2.1..4...............6..6.....2...4.......3.85.......5.............\",s:\"7777777777733333111173888318877382811847738288884773826666477382888447738883885773333355577777777777\"},\r\n            \/*  21 *\/ {p:\"......................6..6.8.........23.......1.....5.....2....4.........5..........4.38.........717\",s:\"7777777777733333333773666688377333388237744438122774543811277454388117745533881774444338177777777717\"},\r\n            \/*  22 *\/ {p:\"7.........1...2.3...78....28...3...1......4...............5.............4..6..6.........5...........\",s:\"7777777777111122333778811228377388118837734888833773433333577343555557734356666773335555577777777777\"},\r\n            \/*  23 *\/ {p:\"......................8.6..6...32..........1.......2.....5........................83.4.54.717.......\",s:\"7777777777733333333773886666377328833337722183444772118345477118834547718833454771833445477177777777\"},\r\n            \/*  24 *\/ {p:\".................................3..3........4..2....2...1...6..........85.........6.54.....78....17\",s:\"7777777777722222222772888888277283333827728884882772228481177688848817768554481776665548177778888817\"},\r\n            \/*  25 *\/ {p:\"................................56..65...4.....4.............3..1.....78....28..1...2.3...7.........\",s:\"7777777777744444444774555555477456666547743333344773388833377388188837788112283711112233377777777777\"},\r\n            \/*  26 *\/ {p:\"...............5.65...8........32..........1...6...2......................4..4....83......717.......\",s:\"7777777777733335565773883356577328835657722183565772118355577118833337718844443771833333377177777777\"},\r\n            \/*  27 *\/ {p:\"...............4......8...5....32...6......1.......2..............6.........5.....83.4....717.......\",s:\"7777777777733334444773883355477328836547722183654772118365477118836547718833554771833444477177777777\"},\r\n            \/*  28 *\/ {p:\"........................5..6....54.......4...............6......1...3...82....87...3.2...1.........7\",s:\"7777777777744444333774555436377454443637743333363773388886377388118837738221188773332211117777777777\"},\r\n            \/*  29 *\/ {p:\"............5.4.......6....83........2........1...........2.............6..........54.38.........717\",s:\"7777777777755443333775643388377564388227756438112775643881277564338117756443881775554338177777777717\"},\r\n            \/*  30 *\/ {p:\"7.........1...2.3...78....28...3...1......4...............5.............4..6..6.........5...........\",s:\"7777777777111122333778811228377388118837734888833773433333577343555557734356666773335555577777777777\"},\r\n            \/*  31 *\/ {p:\".....................38.4.5.....2...6......1.......2..............6.......45......83......717.......\",s:\"7777777777733333333773884455377228846537721184653772188465377118446537718845553771833333377177777777\"},\r\n            \/*  32 *\/ {p:\"717.........83..........6..6.............2...........1...5...32.........8............4.54...........\",s:\"7177777777718333333771886666377118833337721183444772218345477328834547738833454773333445477777777777\"},\r\n            \/*  33 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5...................6..6..4...5..................\",s:\"7777777777111122333778811228377388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*  34 *\/ {p:\"...............4.....38...5.....2...6......1.......2..............6........45.....83......717.......\",s:\"7777777777733334444773883355477228836547721183654772188365477118336547718834554771833444477177777777\"},\r\n            \/*  35 *\/ {p:\"7.........1...2.3...78....28...3...1......4...............5.............4..6..6.........5...........\",s:\"7777777777111122333778811228377388118837734888833773433333577343555557734356666773335555577777777777\"},\r\n            \/*  36 *\/ {p:\".......717......38....4..4......................2...6...1..........23........8...56.5...............\",s:\"7777777717733333381773444488177333388117755538112775653812277565388237756533883775655333377777777777\"},\r\n            \/*  37 *\/ {p:\".......717......38.....54........6..............2.......1......6...2.....5...83.....4...............\",s:\"7777777717744443381774554388177456338117745638812774563811277456388227745533883774444333377777777777\"},\r\n            \/*  38 *\/ {p:\"717.........83..........4..4.............2...........1...6...32.........8............5.65...........\",s:\"7177777777718333333771884444377118833337721183555772218356577328835657738833565773333556577777777777\"},\r\n            \/*  39 *\/ {p:\".........7.....5...4.....4.......2....1.....6............6.....2.3.1.........838....5....7..........\",s:\"7777777777755555444475888448887582888818758266661875828886187582838118758883883875555333377777777777\"},\r\n            \/*  40 *\/ {p:\"7.........1...2..4..78....28...3...1..4...5....3....6.............6.....5...........................\",s:\"7777777777111122244778811128477388818847735588833773655555377366666537735555553773333333377777777777\"},\r\n            \/*  41 *\/ {p:\"......................4..4.83........2........1.....6.....2......................5.65.38.........717\",s:\"7777777777733333333773444488377333388227755538112775653881277565338117756553881775665338177777777717\"},\r\n            \/*  42 *\/ {p:\"717.........83..........4..4.............2...........1...6...32...5.....8...6........5..............\",s:\"7177777777718333333771884444377118833337721183555772218356577328835657738833665773333555577777777777\"},\r\n            \/*  43 *\/ {p:\"........................6..5....64.......4...............5...3...1....78....28..1...2.3...7.........\",s:\"7777777777744444333774666435377464443537743333353773388885377388118837788112283711112233377777777777\"},\r\n            \/*  44 *\/ {p:\".....78.27...3..1.....8........32.1.4.........5.......56.......6.............4......................\",s:\"7777778827733311182773881888277328184427722888542772555654277256665427725555542772222222277777777777\"},\r\n            \/*  45 *\/ {p:\".........7...3.2...1..82....87....1...3........4...5...................6..6..4...5..................\",s:\"7777777777733322111173822118877388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*  46 *\/ {p:\"7.........1...2.3...78....28...3...1......4...............5.......56....4..6........................\",s:\"7777777777111122333778811228377388118837734888833773433333577343555657734356665773335555577777777777\"},\r\n            \/*  47 *\/ {p:\".....78.17....4.3.....6......................1..2...6..............23..5.....8.....54...............\",s:\"7777778817744443381774633388177463888117746381112774638882277443338237754443883775554333377777777777\"},\r\n            \/*  48 *\/ {p:\"..................4...6..5..5...................4...6...........1...3...82....87...3.2...1.........7\",s:\"7777777777733344444773634555577363444447736333334773688883377388118837738221188773332211117777777777\"},\r\n            \/*  49 *\/ {p:\".........7...3.2...1..82....87....1...3........4...5...................6..6..4...5..................\",s:\"7777777777733322111173822118877388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*  50 *\/ {p:\".........7...3.2...1..82....87....1...3...4...............5.......56....4..6........................\",s:\"7777777777733322111173822118877388118837734888833773433333577343555657734356665773335555577777777777\"},\r\n            \/*  51 *\/ {p:\"7.........2....5........2......1....6....3..6...............843...1...7.8.4..........5..............\",s:\"7777777777222225555788882888578118886857831166685783311118578438881857748848885774444555577777777777\"},\r\n            \/*  52 *\/ {p:\"717.........83.4..........5.........6....2.1.................32...6.....8..45.......................\",s:\"7177777777718334444771883355477118836547721183654772288365477328336547738834554773333444477777777777\"},\r\n            \/*  53 *\/ {p:\".......717.....6.8...48.........3...6.....53..4.........................5..2..2.........1...........\",s:\"7777777717744446681774884468177338846817735384481773538888177353111117735312222773331111177777777777\"},\r\n            \/*  54 *\/ {p:\"......................4..4.8.........23.......1.....6.....2....5.........6..........5.38.........717\",s:\"7777777777733333333773444488377333388237755538122775653811277565388117756633881775555338177777777717\"},\r\n            \/*  55 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5..........65..........6..4......................\",s:\"7777777777111122333778811228377388118837733888843775333334377565553437756665343775555533377777777777\"},\r\n            \/*  56 *\/ {p:\".......717.56.5.38........................6.....2.......1..........23...4..4.8......................\",s:\"7777777717756553381775653388177565388117756538112775553812277333388237734444883773333333377777777777\"},\r\n            \/*  57 *\/ {p:\"717.........83..........4..4.............2...........1...6...32...5.....8...6........5..............\",s:\"7177777777718333333771884444377118833337721183555772218356577328835657738833665773333555577777777777\"},\r\n            \/*  58 *\/ {p:\"..............4........5...83....6...2........1...........2....6.........54...........38.........717\",s:\"7777777777744443333774553388377456388227745638112774563881277456338117745543881774444338177777777717\"},\r\n            \/*  59 *\/ {p:\"........................5..6....54.......4...............6......1...3...82....87...3.2...1.........7\",s:\"7777777777744444333774555436377454443637743333363773388886377388118837738221188773332211117777777777\"},\r\n            \/*  60 *\/ {p:\"......................6..6.8.........23.......1.....5.....2....4.........5..........4.38.........717\",s:\"7777777777733333333773666688377333388237744438122774543811277454388117745533881774444338177777777717\"},\r\n            \/*  61 *\/ {p:\".........7...3.2...1..82....87....1...3........4...5..........65..........6..4......................\",s:\"7777777777733322111173822118877388118837733888843775333334377565553437756665343775555533377777777777\"},\r\n            \/*  62 *\/ {p:\"...............5.65...8........32..........1...6...2......................4..4....83......717.......\",s:\"7777777777733335565773883356577328835657722183565772118355577118833337718844443771833333377177777777\"},\r\n            \/*  63 *\/ {p:\"..............4........5...8.....6...23.......1...........2....6.........5..........4.38.........717\",s:\"7777777777744443333774553388377456388237745638122774563811277456388117745533881774444338177777777717\"},\r\n            \/*  64 *\/ {p:\"7.........1...2.3...78....28...3...1...............4......4............56....65.....................\",s:\"7777777777111122333778811228377388118837733888833774333333477444444447756666665775555555577777777777\"},\r\n            \/*  65 *\/ {p:\".........7......2..2.....1.......3....4.....4...5..............3.1.568.......8.7......6.............\",s:\"7777777777711111222271888188887183888448718344445871838885587183818568718881886771111166677777777777\"},\r\n            \/*  66 *\/ {p:\"................................56..65...4......4............3...1....78....28..1...2.3...7.........\",s:\"7777777777744444444774555555477456666547743333334773388883377388118837788112283711112233377777777777\"},\r\n            \/*  67 *\/ {p:\".........7...3.2...1..82....87....1...3........4...5..........65..........6..4......................\",s:\"7777777777733322111173822118877388118837733888843775333334377565553437756665343775555533377777777777\"},\r\n            \/*  68 *\/ {p:\"...............5.65...8........32..........1...6...2......................4..4....83......717.......\",s:\"7777777777733335565773883356577328835657722183565772118355577118833337718844443771833333377177777777\"},\r\n            \/*  69 *\/ {p:\"..................5...4..6............6.........5...4........3..1.....78....28..1...2.3...7.........\",s:\"7777777777733355555773435666677343555567734333355773488833377388188837788112283711112233377777777777\"},\r\n            \/*  70 *\/ {p:\"...............4......8...5....32...6......1.......2..............6.........5.....83.4....717.......\",s:\"7777777777733334444773883355477328836547722183654772118365477118836547718833554771833444477177777777\"},\r\n            \/*  71 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5...................6..6..4...5..................\",s:\"7777777777111122333778811228377388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*  72 *\/ {p:\"717.........83.4..........5.........6....2...........1.......32...6.....8...5........4..............\",s:\"7177777777718334444771883355477118836547721183654772218365477328836547738833554773333444477777777777\"},\r\n            \/*  73 *\/ {p:\"...............4......8...5....32...6......1.......2..............6.........5.....83.4....717.......\",s:\"7777777777733334444773883355477328836547722183654772118365477118836547718833554771833444477177777777\"},\r\n            \/*  74 *\/ {p:\"7.........1...2.3...78....28...3...1...........5...4...................6..6..5...4..................\",s:\"7777777777111122333778811228377388118837733888853774333335377444443537766664353774444433377777777777\"},\r\n            \/*  75 *\/ {p:\"717.........83..........4..4.............2...........1...6...32.........8............5.65...........\",s:\"7177777777718333333771884444377118833337721183555772218356577328835657738833565773333556577777777777\"},\r\n            \/*  76 *\/ {p:\"........................6..4....65.......5...............4......1...3...82....87...3.2...1.........7\",s:\"7777777777755555333775666534377565553437753333343773388884377388118837738221188773332211117777777777\"},\r\n            \/*  77 *\/ {p:\"........................6..4....65.......5...............4......1...3...82....87...3.2...1.........7\",s:\"7777777777755555333775666534377565553437753333343773388884377388118837738221188773332211117777777777\"},\r\n            \/*  78 *\/ {p:\".......717....4.38.....5.........6..............2.......1......6...23....5...8......4...............\",s:\"7777777717744443381774553388177456388117745638112774563812277456388237745533883774444333377777777777\"},\r\n            \/*  79 *\/ {p:\"...............45.....8....6...32..................2.1.......................6....83.4.5..717.......\",s:\"7777777777733334555773883446577328334657722883465772118346577118834657718833465771833445577177777777\"},\r\n            \/*  80 *\/ {p:\"...........5..4......6.....8.........23.......1...........2............6.........5..4.3....78.....17\",s:\"7777777777755443333776543388377654388237765438122776543811277654388117765433881775544338177788888817\"},\r\n            \/*  81 *\/ {p:\".........7..4..2...1..82....87.4..1...3...3....5.........6.....6.............5......................\",s:\"7777777777744222111174821118877488188837733888553773555556377356666637735555553773333333377777777777\"},\r\n            \/*  82 *\/ {p:\"7.........1...2.3...78....28...3...1......4...............5.......56....4..6........................\",s:\"7777777777111122333778811228377388118837734888833773433333577343555657734356665773335555577777777777\"},\r\n            \/*  83 *\/ {p:\"......................6....65..5.........4......4................1..3...82....87...3.2...1.........7\",s:\"7777777777755555555775666666577544444447744333334773338883377388818837738221188773332211117777777777\"},\r\n            \/*  84 *\/ {p:\"..............4........5...83....6...2........1...........2....6.........54...........38.........717\",s:\"7777777777744443333774553388377456388227745638112774563881277456338117745543881774444338177777777717\"},\r\n            \/*  85 *\/ {p:\"7.........1...2.3...78....28...3...1...........4...5...................6..6..4...5..................\",s:\"7777777777111122333778811228377388118837733888843775333334377555553437766665343775555533377777777777\"},\r\n            \/*  86 *\/ {p:\"......................5..5.8.........238.4...1...7.6......2.......................6.4.3...........17\",s:\"8888888888833333333883555588388333888238844381122786438811278643388117864433881786644338178888888817\"},\r\n            \/*  87 *\/ {p:\".........7..4..2...1..82....87.4..1...3...3....5.........6.....6.............5......................\",s:\"7777777777744222111174821118877488188837733888553773555556377356666637735555553773333333377777777777\"},\r\n            \/*  88 *\/ {p:\"......................6....6.......5.......1.............4.8.5.21....7....8.....2...3..43.7.........\",s:\"8888888888855555555885666666588588855558858188333885811834388582183437888288343722223334377777777777\"},\r\n            \/*  89 *\/ {p:\"........................54.8.....6...23.................1.2....6.........5.4..........38.........717\",s:\"7777777777733333333773555488377356448237735648822773564811277356488117735544881773333338177777777717\"},\r\n            \/*  90 *\/ {p:\"....78..17.....4......8.........3...4....5....3....6.........5..........6..2..2.........1...........\",s:\"7777788817733334481773883348177338834817755583381776658888177565111117756512222775551111177777777777\"},\r\n            \/*  91 *\/ {p:\".........7...3.2...1..82....87....1...3...4...............5.............4..6..6.........5...........\",s:\"7777777777733322111173822118877388118837734888833773433333577343555557734356666773335555577777777777\"},\r\n            \/*  92 *\/ {p:\"............6.........85............3...........5........1......2..2...6.........3.4..48.........717\",s:\"7777777777766555555776858888577688833857763333885776388881177638222217763888881773344448177777777717\"},\r\n            \/*  93 *\/ {p:\"......................8..45....32...6..............2.1............6.........5.....83.4....717.......\",s:\"7777777777733334444773883455477328336547722883654772118365477118836547718833554771833444477177777777\"},\r\n            \/*  94 *\/ {p:\"..78...........3.....28.2.......1...5.......6.......6.........5...............4....3..4...71........\",s:\"7778888888722223333872882888387118885838716665583871655588387155888338718883334871833344487188888888\"},\r\n            \/*  95 *\/ {p:\".........7.....3...2..8.....87.31.2...1.......4................6..........5654......................\",s:\"7777777777733333222273882228877318288817711888441771555554177156665417715556541771111111177777777777\"},\r\n            \/*  96 *\/ {p:\"......................5.............6.....6.........5....2...2...1..4.......38..1...3..4..7....78...\",s:\"8888888888822222222882555555288266666528826555552882558882288288818848888111384811113334487777778888\"},\r\n            \/*  97 *\/ {p:\"........17..6.5.3........................6......2..5...1...........23...4..4.8.............87.......\",s:\"8888888817866553381786553388178653388117865388112785538112278333888237834444883783333333378877777777\"},\r\n            \/*  98 *\/ {p:\".........8.........7.............6..65....5.........4....4...2...1.2.........83.1...3.....7.........\",s:\"8888888888822222222782555555278256666527825444442782448884278288818227888111883711113333377777777777\"},\r\n            \/*  99 *\/ {p:\"........17.5..4.3....6..........................2.......1..........23..6.....8...5..4......87.......\",s:\"8888888817855443381786543388178654388117865438112786543812278654388237865433883785544333378877777777\"},\r\n            \/* 100 *\/ {p:\"........27...5..1....5...............4.........6.......6...7...4...2.8.....1.83.......3.............\",s:\"8888888827855511182785111888278118884427818844462781844666278184888228818881883881111133388888888888\"},\r\n            \/* 101 *\/ {p:\"......................5.............6.....6.........5....3...3...1..4.......28..1...2..4..7...78....\",s:\"8888888888833333333883555555388366666538836555553883558883388388818848888111284811112224487777788888\"},\r\n            \/* 102 *\/ {p:\"........17.5..4.3....6..........................2.......1..........23..6.....8..85..4.....7.........\",s:\"8888888817855443381786543388178654388117865438112786543812278654388237865433883785544333377777777777\"},\r\n            \/* 103 *\/ {p:\"........27...3..1....3...............5.........6.......6.......5...2.......1.84.8.....4...7.........\",s:\"8888888827833311182783111888278118885527818855562781855666278185888227818881884781111144477777777777\"},\r\n            \/* 104 *\/ {p:\".............4.......48.3.......2...6......1.......2......................56.5....83......717.......\",s:\"7777777777744433333774883555377228856537721185653772188565377118556537718856653771833333377177777777\"},\r\n            \/* 105 *\/ {p:\"616.........73.9...........4.........5...2...........1.......32....5....7....49......8..8...........\",s:\"6166666666617339999661773344966117734596621173459662217345966327734596637733449663333888866666666666\"},\r\n            \/* 106 *\/ {p:\"......................9..45....62..64........7.5...2.1....................3..3....97......818.......\",s:\"8888888888866664444886996455488629664548822997454882119744488119977778819933337881977777788188888888\"},\r\n            \/* 107 *\/ {p:\".........8...3.2...1..72....79....1...3............4......4......................56....65.89........\",s:\"8888888888833322111183722117798377117739833777733984333333498444444449855555555985666666598999999999\"},\r\n            \/* 108 *\/ {p:\".......818..6...29....724......6.....1.....5...95......437.....3....................................\",s:\"8888888818866222291886724499188677749118855574995885777437588573333758857777775885555555588888888888\"},\r\n            \/* 109 *\/ {p:\".................89...45..54.............8.....9.............3..1.....67....27..1...2.3...6.........\",s:\"6666666666688888889668455554966844444496683333399663377733366377177736677112273611112233366666666666\"},\r\n            \/* 110 *\/ {p:\"...............7..7...9....46..32....5.....1.......2...............5.........4....93.6....818.......\",s:\"8888888888833337777883993344688329934568822193456882119345688119934568819933446881933666688188888888\"},\r\n            \/* 111 *\/ {p:\".............6........7........65.3.2..............5...4.....4..972.......1.....1....3....8..89.....\",s:\"9999999999966633333996773777399657372739955777273995444427399449972739999917773911111333398888999999\"},\r\n            \/* 112 *\/ {p:\"6.........1...2.3.........27...3...1...............9......8...........7.45..54..698.................\",s:\"6666666666111122333677711227367377117736733777733679333333867944444486794555548669888888866666666666\"},\r\n            \/* 113 *\/ {p:\".................89...45..54.............8.....9.............3..1.....67....27..1...2.3...6.........\",s:\"6666666666688888889668455554966844444496683333399663377733366377177736677112273611112233366666666666\"},\r\n            \/* 114 *\/ {p:\".......818....6.39....4.........5.............1.2.............5....23..64.7..9...7..................\",s:\"8888888818866663391886443399188654399118865439112886543992288654339238864473993887777333388888888888\"},\r\n            \/* 115 *\/ {p:\"...............7......9....4...32....5.....1.......2...............5.........47...93.6..6.818.......\",s:\"8888888888833337777883993344788329934578822193457882119345788119934578819933447881933666688188888888\"},\r\n            \/* 116 *\/ {p:\".................89...45..54.............8.....9.............3..1.....67....27..1...2.3...6.........\",s:\"6666666666688888889668455554966844444496683333399663377733366377177736677112273611112233366666666666\"},\r\n            \/* 117 *\/ {p:\"......................9..7.4...32....5.............2.1.............5.........47...93.6..6.818.......\",s:\"8888888888833337777883993744788329334578822993457882119345788119934578819933447881933666688188888888\"},\r\n            \/* 118 *\/ {p:\"6.........1...2.3.........27...3...1...............8......9...........7.45..54..689.................\",s:\"6666666666111122333677711227367377117736733777733678333333967844444496784555549668999999966666666666\"},\r\n            \/* 119 *\/ {p:\".......818....6.39....4.........5.............1.2.............5....23..64.7..9...7..................\",s:\"8888888818866663391886443399188654399118865439112886543992288654339238864473993887777333388888888888\"},\r\n            \/* 120 *\/ {p:\"6.........1...2.3.........27...3...1...............8......9.............45..54..789.......6.........\",s:\"6666666666111122333677711227367377117736733777733678333333967844444496784555549678999999966666666666\"},\r\n            \/* 121 *\/ {p:\".......828......19....5.65..........9.........7.3.......2......6...3.......1.74.......4.............\",s:\"8888888828811111192881566599288156559228815657723881565722388156577338815551774881111144488888888888\"},\r\n            \/* 122 *\/ {p:\".......818......39....4.7.......5...............2.......1.....5....2...74....93..6..6...............\",s:\"8888888818877773391887447399188754339118875439912887543911288754399228874433993886666333388888888888\"},\r\n            \/* 123 *\/ {p:\"...............6......9....4...32....5.....1.......2...............5.........46...93.7..7.818.......\",s:\"8888888888833336666883993344688329934568822193456882119345688119934568819933446881933777788188888888\"},\r\n            \/* 124 *\/ {p:\".......818....6.39....4.........5.............1.2.............5....23..64.7..9...7..................\",s:\"8888888818866663391886443399188654399118865439112886543992288654339238864473993887777333388888888888\"},\r\n            \/* 125 *\/ {p:\".................98...45..54.............9......8...............1...3...72....76...3.2...1.........6\",s:\"6666666666699999998669455554866944444486693333338663377773366377117736637221177663332211116666666666\"},\r\n            \/* 126 *\/ {p:\".......818....7.39....4.........5...............2.......1.....5....23..74....9...6..6...............\",s:\"8888888818877773391887443399188754399118875439112887543912288754399238874433993886666333388888888888\"},\r\n            \/* 127 *\/ {p:\"616.........73.9..9........48........5...2...........1.......32....5....7....4.......8..............\",s:\"6166666666617339999661773344866117734586621173458662217345866327734586637733448663333888866666666666\"},\r\n            \/* 128 *\/ {p:\".......818......39....4.7.......5...............2.......1.....5....2...74....93..6..6...............\",s:\"8888888818877773391887447399188754339118875439912887543911288754399228874433993886666333388888888888\"},\r\n            \/* 129 *\/ {p:\".......818.6..6.39...74.........5...............2.......1.....5....23...4....9......7...............\",s:\"8888888818866663391887443399188754399118875439112887543912288754399238874433993887777333388888888888\"},\r\n            \/* 130 *\/ {p:\"...........76.........45..54..............7.....6................1..3...92....98...3.2...1.........8\",s:\"8888888888876666666887455554688744444468877333336883339993388399919938839221199883332211118888888888\"},\r\n            \/* 131 *\/ {p:\".................6..7.........8593.........4.3..6.........5..4.........89....2..1...21....7.........\",s:\"7777777777755555566775999955678593399567844433956784999995578491111117889122221711112111177777777777\"},\r\n            \/* 132 *\/ {p:\".........8..3..2...1..92....98....1...3............6.....7..............45..54...67.................\",s:\"8888888888833222111183921119988399199938833999333886333337788644444478864555547886777777788888888888\"},\r\n            \/* 133 *\/ {p:\"......................9..7.4...32....5.............2.1.............5.........47...93.6..6.818.......\",s:\"8888888888833337777883993744788329334578822993457882119345788119934578819933447881933666688188888888\"},\r\n            \/* 134 *\/ {p:\"......................9..7.4...32....5.............2.1.............5.........47...93.6..6.818.......\",s:\"8888888888833337777883993744788329334578822993457882119345788119934578819933447881933666688188888888\"},\r\n            \/* 135 *\/ {p:\"...........76.........45..54..............7.....6................1..3...92....98...3.2...1.........8\",s:\"8888888888876666666887455554688744444468877333336883339993388399919938839221199883332211118888888888\"},\r\n            \/* 136 *\/ {p:\"6.........1...2.3.........27...3...1...............8......9...........7.45..54..689.................\",s:\"6666666666111122333677711227367377117736733777733678333333967844444496784555549668999999966666666666\"},\r\n            \/* 137 *\/ {p:\"...........6.........745..54..............7.....6................1..3...92....98...3.2...1.........8\",s:\"8888888888866666666887455554688744444468877333336883339993388399919938839221199883332211118888888888\"},\r\n            \/* 138 *\/ {p:\"...........89.........4.9..7....5....23.................1.2...5.........4...........8.37.........616\",s:\"6666666666689993333668449377366854337236685437722668543711266854377116684433771668888337166666666616\"},\r\n            \/* 139 *\/ {p:\"..............9.......4....7....5....23.......1...........2...5........94........8..8.37.........616\",s:\"6666666666699993333669443377366954377236695437122669543711266954377116694433771668888337166666666616\"},\r\n            \/* 140 *\/ {p:\".......818....6.39....4.........5.............1.2.............5....23..64.7..9...7..................\",s:\"8888888818866663391886443399188654399118865439112886543992288654339238864473993887777333388888888888\"},\r\n            \/* 141 *\/ {p:\"84...........23.5.....9...37..8.7.......9.4...5....6..2...6....1..1.................................\",s:\"8499999999849233555984922337598477277759944727555996772777699671111769967777776996666666699999999999\"},\r\n            \/* 142 *\/ {p:\".........8...3.2...1..72....79....1...3............4......4...........8.........956....65...........\",s:\"8888888888833322111183722117798377117739833777733984333333498444444449855555555995666666599999999999\"},\r\n            \/* 143 *\/ {p:\".87......7.....3...28.9.......931.2...1.......4.....565..........6...........4......................\",s:\"8877777777833333222283992229999319299919911999441991565554199156665419915555541991111111199999999999\"},\r\n            \/* 144 *\/ {p:\".........8...3.2...1..72....79....1...3............4......4....................9.56....658..........\",s:\"8888888888833322111183722117798377117739833777733984333333498444444449855555555985666666588888888888\"},\r\n            \/* 145 *\/ {p:\".........8..3..2...1..92....98....1...3............6.....7..............45..54...67.................\",s:\"8888888888833222111183921119988399199938833999333886333337788644444478864555547886777777788888888888\"},\r\n            \/* 146 *\/ {p:\"8179...........4...........7.....4....3....3.............6..........5..2..2...6..1......5.........89\",s:\"8179999999817444333981743337398174377739817337555981777756598111115659822221566981111155598888888889\"},\r\n            \/* 147 *\/ {p:\".........6...3.2...1..72...........1..3.............9.....8.............45..54.7.......986..........\",s:\"6666666666633322111163722117776377717737633377733769933333876944444487694555548769999999866666666666\"},\r\n            \/* 148 *\/ {p:\"..............8.......4....73...5....2........1...........2...5........84.9......9....3....67.....16\",s:\"6666666666688883333668443377366854377226685437112668543771266854337116684493771669999337166677777716\"},\r\n            \/* 149 *\/ {p:\"61......................5..54.....4...........3.......929....81.8.......7....3.......2......67......\",s:\"6177777777617444444761745555476174499997617799339761179293976817829397687782939768888299976667777777\"},\r\n            \/* 150 *\/ {p:\"................2.......4.79......5.........4.1......5....2......3..1...3...........76...6.....98..8\",s:\"9999999999977777222997444779299745599929974549112997454991299744439119973333999997777666669999998888\"},\r\n            \/* 151 *\/ {p:\"............4.........792..2.......9......41.8...........5...1..................8...3..53.6..67.....\",s:\"7777777777744999999774792222977477799997744178333771117835377177783537777888353788883335376666777777\"},\r\n            \/* 152 *\/ {p:\"61......................5..54.....4...........3.......929....81.8.......7....3.......2......67......\",s:\"6177777777617444444761745555476174499997617799339761179293976817829397687782939768888299976667777777\"},\r\n            \/* 153 *\/ {p:\".......818....6.39....4.........5...............2.......1.....5....23..64....9...7..7...............\",s:\"8888888818866663391886443399188654399118865439112886543912288654399238864433993887777333388888888888\"},\r\n            \/* 154 *\/ {p:\"6.........1...2.3.........27...3...1...............9......8.............45..54..798.......6.........\",s:\"6666666666111122333677711227367377117736733777733679333333867944444486794555548679888888866666666666\"},\r\n            \/* 155 *\/ {p:\"..........7......98.6.45..54.............9......8...............1...3...72.........3.2...1.........6\",s:\"7777777777799999998769455554876944444487693333338763377773376377117737637221177763332211116666666666\"},\r\n            \/* 156 *\/ {p:\"..........7......98.6.45..54.............9......8...............1...3...72.........3.2...1.........6\",s:\"7777777777799999998769455554876944444487693333338763377773376377117737637221177763332211116666666666\"},\r\n            \/* 157 *\/ {p:\"..........6......89.7.45..54.............8......9............3...1..........27..1...2.3...6.........\",s:\"6666666666688888889678455554967844444496783333339673377773367377117736777112273611112233366666666666\"},\r\n            \/* 158 *\/ {p:\"..........6......89.7.45..54.............8......9............3...1..........27..1...2.3...6.........\",s:\"6666666666688888889678455554967844444496783333339673377773367377117736777112273611112233366666666666\"},\r\n            \/* 159 *\/ {p:\"...............3..........24.....1...........1........5..4..963...2...8.9..........6.....5...87....7\",s:\"9999999999933333222993999924299391199429939911942993395994299639592229869959999986665555558888777777\"},\r\n            \/* 160 *\/ {p:\".........6...9.2...1..72....76.....1..8...9a...3....4.........54..a.......5.83......................\",s:\"6666666666699922111169722117766977717786699a777386644aaaa386645444a386645554838664444488866666666666\"},\r\n            \/* 161 *\/ {p:\"......96.....5..87....a.8......53...1.............93..4.....a1....4.......2.....2....7....6.........\",s:\"9999999666955588877695aa8aaa76953aaa1a769331111a769311444a76a11aaa4a76aaaa2aaa7622222777766666666666\"},\r\n            \/* 162 *\/ {p:\"9a..........8.........7.............3......3.4..8..7.....5.....2...........416.....1...5..92.....6a.\",s:\"9aaaaaaaaa9.8888888a977666668a976633368a976334668a976664655a922264665a926664165a926111155a92666666aa\"},\r\n            \/* 163 *\/ {p:\"...............7.......548.a.....4...27...5.8.........6.1.2.............3..3..........6a.........919\",s:\"99999999999444477779945548aa79945488a27994548aa22994446a112996666aa119963333aa199666666a199999999919\"},\r\n            \/* 164 *\/ {p:\"...............65....57....6....3.........87.........1.a.........82.1..3......a9.2.4.....4.........9\",s:\"9999999999955556555995775666599337555559938711111993811aaa199388882a199322222aa992244444449999999999\"},\r\n            \/* 165 *\/ {p:\".96........4.........5..3...8.........3....a.......5.91...8..4....1.7.....2a....2....7....6.........\",s:\"9966666666944888888695483333869548888336954aaa888695491aaa869449111a7699992aaa7622222777766666666666\"},\r\n            \/* 166 *\/ {p:\"9.........a5.........6..4...3.........4......8.....6..17.....5....1.....a827....2....3....9.........\",s:\"9999999999a553333339a653444439a653333449a658883339a658177739a558111739aaa827773922222333399999999999\"},\r\n            \/* 167 *\/ {p:\"..78..........a............6.....1.5.45...6........a8.2...4..9.1....2......3........9....3.........7\",s:\"77788888887aaaa555587a666566587a616564587a616664487a812222487981888228798883888879999333337777777777\"},\r\n            \/* 168 *\/ {p:\"6.........1...41...........4...3................a....3.2..5..982.7.........89a.........5..76........\",s:\"66666666661111411116777144441673711111167377777aa67333227a567982277a567988889a5679999995567666666666\"},\r\n            \/* 169 *\/ {p:\"7.........8...a.......4....63...5....2........1...........2...5........a4.b......b....36....89...917\",s:\"77777777778aaaa333378a443366378a543662278a543611278a543661278a543361178a44b366178bbbb336178889999917\"},\r\n            \/* 170 *\/ {p:\"........a7...2..19...26....6....b.1..3....3....4..............45..5....b........9a........8.....87..\",s:\"99999999a792221119a792661666a79bb61633a79b366634a79b333334a79b455554a79b444444a79aaaaaaaa78888888777\"},\r\n            \/* 171 *\/ {p:\".a7........4.........5..3...9.........3........98..5..1.ab...4....1.......2b....2....8....6..67.....\",s:\"aa77777777a449999997a549333397a549999337a54aaa9987a54a1aab87a44a111b87aaaa2bbb8722222888876666777777\"},\r\n            \/* 172 *\/ {p:\"72...........1..96.........5....2....6...3......5...a1..98....b......a..4..43b.7.......8............\",s:\"72aaaaaaaa72a119966a72aa19556a722a19566a73aa19555a73a119988a73bbbbbb8a7344443b8773333338877777777777\"}\r\n        ];\r\n\r\n        const GRID   = 10;\r\n        const B36    = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n        const TOTAL  = AR_PUZZLES.length;\r\n\r\n        \/\/ --- State ---\r\n        let phase          = 'playing';\r\n        let puzzleIndex    = 0;\r\n        let gridSize       = GRID;\r\n        let gameBoard      = [];\r\n        let solutionGrid   = [];\r\n        let terminals      = [];\r\n        let completedPairs = new Set();\r\n        let drawing        = false;\r\n        let drawPair       = -1;\r\n        let drawPath       = [];\r\n        let gameTimer      = null;\r\n        let startTime      = null;\r\n        let hintTimeout    = null;\r\n        let pointerActive  = false;\r\n        let boardGeom      = { pad: 10, gap: 2 };\r\n        let hintsThisPuzzle = 0;\r\n\r\n        \/\/ --- DOM refs ---\r\n        const gameInfo      = document.getElementById('ftar-game-info');\r\n        const gameBoardEl   = document.getElementById('ftar-game-board');\r\n        const clearButton   = document.getElementById('ftar-clear-button');\r\n        const hintButton    = document.getElementById('ftar-hint-button');\r\n        const prevButton    = document.getElementById('ftar-prev-button');\r\n        const nextButton    = document.getElementById('ftar-next-button');\r\n        const randomButton  = document.getElementById('ftar-random-button');\r\n        const pairsDisplay  = document.getElementById('ftar-pairs-display');\r\n        const timeDisplay   = document.getElementById('ftar-time-display');\r\n        const progressFill  = document.getElementById('ftar-progress-fill');\r\n\r\n        \/\/ --- Speicher (immer abgesichert: privater Modus wirft hier) ---\r\n        const KEY_SOLVED  = 'ft_arukone_solved';\r\n        const KEY_CURRENT = 'ft_arukone_current';\r\n        const KEY_HINTS   = 'ft_arukone_hints';\r\n\r\n        function loadSolved() {\r\n            try {\r\n                const raw = localStorage.getItem(KEY_SOLVED);\r\n                if (!raw) return new Set();\r\n                const arr = JSON.parse(raw);\r\n                if (!Array.isArray(arr)) return new Set();\r\n                \/\/ Gegen beschaedigte oder fremde Werte absichern\r\n                return new Set(arr.map(v => Number(v) || 0).filter(v => v >= 1 && v <= TOTAL));\r\n            } catch (e) { return new Set(); }\r\n        }\r\n        function saveSolved(set) {\r\n            try { localStorage.setItem(KEY_SOLVED, JSON.stringify([...set])); } catch (e) {}\r\n        }\r\n        function loadCurrent() {\r\n            try {\r\n                const n = Number(localStorage.getItem(KEY_CURRENT)) || 0;\r\n                return (n >= 0 && n < TOTAL) ? Math.floor(n) : 0;\r\n            } catch (e) { return 0; }\r\n        }\r\n        function saveCurrent(i) { try { localStorage.setItem(KEY_CURRENT, String(i)); } catch (e) {} }\r\n        function loadHints() {\r\n            try { return Number(localStorage.getItem(KEY_HINTS)) || 0; } catch (e) { return 0; }\r\n        }\r\n        function saveHints(n) { try { localStorage.setItem(KEY_HINTS, String(n)); } catch (e) {} }\r\n\r\n        let solvedSet = loadSolved();\r\n        let hintsTotal = loadHints();\r\n\r\n        \/\/ --- Farben: eine eigene Farbe je Paar ---\r\n        function pairHue(idx)         { return Math.round((idx * 137.508) % 360); }\r\n        function pairColor(idx)       { return `hsl(${pairHue(idx)}, 64%, 40%)`; }\r\n        function pairSoft(idx, alpha) { return `hsla(${pairHue(idx)}, 64%, 40%, ${alpha})`; }\r\n\r\n        \/\/ --- Helpers ---\r\n        function getCellId(r, c)  { return `ftar-cell-${r}-${c}`; }\r\n        function cellEl(r, c)     { return document.getElementById(getCellId(r, c)); }\r\n        function formatTime(secs) { return `${Math.floor(secs\/60)}:${(secs%60).toString().padStart(2,'0')}`; }\r\n        function isAdjacent(r1, c1, r2, c2) { return Math.abs(r1-r2) + Math.abs(c1-c2) === 1; }\r\n\r\n        \/\/ --- Raetsel aufbereiten: Symmetrie + Neunummerierung ---\r\n        \/\/ Beides erhaelt Loesbarkeit und Eindeutigkeit. Die Umformung haengt fest\r\n        \/\/ am Raetselindex, NICHT am Zufall: Sonst saehe dasselbe Raetsel nach\r\n        \/\/ 'Zurueck' oder einem Neuladen gespiegelt und anders nummeriert aus, und\r\n        \/\/ der Spieler verliert mitten in der Arbeit die Orientierung.\r\n        function seededRandom(seed) {\r\n            let x = (seed * 2654435761) >>> 0;\r\n            return function () {\r\n                x ^= x << 13; x >>>= 0;\r\n                x ^= x >> 17;\r\n                x ^= x << 5;  x >>>= 0;\r\n                return x \/ 4294967296;\r\n            };\r\n        }\r\n        function transformGrid(str, n, t) {\r\n            const out = new Array(n * n);\r\n            for (let r = 0; r < n; r++) {\r\n                for (let c = 0; c < n; c++) {\r\n                    let rr = r, cc = c;\r\n                    if (t & 1) cc = n - 1 - cc;\r\n                    if (t & 2) rr = n - 1 - rr;\r\n                    if (t & 4) { const x = rr; rr = cc; cc = x; }\r\n                    out[rr * n + cc] = str[r * n + c];\r\n                }\r\n            }\r\n            return out.join('');\r\n        }\r\n\r\n        function loadPuzzle(pz, index) {\r\n            const n = GRID;\r\n            const rnd = seededRandom(index + 1);\r\n            const t = Math.floor(rnd() * 8);\r\n            const p = transformGrid(pz.p, n, t);\r\n            const s = transformGrid(pz.s, n, t);\r\n\r\n            const chars = [];\r\n            for (const ch of s) if (ch !== '.' && chars.indexOf(ch) === -1) chars.push(ch);\r\n            const order = chars.slice();\r\n            for (let i = order.length - 1; i > 0; i--) {\r\n                const j = Math.floor(rnd() * (i + 1));\r\n                const tmp = order[i]; order[i] = order[j]; order[j] = tmp;\r\n            }\r\n            const toIndex = {};\r\n            order.forEach((ch, i) => { toIndex[ch] = i; });\r\n\r\n            gridSize     = n;\r\n            gameBoard    = Array.from({ length: n }, () => Array(n).fill(null));\r\n            solutionGrid = Array.from({ length: n }, () => Array(n).fill(-1));\r\n            terminals    = Array.from({ length: chars.length }, (_, i) => ({\r\n                number: i + 1, positions: [], connected: false, cells: []\r\n            }));\r\n\r\n            for (let r = 0; r < n; r++) {\r\n                for (let c = 0; c < n; c++) {\r\n                    const solCh = s[r * n + c];\r\n                    if (solCh !== '.') solutionGrid[r][c] = toIndex[solCh];\r\n                    const puzCh = p[r * n + c];\r\n                    if (puzCh !== '.') {\r\n                        const idx = toIndex[puzCh];\r\n                        gameBoard[r][c] = { type: 'terminal', number: idx + 1, pairIndex: idx };\r\n                        terminals[idx].positions.push({ row: r, col: c });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        \/\/ --- Render ---\r\n        function renderBoard() {\r\n            gameBoardEl.innerHTML = '';\r\n            gameBoardEl.style.setProperty('--ar-n', String(gridSize));\r\n            const frag = document.createDocumentFragment();\r\n            for (let r = 0; r < gridSize; r++) {\r\n                for (let c = 0; c < gridSize; c++) {\r\n                    const cell = document.createElement('div');\r\n                    cell.className = 'ar-cell';\r\n                    cell.id        = getCellId(r, c);\r\n                    const data = gameBoard[r][c];\r\n                    if (data && data.type === 'terminal') {\r\n                        cell.classList.add('terminal');\r\n                        cell.textContent       = data.number;\r\n                        cell.style.borderColor = pairColor(data.pairIndex);\r\n                        cell.style.color       = pairColor(data.pairIndex);\r\n                    }\r\n                    frag.appendChild(cell);\r\n                }\r\n            }\r\n            gameBoardEl.appendChild(frag);\r\n            cacheGeometry();\r\n        }\r\n\r\n        function cacheGeometry() {\r\n            const cs = getComputedStyle(gameBoardEl);\r\n            boardGeom = { pad: parseFloat(cs.paddingLeft) || 0, gap: parseFloat(cs.columnGap) || 0 };\r\n        }\r\n\r\n        \/\/ Zelle aus der Zeigerposition RECHNEN statt elementFromPoint \u2014 billiger und\r\n        \/\/ unempfindlich gegen darueberliegende Elemente waehrend des Ziehens.\r\n        function cellFromPoint(clientX, clientY) {\r\n            const rect  = gameBoardEl.getBoundingClientRect();\r\n            const inner = rect.width - 2 * boardGeom.pad;\r\n            if (inner <= 0) return null;\r\n            const pitch = (inner + boardGeom.gap) \/ gridSize;\r\n            const c = Math.floor((clientX - rect.left - boardGeom.pad) \/ pitch);\r\n            const r = Math.floor((clientY - rect.top  - boardGeom.pad) \/ pitch);\r\n            if (r < 0 || c < 0 || r >= gridSize || c >= gridSize) return null;\r\n            return { row: r, col: c };\r\n        }\r\n\r\n        \/\/ --- Zeichnen ---\r\n        function startDraw(pairIndex, row, col) {\r\n            drawing  = true;\r\n            drawPair = pairIndex;\r\n            drawPath = [{ row: row, col: col }];\r\n            cellEl(row, col).style.background = pairSoft(pairIndex, 0.22);\r\n            gameInfo.textContent = `Weg zur anderen ${terminals[pairIndex].number} ziehen.`;\r\n        }\r\n\r\n        function paintActive(row, col, pairIndex) {\r\n            const cell = cellEl(row, col);\r\n            cell.classList.add('active-path');\r\n            cell.style.background  = pairSoft(pairIndex, 0.22);\r\n            cell.style.borderColor = pairColor(pairIndex);\r\n        }\r\n\r\n        function unpaint(row, col) {\r\n            const cell = cellEl(row, col);\r\n            cell.classList.remove('active-path');\r\n            const data = gameBoard[row][col];\r\n            cell.style.background = '';\r\n            if (!data || data.type !== 'terminal') cell.style.borderColor = '';\r\n        }\r\n\r\n        function cancelDraw() {\r\n            drawPath.forEach(p => unpaint(p.row, p.col));\r\n            drawing = false; drawPair = -1; drawPath = [];\r\n        }\r\n\r\n        \/\/ Ein Schritt weiter, ein Schritt zurueck oder Abschluss \u2014 der gemeinsame\r\n        \/\/ Kern von Klicken und Ziehen.\r\n        function stepTo(row, col) {\r\n            if (!drawing) return false;\r\n            const head = drawPath[drawPath.length - 1];\r\n            if (head.row === row && head.col === col) return false;\r\n\r\n            const existing = drawPath.findIndex(p => p.row === row && p.col === col);\r\n            if (existing !== -1) {\r\n                drawPath.splice(existing + 1).forEach(p => unpaint(p.row, p.col));\r\n                return true;\r\n            }\r\n            if (!isAdjacent(head.row, head.col, row, col)) return false;\r\n\r\n            const data = gameBoard[row][col];\r\n            if (data && data.type === 'terminal' && data.pairIndex === drawPair) {\r\n                completeDraw();\r\n                return true;\r\n            }\r\n            if (data) return false;\r\n\r\n            drawPath.push({ row: row, col: col });\r\n            paintActive(row, col, drawPair);\r\n            return true;\r\n        }\r\n\r\n        function completeDraw() {\r\n            const pairIndex = drawPair;\r\n            const pair      = terminals[pairIndex];\r\n            drawPath.forEach(p => unpaint(p.row, p.col));\r\n\r\n            pair.cells = [];\r\n            drawPath.forEach(p => {\r\n                if (gameBoard[p.row][p.col] === null) {\r\n                    gameBoard[p.row][p.col] = { type: 'path', pairIndex: pairIndex };\r\n                }\r\n                pair.cells.push({ row: p.row, col: p.col });\r\n            });\r\n            pair.positions.forEach(p => {\r\n                if (!pair.cells.some(x => x.row === p.row && x.col === p.col)) pair.cells.push({ row: p.row, col: p.col });\r\n            });\r\n\r\n            paintPair(pairIndex);\r\n            pair.connected = true;\r\n            completedPairs.add(pairIndex);\r\n            drawing = false; drawPair = -1; drawPath = [];\r\n            updateStats();\r\n            checkWin();\r\n        }\r\n\r\n        function paintPair(pairIndex) {\r\n            terminals[pairIndex].cells.forEach(p => {\r\n                const cell = cellEl(p.row, p.col);\r\n                const isTerm = gameBoard[p.row][p.col] && gameBoard[p.row][p.col].type === 'terminal';\r\n                cell.classList.add('path');\r\n                cell.style.background  = pairSoft(pairIndex, isTerm ? 0.22 : 0.32);\r\n                cell.style.borderColor = pairColor(pairIndex);\r\n            });\r\n        }\r\n\r\n        \/\/ Eine einzelne Verbindung wieder loesen \u2014 noetig, um sich aus einer\r\n        \/\/ zugemauerten Lage zu befreien.\r\n        function releasePair(pairIndex) {\r\n            const pair = terminals[pairIndex];\r\n            if (!pair.connected) return;\r\n            pair.cells.forEach(p => {\r\n                const data = gameBoard[p.row][p.col];\r\n                const cell = cellEl(p.row, p.col);\r\n                cell.classList.remove('path', 'active-path');\r\n                cell.style.background = '';\r\n                if (data && data.type === 'path') {\r\n                    gameBoard[p.row][p.col] = null;\r\n                    cell.style.borderColor = '';\r\n                } else {\r\n                    cell.style.borderColor = pairColor(pairIndex);\r\n                }\r\n            });\r\n            pair.cells = [];\r\n            pair.connected = false;\r\n            completedPairs.delete(pairIndex);\r\n            updateStats();\r\n        }\r\n\r\n        \/\/ Beim Ziehen ueberspringt pointermove Zellen \u2014 bei jeder realistischen\r\n        \/\/ Geschwindigkeit. stepTo() nimmt aber nur direkt benachbarte Zellen an,\r\n        \/\/ der Kopf rueckte deshalb nie nach und der Zug blieb ganz stehen.\r\n        \/\/ Darum wird der Weg vom Kopf zum Ziel Zelle fuer Zelle nachgezogen.\r\n        function stepTowards(row, col) {\r\n            if (!drawing) return;\r\n            for (let guard = 0; guard < 60; guard++) {\r\n                const head = drawPath[drawPath.length - 1];\r\n                if (head.row === row && head.col === col) return;\r\n\r\n                \/\/ Ziel liegt im laufenden Pfad -> direkt dorthin kuerzen\r\n                if (drawPath.some(p => p.row === row && p.col === col)) { stepTo(row, col); return; }\r\n\r\n                const dr = row - head.row, dc = col - head.col;\r\n                const zeileZuerst = (dc === 0) || (dr !== 0 && Math.abs(dr) >= Math.abs(dc));\r\n                let nr = head.row, nc = head.col;\r\n                if (zeileZuerst) nr += Math.sign(dr); else nc += Math.sign(dc);\r\n                if (nr === head.row && nc === head.col) return;\r\n\r\n                if (!stepTo(nr, nc)) {\r\n                    \/\/ blockiert oder ungueltig: ueber die andere Achse versuchen\r\n                    let ar = head.row, ac = head.col;\r\n                    if (zeileZuerst) ac += Math.sign(dc); else ar += Math.sign(dr);\r\n                    if ((ar === head.row && ac === head.col) || !stepTo(ar, ac)) return;\r\n                }\r\n                if (!drawing) return;   \/\/ completeDraw hat den Pfad abgeschlossen\r\n            }\r\n        }\r\n\r\n        \/\/ --- Zeigerbedienung: Ziehen und Tippen ueber denselben Kern ---\r\n        gameBoardEl.addEventListener('pointerdown', function (e) {\r\n            if (phase !== 'playing') return;\r\n            const pos = cellFromPoint(e.clientX, e.clientY);\r\n            if (!pos) return;\r\n            e.preventDefault();\r\n            const data = gameBoard[pos.row][pos.col];\r\n\r\n            if (drawing && drawPath.length === 1 &&\r\n                drawPath[0].row === pos.row && drawPath[0].col === pos.col) {\r\n                cancelDraw();\r\n                gameInfo.textContent = 'Abgebrochen.';\r\n                return;\r\n            }\r\n            if (drawing && stepTo(pos.row, pos.col)) {\r\n                pointerActive = drawing;\r\n                if (pointerActive) trackPointer(e);\r\n                return;\r\n            }\r\n            if (data && terminals[data.pairIndex] && terminals[data.pairIndex].connected) {\r\n                const nr = terminals[data.pairIndex].number;\r\n                releasePair(data.pairIndex);\r\n                if (drawing) cancelDraw();\r\n                gameInfo.textContent = `Verbindung der ${nr} gel\u00f6st.`;\r\n                return;\r\n            }\r\n            if (data && data.type === 'terminal') {\r\n                if (drawing) cancelDraw();\r\n                startDraw(data.pairIndex, pos.row, pos.col);\r\n                pointerActive = true;\r\n                trackPointer(e);\r\n                return;\r\n            }\r\n            \/\/ Fehlgriff auf ein leeres Feld verwirft den laufenden Pfad NICHT\r\n        });\r\n\r\n        function trackPointer(e) {\r\n            try { gameBoardEl.setPointerCapture(e.pointerId); } catch (err) {}\r\n        }\r\n\r\n        gameBoardEl.addEventListener('pointermove', function (e) {\r\n            if (!pointerActive || !drawing || phase !== 'playing') return;\r\n            e.preventDefault();\r\n            \/\/ Zwischenpunkte mitnehmen, wo der Browser sie anbietet\r\n            const punkte = (typeof e.getCoalescedEvents === 'function') ? e.getCoalescedEvents() : [e];\r\n            for (const ev of (punkte.length ? punkte : [e])) {\r\n                const pos = cellFromPoint(ev.clientX, ev.clientY);\r\n                if (pos) stepTowards(pos.row, pos.col);\r\n                if (!drawing) break;\r\n            }\r\n        });\r\n\r\n        function endPointer(e) {\r\n            pointerActive = false;\r\n            try { gameBoardEl.releasePointerCapture(e.pointerId); } catch (err) {}\r\n        }\r\n        gameBoardEl.addEventListener('pointerup',     endPointer);\r\n        gameBoardEl.addEventListener('pointercancel', endPointer);\r\n\r\n        \/\/ --- Sieg pruefen ---\r\n        \/\/ Nikolis Regelwerk kennt keine Vollbelegungs-Pflicht: gewonnen ist, wer\r\n        \/\/ alle Paare kreuzungsfrei verbunden hat. Freie Felder sind erlaubt.\r\n        \/\/ Weil jedes Raetsel unter genau diesen Regeln eindeutig ist, ist damit\r\n        \/\/ zwangslaeufig die eine richtige Loesung gefunden.\r\n        function checkWin() {\r\n            if (completedPairs.size === terminals.length) { onSolved(); return; }\r\n            gameInfo.textContent = `${completedPairs.size} von ${terminals.length} Paaren verbunden \u2014 weiter so!`;\r\n        }\r\n\r\n        function onSolved() {\r\n            phase = 'done';\r\n            stopTimer();\r\n            const elapsed = Math.floor((Date.now() - startTime) \/ 1000);\r\n            const neu = !solvedSet.has(puzzleIndex + 1);\r\n            solvedSet.add(puzzleIndex + 1);\r\n            saveSolved(solvedSet);\r\n            updateStats();\r\n            ftEvent({ event: 'arukone_geloest', arukone_nr: puzzleIndex + 1, arukone_sekunden: elapsed, arukone_hinweise: hintsThisPuzzle });\r\n            gameInfo.textContent = neu\r\n                ? `Gel\u00f6st in ${formatTime(elapsed)}.`\r\n                : `Nochmals gel\u00f6st, in ${formatTime(elapsed)}.`;\r\n            nextButton.focus({ preventScroll: true });\r\n        }\r\n\r\n        \/\/ --- Zuruecksetzen ---\r\n        function clearBoard() {\r\n            hinweisMarkierungWeg();\r\n            if (drawing) cancelDraw();\r\n            terminals.forEach((t, i) => { if (t.connected) releasePair(i); });\r\n            \/\/ Nach dem Loesen steht phase auf 'done' und die Zeigerbedienung ist\r\n            \/\/ stillgelegt. Ohne diesen Rueckschalter raeumt 'Zuruecksetzen' zwar das\r\n            \/\/ Brett, aber es liesse sich nichts mehr zeichnen.\r\n            if (phase === 'done') { phase = 'playing'; startTimer(); }\r\n            updateStats();\r\n            gameInfo.textContent = 'Brett zur\u00fcckgesetzt.';\r\n        }\r\n\r\n        \/\/ --- Hinweis: traegt einen KORREKTEN Weg ein ---\r\n        \/\/ Nutzt die hinterlegte Loesung. Zusaetzlich eine Hervorhebung ohne\r\n        \/\/ Animation, damit der Hinweis bei prefers-reduced-motion sichtbar bleibt.\r\n        \/\/ Die Hervorhebung eines Hinweises verschwindet nach 1.2 s per Timer. Wurde\r\n        \/\/ der Timer vorher abgebrochen (Zuruecksetzen oder ein zweiter Hinweis\r\n        \/\/ innerhalb dieser Zeit), blieb der Rahmen dauerhaft stehen \u2014 gemessen:\r\n        \/\/ 4 markierte Felder auch 2 s nach dem Zuruecksetzen. Deshalb Timer UND\r\n        \/\/ Markierung immer gemeinsam entfernen.\r\n        function hinweisMarkierungWeg() {\r\n            clearTimeout(hintTimeout); hintTimeout = null;\r\n            document.querySelectorAll('#ftar-game-board .ar-hint-flash').forEach(el => el.classList.remove('ar-hint-flash'));\r\n        }\r\n\r\n        function showHint() {\r\n            if (phase !== 'playing') return;\r\n            hinweisMarkierungWeg();\r\n            if (drawing) cancelDraw();\r\n\r\n            const frei = [];\r\n            for (let i = 0; i < terminals.length; i++) {\r\n                if (terminals[i].connected) continue;\r\n                const cells = solutionCellsOf(i);\r\n                if (cells.every(p => {\r\n                    const d = gameBoard[p.row][p.col];\r\n                    return d === null || (d.type === 'terminal' && d.pairIndex === i);\r\n                })) frei.push({ i: i, cells: cells });\r\n            }\r\n            if (!frei.length) {\r\n                gameInfo.textContent = 'Kein Weg mehr frei \u2014 bitte eine Verbindung l\u00f6sen.';\r\n                return;\r\n            }\r\n            frei.sort((a, b) => a.cells.length - b.cells.length);\r\n            const pick = frei[0];\r\n            const pair = terminals[pick.i];\r\n\r\n            pick.cells.forEach(p => {\r\n                if (gameBoard[p.row][p.col] === null) gameBoard[p.row][p.col] = { type: 'path', pairIndex: pick.i };\r\n            });\r\n            pair.cells = pick.cells.slice();\r\n            paintPair(pick.i);\r\n            pair.connected = true;\r\n            completedPairs.add(pick.i);\r\n\r\n            pick.cells.forEach(p => cellEl(p.row, p.col).classList.add('ar-hint-flash'));\r\n            hintTimeout = setTimeout(() => {\r\n                pick.cells.forEach(p => { const el = cellEl(p.row, p.col); if (el) el.classList.remove('ar-hint-flash'); });\r\n            }, 1200);\r\n\r\n            hintsThisPuzzle++; hintsTotal++; saveHints(hintsTotal);\r\n            updateStats();\r\n            checkWin();\r\n            if (phase === 'playing') {\r\n                gameInfo.textContent = `Hinweis: Weg der ${pair.number} eingetragen \u2014 ${completedPairs.size}\/${terminals.length} Paaren.`;\r\n            }\r\n        }\r\n\r\n        function solutionCellsOf(pairIndex) {\r\n            const out = [];\r\n            for (let r = 0; r < gridSize; r++) {\r\n                for (let c = 0; c < gridSize; c++) if (solutionGrid[r][c] === pairIndex) out.push({ row: r, col: c });\r\n            }\r\n            return out;\r\n        }\r\n\r\n        \/\/ --- Timer (nur Anzeige, nie ein Zeitlimit) ---\r\n        function startTimer() {\r\n            stopTimer();\r\n            startTime = Date.now();\r\n            timeDisplay.textContent = 'Zeit: 0:00';\r\n            gameTimer = setInterval(() => {\r\n                timeDisplay.textContent = `Zeit: ${formatTime(Math.floor((Date.now() - startTime) \/ 1000))}`;\r\n            }, 1000);\r\n        }\r\n        function stopTimer() { if (gameTimer) { clearInterval(gameTimer); gameTimer = null; } }\r\n\r\n        \/\/ --- Anzeige ---\r\n        function updateStats() {\r\n            \/\/ Weder Raetselnummer noch Geloest-Zaehler: der Fortschritt wird intern\r\n            \/\/ gefuehrt (fuer 'Zufaelliges Raetsel' und den Wiedererkennungshinweis),\r\n            \/\/ aber nicht als Zahl ausgestellt.\r\n            pairsDisplay.textContent = `Paare: ${completedPairs.size} \/ ${terminals.length}`;\r\n            const anteil = terminals.length > 0 ? completedPairs.size \/ terminals.length : 0;\r\n            progressFill.style.width = `${anteil * 100}%`;\r\n        }\r\n\r\n        \/\/ --- Raetsel laden ---\r\n        function showPuzzle(index) {\r\n            puzzleIndex = ((index % TOTAL) + TOTAL) % TOTAL;\r\n            saveCurrent(puzzleIndex);\r\n\r\n            phase = 'playing';\r\n            drawing = false; drawPair = -1; drawPath = []; pointerActive = false;\r\n            completedPairs.clear();\r\n            hintsThisPuzzle = 0;\r\n            clearTimeout(hintTimeout); hintTimeout = null;\r\n\r\n            loadPuzzle(AR_PUZZLES[puzzleIndex], puzzleIndex);\r\n            renderBoard();\r\n            startTimer();\r\n            updateStats();\r\n            gameInfo.textContent = solvedSet.has(puzzleIndex + 1)\r\n                ? 'Bereits gel\u00f6st \u2014 gerne nochmals.'\r\n                : 'Ziehen Sie den Weg von einer Zahl zu ihrem Partner.';\r\n        }\r\n\r\n        \/\/ --- Event listeners ---\r\n        clearButton.addEventListener('click',  (e) => { e.preventDefault(); clearBoard(); });\r\n        hintButton.addEventListener('click',   (e) => { e.preventDefault(); showHint();   });\r\n        prevButton.addEventListener('click',   (e) => { e.preventDefault(); showPuzzle(puzzleIndex - 1); });\r\n        nextButton.addEventListener('click',   (e) => { e.preventDefault(); showPuzzle(puzzleIndex + 1); });\r\n        randomButton.addEventListener('click', (e) => {\r\n            e.preventDefault();\r\n            \/\/ bevorzugt ein noch ungeloestes Raetsel\r\n            const offen = [];\r\n            for (let i = 0; i < TOTAL; i++) if (!solvedSet.has(i + 1) && i !== puzzleIndex) offen.push(i);\r\n            const pool = offen.length ? offen : Array.from({ length: TOTAL }, (_, i) => i).filter(i => i !== puzzleIndex);\r\n            showPuzzle(pool[Math.floor(Math.random() * pool.length)]);\r\n        });\r\n\r\n        window.addEventListener('resize', cacheGeometry);\r\n\r\n        \/\/ --- Start ---\r\n        showPuzzle(loadCurrent());\r\n\r\n        \/\/ Schnittstelle fuer Tests (nur Lesen)\r\n        root.__ar = { zustand: () => ({ phase, gridSize, solutionGrid, puzzleIndex,\r\n            terminals: terminals.map(t => ({ positions: t.positions, connected: t.connected })) }) };\r\n\r\n\r\n        \/\/ Nach einem Mausklick den Fokus abgeben, Tastatur (detail 0) unveraendert\r\n        root.querySelectorAll('.ftar-knopf').forEach(btn => {\r\n            btn.addEventListener('click', e => { if (e.detail > 0) btn.blur(); });\r\n        });\r\n\r\n        try {\r\n            if (!localStorage.getItem('ft_arukone_seen')) {\r\n                document.getElementById('ftar-anleitung').open = true;\r\n                localStorage.setItem('ft_arukone_seen', '1');\r\n            }\r\n        } catch (e) {}\r\n    }\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Arukone \u2013 Number Link Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen. Jedes R\u00e4tsel hat genau eine L\u00f6sung. Weitere Spiele f\u00fcr Ged\u00e4chtnis, Konzentration und Logik finden Sie auf trainmybrain.ch, unserer Plattform f\u00fcr kognitive Spiele. Gleiche Zahlen durch Linien verbinden, ohne Kreuzungen. Zur\u00fccksetzen Hinweis \u2190 Zur\u00fcck Zuf\u00e4lliges R\u00e4tsel Weiter \u2192 Paare: 0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1467,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","iawp_total_views":1881,"footnotes":""},"class_list":["post-6195","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arukone - Number Link<\/title>\n<meta name=\"description\" content=\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arukone - Number Link\" \/>\n<meta property=\"og:description\" content=\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/\" \/>\n<meta property=\"og:site_name\" content=\"Fahrtauglich\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-12T13:57:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\",\"name\":\"Arukone - Number Link\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#website\"},\"datePublished\":\"2025-05-22T16:00:48+00:00\",\"dateModified\":\"2026-10-12T13:57:34+00:00\",\"description\":\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/fahrtauglich.ch\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Praxisportal\",\"item\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Arukone &#8211; Number Link\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#website\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/\",\"name\":\"Fahrtauglich\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fahrtauglich.ch\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#organization\",\"name\":\"Fahrtauglich\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/cropped-Logo-2.jpg\",\"contentUrl\":\"https:\\\/\\\/fahrtauglich.ch\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/cropped-Logo-2.jpg\",\"width\":307,\"height\":188,\"caption\":\"Fahrtauglich\"},\"image\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arukone - Number Link","description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","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:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","og_locale":"fr_FR","og_type":"article","og_title":"Arukone - Number Link","og_description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","og_url":"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","og_site_name":"Fahrtauglich","article_modified_time":"2026-10-12T13:57:34+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/","url":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/","name":"Arukone - Number Link","isPartOf":{"@id":"https:\/\/fahrtauglich.ch\/#website"},"datePublished":"2025-05-22T16:00:48+00:00","dateModified":"2026-10-12T13:57:34+00:00","description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","breadcrumb":{"@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/fahrtauglich.ch\/"},{"@type":"ListItem","position":2,"name":"Praxisportal","item":"https:\/\/fahrtauglich.ch\/praxisportal\/"},{"@type":"ListItem","position":3,"name":"Arukone &#8211; Number Link"}]},{"@type":"WebSite","@id":"https:\/\/fahrtauglich.ch\/#website","url":"https:\/\/fahrtauglich.ch\/","name":"Fahrtauglich","description":"","publisher":{"@id":"https:\/\/fahrtauglich.ch\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fahrtauglich.ch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/fahrtauglich.ch\/#organization","name":"Fahrtauglich","url":"https:\/\/fahrtauglich.ch\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/fahrtauglich.ch\/#\/schema\/logo\/image\/","url":"https:\/\/fahrtauglich.ch\/wp-content\/uploads\/2024\/08\/cropped-Logo-2.jpg","contentUrl":"https:\/\/fahrtauglich.ch\/wp-content\/uploads\/2024\/08\/cropped-Logo-2.jpg","width":307,"height":188,"caption":"Fahrtauglich"},"image":{"@id":"https:\/\/fahrtauglich.ch\/#\/schema\/logo\/image\/"}}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"fahrtauglich.ch","author_link":"https:\/\/fahrtauglich.ch\/fr\/blog\/author\/mintcream-quetzal-259960-hostingersite-com\/"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"Arukone \u2013 Number Link Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen. Jedes R\u00e4tsel hat genau eine L\u00f6sung. Weitere Spiele f\u00fcr Ged\u00e4chtnis, Konzentration und Logik finden Sie auf trainmybrain.ch, unserer Plattform f\u00fcr kognitive Spiele. Gleiche Zahlen durch Linien verbinden, ohne Kreuzungen. Zur\u00fccksetzen Hinweis \u2190 Zur\u00fcck Zuf\u00e4lliges R\u00e4tsel Weiter \u2192 Paare: 0\u2026","_links":{"self":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/comments?post=6195"}],"version-history":[{"count":20,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195\/revisions"}],"predecessor-version":[{"id":8597,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195\/revisions\/8597"}],"up":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/1467"}],"wp:attachment":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/media?parent=6195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}