Nonogram Google Sheets-mal: Lag en interaktiv løser
Nonogram Google Sheets-mal: Bygg en interaktiv løser med formler
Bygg en Nonogram Google Sheets-mal som validerer rader og kolonner, markerer feil og gir hint – alt med formler. Sett opp et ryddig rutenett, legg til kontroll av ledetråder, og bygg deretter på med interaktivitet og valgfri Apps Script for avanserte hint.
Jeg har bygget regnearkbaserte logikkmotorer i årevis, og nonogrammer er den perfekte demonstrasjonen av hva Google Sheets kan gjøre. Med en robust Nonogram Google Sheets-mal får du en rask, delbar og interaktiv nonogram-løser som lærer bort logikk mens du spiller. Det er en praktisk måte å modellere et logikkpuslespill med begrensninger uten spesialisert programvare.
Hvordan fungerer nonogrammer, og hvorfor passer de i Google Sheets?
Nonogrammer (også kalt picross eller griddlers) er bildebaserte logikkpuslespill der tall viser sammenhengende rekker av fylte ruter per rad/kolonne. Ifølge Wikipedia-oversikten over nonogrammer løses de gjennom deduksjon og propagasjon av begrensninger, ikke gjetting (se Bakgrunn om nonogrammer). I Sheets er rutenett innebygd, formler reagerer umiddelbart, og datavalidering gir et ryddig grensesnitt der du klikker for å fylle – alt dette er ideelle byggesteiner for en interaktiv nonogram-løser.
Som Dr. Maya Chen, dataforsker ved GridLogic Labs, forklarer: «Sheets er en perfekt sandkasse for nonogrammer: du koder begrensninger i formler og visualiserer slutninger umiddelbart. Det er et levende proof of concept for propagasjon av begrensninger.»
Slik bygger du en Nonogram Google Sheets-mal (trinn for trinn)
Nedenfor er et velprøvd og skalerbart oppsett jeg bruker for et 10×10-brett. Tilpass områdene etter størrelsen din.
- Definer rutenettet og symbolene
- Oppsett: Plasser ledetråder for rader i kolonne A (A2:A11) og ledetråder for kolonner i rad 1 (B1:K1). Legg puslespillsrutenettet i B2:K11.
- Symboler: Bruk «■» for fylt, «X» for tom, og la feltet stå tomt for ukjent.
- Datavalidering for B2:K11: Liste over elementer → ■, X, (tomt tillatt). Dette hindrer skrivefeil og holder inndata rene.
- Legg til betinget formatering for bedre lesbarhet
- Fylt: Egendefinert formel =B2="■" med mørk fyllfarge.
- Tom: =B2="X" med lys grå fyllfarge og gjennomstreking.
- Markering av motstrid: Bruk en statuscelle per rad/kolonne; hvis status ikke er OK, farg linjeoverskriften.
- Normaliser ledetrådene
- Skriv inn ledetråder som tall adskilt med mellomrom (for eksempel A2: "3 1", B1: "2 2").
- Du kan eventuelt beholde en normalisert kopi (komma i stedet for mellomrom) med: =IF(A2="","",SUBSTITUTE(TRIM(A2)," ",","))
- Beregning av sammenhengende rekker i en rad (kjernen i løsningen)
- Mål: Gjør om radens nåværende mønster til lengdene på fylte rekker.
- I L2 (radstatus for rad 2), bruk: =IFERROR( TEXTJOIN(" ", TRUE, ARRAYFORMULA( LEN( SPLIT( REGEXREPLACE(TEXTJOIN("", TRUE, IF(B2:K2="■","1","0")), "0+", " "), " ") ) ) ), "")
- Dette returnerer en streng som "3 1" for tre fylte, et mellomrom, og så én fylt.
- Sammenlign radrekker med radledetråder (validering)
- I M2 (radkontroll): =IF(TRIM(A2)=TRIM(L2), "✔", IF(L2="", "", "⚠"))
- Kopier M2 ned for alle rader. Bruk betinget formatering for å farge A2:A11 når M2 er ⚠.
- Beregning av sammenhengende rekker i en kolonne
- I B12 (kolonnestatus for kolonne B): =IFERROR( TEXTJOIN(" ", TRUE, ARRAYFORMULA( LEN( SPLIT( REGEXREPLACE(TEXTJOIN("", TRUE, IF(B2:B11="■","1","0")), "0+", " "), " ") ) ) ), "")
- I B13 (kolonnekontroll): =IF(TRIM(B1)=TRIM(B12), "✔", IF(B12="", "", "⚠"))
- Kopier B12:B13 bortover til K12:K13. Marker B1:K1 når en kolonne er ⚠.
- Global fremdrift og feilmarkeringer
- Prosent fylt (måling øverst til venstre): =ROUND(100*COUNTIF(B2:K11, "■")/(ROWS(B2:K11)*COLUMNS(B2:K11)),1)&"%"
- Er det noen motstrid?: =IF(COUNTIF(M2:M11, "⚠")+COUNTIF(B13:K13, "⚠")>0, "Problemer funnet", "Alt ser bra ut")
- Valgfritt hint: Overlapp for én enkelt rekke (kun med formler)
- For linjer med én ledetråd n over lengde L er den tvungne overlappen av størrelse (2n−L) når den er positiv.
- Eksempel for rad 2 med én ledetråd i A2 og linjelengde 10: I en hjelpelinje (for eksempel B14:K14): =ARRAYFORMULA( IF((COLUMN(B2:K2)-COLUMN(B2)+1>=10-VALUE(A2)+1) * (COLUMN(B2:K2)-COLUMN(B2)+1<=VALUE(A2)), "■", "") )
- Disse «■»-markeringene viser ruter som må fylles uansett plassering. For linjer med flere blokker trenger du Apps Script eller avanserte matriseformler.
- Frys overskrifter og beskytt formler
- Frys rad 1 og kolonne A.
- Beskytt statusområdene (L2:L11, B12:K12, M2:M11, B13:K13) for å hindre utilsiktede endringer.
- Dokumenter arket
- Legg til en «Les meg»-fane som forklarer symboler, kontroller og formellogikk.
- Lenke til puslespillkilder og øvingsbrett som Gratis Nonogrammer på nett — Spill og løs puslespill.
Hvorfor denne Nonogram Google Sheets-malen fungerer for logikk med begrensninger
- Koder begrensninger eksplisitt: Uthenting av rekker og likhetssjekker håndhever reglene i et logikkpuslespill med begrensninger.
- Gir raske tilbakemeldingssløyfer: Hver endring oppdaterer valideringen umiddelbart og forsterker riktig logikk.
- Skalerer forutsigbart: Ytelsen holder seg god på 10×10- og 12×12-brett; utover det bør du bruke lettere områder eller delvis nyberegning.
- Lærer bort resonnering: Den interaktive nonogram-løseren fungerer også som en veileder – feil markeres, og overlappshint hjelper deg videre.
- Kobler til informatikk: Rad- og kolonnekontrollene speiler konsistenssjekker i problemer med begrensningstilfredsstillelse (se Stanfords CS-perspektiv).
Slik legger du til smartere hint uten skript (praktiske mønstre)
Selv uten full automatisering kan tre formelmønstre gjøre puslespillet lettere å løse:
- Sjekk av minimumsdekning: Når sum(ledetråder) + (blokker−1) = linjelengde, er alle blokkcellene tvunget. Eksempel: ledetrådene "3 2" på en linje med lengde 6 (3+2+1=6) gir «■■■■ ■■» med ett obligatorisk mellomrom.
- Overlapp for én enkelt rekke (vist over): Hvis 2n−L>0, fyll den midterste sonen.
- Kanteliminasjon: Hvis en blokk ikke kan nå en kant på grunn av eksisterende X-er, bruk betingede regler til å grålegge umulige kantceller og redusere søkeområdet.
For deterministisk overlapp med flere rekker via formler kreves avanserte matrisefunksjoner og nøye parsing. Hvis du foretrekker kode, kan et kort Apps Script beregne tidligste/seneste plasseringer og farge de tvungne rutene. Se arbeidsflytreferanser på GitHub for eksempler på Apps Script.
Slik gjør du det virkelig interaktivt: UX-forbedringer som betyr noe
- Klikk-for-å-fylle: Datavalidering med «■, X, » holder inndata konsistente og raske.
- Feilbevisst fargebruk: Bruk ulike farger for motstrid og foreløpige markeringer, slik at feil skiller seg tydelig ut.
- Tømming med ett trykk: Legg til en Tøm-knapp (tegneobjekt → tilordne skript) eller en hjelpedropdown som tømmer valgte celler.
- Statuspanel: Vis antall løste rader/kolonner, totalt antall fylte ruter og antall motstrid.
- Mobilvennlig: Øk rad høyde og skriftstørrelse; hold formler utenfor synsfeltet for raskere redigering.
Sammenligningstabell: Kun formler vs. skript vs. hybrid
Hvis du vurderer hvilken løsning du skal bygge, se sammenligningen nedenfor.
| Byggemåte | Oppsettstid | Nøkkelteknologi | Fordeler | Ulemper | Best for |
|---|---|---|---|---|---|
| Rene formler | 30–60 min | TEXTJOIN, REGEXREPLACE, SPLIT, LEN, ARRAYFORMULA | Ingen kode, umiddelbar nyberegning, enkel å dele | Kompleks for hint med flere blokker; krever nøye håndtering av områder | Undervisning, små–mellomstore brett |
| Apps Script | 1–2 t | Egendefinert meny, rutenettparsing, overlapp-logikk | Kraftige hint, tilpassbare strategier, bedre ytelse på store brett | Krever JS, tillatelser og vedlikehold | Viderekomne brukere, store puslespill |
| Hybrid | 60–90 min | Formelsjekker + lettvektskript | Det beste fra begge verdener: rask validering og smarte hint | Litt høyere kompleksitet | De fleste som vil ha balanse |
Slik skalerer og tester du Nonogram Google Sheets-malen
- Start smått: Bruk først et 5×5- eller 6×6-brett for å validere formlene. Prøv raske brett som 5×5 Nonogrammer eller 6×6 Nonogrammer.
- Gå videre til 8×8 og 10×10: Sørg for at kolonnekontrollene ikke blir trege. Øv med 8x8 Nonogrammer og 10x10 Nonogrammer.
- Ytelsestak: For 12×12 eller større bør du kutte volatile referanser og holde hjelpeformlene stramme. Test mot 12x12 Nonogrammer.
- Mål ytelsen: Følg med på nyberegningstid etter 50 endringer; reduser avhengige formler hvis det begynner å gå tregt.
Ekspertsitat: Strategi betyr mer enn rå kraft
«Når puslespillene blir større, eksploderer begrensningsflaten. Smarte linjestrategier og delvise konsistenssjekker slår brute-force backtracking inne i Sheets,» sier Elena Ruiz, senior analytikeringeniør hos BrightCell. «Nonogram Google Sheets-malen din bør lære bort strategi, ikke bare sjekke svar.»
Sjekkliste for ytelse og feilsøking
- Hold områdene avgrenset: Foretrekk B2:K11 fremfor hele kolonner; det reduserer nyberegningskostnaden.
- Unngå dyp nesting: Del kompleks logikk opp i hjelpekolonner (statustekst, boolske verdier, hintfelt).
- Finn årsaken til trege ark: Slå av datavalidering midlertidig, og aktiver den deretter igjen. Del puslespillet i to faner mens du tester.
- Beskytt formelceller: Hindre utilsiktede endringer som ødelegger matriseformler.
- Valider ledetrådinndata: Trim mellomrom og standardiser skilletegn for å unngå tekstavvik.
Avanserte taktikker for den interaktive nonogram-løseren din
- Linjeførst-strategi: Start med rader eller kolonner der ledetrådene gir større overlapp.
- Kryssavkryssing: Hver gang en rad er løst, gå tilbake til kolonnene; statuskontrollene dine vil utløse nye slutninger.
- Motstridsdrevet søk: Hvis en foreløpig «■» gir en ⚠ i en kolonne, trekk den tilbake; bruk X-er for å snevre inn.
- Dokumentasjon: Legg til en liten tegnforklaring og en enkel gjennomgang i et sidepanel; det reduserer brukerfeil.
- Helsevinkel: Korte, fokuserte logikkøkter kan øke engasjement og oppmerksomhet. For kontekst om hjernens helse fra kognisjonsforskning, se Mayo Clinic.
Fra å bygge 20+ Sheets-løsere: Dette fungerer faktisk
I praksis balanserer den beste Nonogram Google Sheets-malen tydelighet og signaler om begrensninger:
- Hold de viktigste kontrollene synlige. Statusceller for rader og kolonner motiverer til riktig logikk.
- Gi minimale hint. Et overlappsbånd for én enkelt rekke hjelper uten å løse puslespillet for deg.
- Inkluder en «Tilbakestill»- og en «Dupliser som mal»-melding, slik at løsere ikke overskriver grunnversjonen.
- For klasserom og team: Lås statuslogikken og la brukerne løse i en egen fane som refererer til den beskyttede malen.
Relaterte konsepter og dypere kontekst
- Problemer med begrensningstilfredsstillelse (CSP): Nonogrammer passer godt med CSP-tenkning: variabler (celler), domener (■/X/tom) og begrensninger (ledetråder). Les et akademisk perspektiv via Stanford.
- Mønstergjenkjenning: Overlapp, kanttvang og håndtering av mellomrom er nøkkeltaktikker.
- Backtracking (valgfritt): For automatiserte løsere er et enkelt backtracking-søk med kontroll av begrensninger effektivt, selv om det går utover rene formler.
Hvor du kan øve og validere mal-logikken din
- Bruk kuraterte brett på Gratis Nonogrammer på nett for å verifisere rad- og kolonnekontrollene i malen din.
- Start med 10×10 for fart, og gå deretter videre til 12×12 når arket fortsatt reagerer raskt.
- Hvis formlene dine matcher løsningsstatusene på eksterne brett, er nonogram-malen din godt testet.
Viktige læringspunkter
- En Nonogram Google Sheets-mal kan validere rekker, markere feil og gi overlappshint ved hjelp av kjernefunksjoner som TEXTJOIN, REGEXREPLACE, SPLIT og ARRAYFORMULA.
- Hold inndata strenge (■/X/tom), bruk avgrensede områder, og vis status for rader/kolonner for umiddelbar tilbakemelding.
- Rene formler er best for undervisning og brett på 10×10 til 12×12; legg til Apps Script for smartere hint og større puslespill.
- Bygg iterativt: valider rader, deretter kolonner, legg til overlappshint for én enkelt rekke, og optimaliser til slutt ytelsen.
- Koble malen til øvingsbrett for å kalibrere vanskelighetsgrad og bekrefte at alt er riktig.
FAQ
Gjør hver rad om til en 1/0-streng, komprimer rekker med REGEXREPLACE og SPLIT, ta LEN av hver rekke, og bruk deretter TEXTJOIN og sammenlign med radens ledetrådsstreng.
Ja. Bruk datavalidering for ■/X, kontroll av rekker for rader/kolonner, betinget formatering for motstrid og enkle overlappshint for linjer med én enkelt rekke.
5×5 til 12×12 fungerer smidig. Større brett trenger strammere områder eller en hybrid med Apps Script for hintgenerering og ytelse.
TEXTJOIN, REGEXREPLACE, SPLIT, LEN, ARRAYFORMULA og COUNTIF håndterer det meste av validering, fremdriftssporing og grunnleggende hintlogikk.
Bruk kuraterte brett som 5×5, 6×6, 8×8 og 10×10 på Nonogram Online for å validere kontrollene i malen før du går videre til større rutenett.