Sudokuak ebazteko programa
Onartu behar dut, jokoekin arazo bat dut. Kontuz, ez JOKOArekin, hau da, ez dirua jokatzen den zorizko jokoekin. Trebetasunezko jokoekin zein burua haustekoekin dut arazoa, bideo-joko zein mahaigaineko izan: behin probatuta, sarri katigatuta geratzen naiz, eta ez dut bakerik amaitzea lortu arte edo, denbora asko eman eta gero, amore eman arte. Bideo-jokoei dagokienez, haurretan Game & Watch makinatxoekin (bereziki Robot Maker) ibiltzen nintzen, nerabezaroan Sinclair ZX Spectrumeko jokoekin (Knight Lore, Manic Miner, Skool Daze, Highway Encounter edo Everyone's a Wally bezalakoekin), gaztetan PCtako lehenengotako jokoekin (Prince of Persia, Pitfall: The Mayan Adventure edo Monkey Island 2: LeChuck's Revenge adibidez). Horietako guztietako hainbat amaitu nituen (zenbaitetan aldizkarietako gidak edo tranpak baliatuta, dena esan behar bada). Eta heldutan eta nahiko berriki eta oso fuerte, semeei jarritako Wii-aren Dolphin emulagailuan joko batzuekin ere gertatu zait: Prince of Persia: Rival Swords, Prince of Persia: The Forgotten Sands eta Donkey Kong Country Returns bideo-jokoekin jo eta fuego aritu nintzen istorio osoa bukatu arte, eta Mario Kart Wii-n ere obsesionatuta egon nintzen pertsonaia eta kotxe guztiak askatu arte, zilindrada denetan (ispilua barne) eta zirkuitu guztietan urrezko kopa eta hiru izar eskuratu arte eta erlojuaren kontrakoak gainditu arte. Buruhauste jokoei dagokienez, haurretan maisuaren gurutzea eta puzzle lerrakorrak ebatzi nituen, eta Rubiken kuboa alde bat eta koroa bat (edo bi, ez nago ziur) egitea lortu nuen, eta kubo osoa egiten ikasi, jarraibideak jarraituta. Heldutan, haurrentzat erositako Rush Hour eta IQ Puzzler Pro-rekin tematuta aritu nintzen, ez dakit maila guztiak baina bai gehienak lortu artean. Tira, jokoekin arazoa izatearena esajerazioa da, joko batekin horrela tematzean, egunak edo asteak eman ditzaket orduak sartzen amaitu edo errenditu arte, bai, baina gero hilabeteak eta urteak ematen ditut beste bat probatu gabe. Baina semeek joko berri bat ongi dagoela eta probatu beharko nukeela esaten didatenean, gehienetan nahiago dut ez probatu, ezagutzen dudalako nire burua... ;-)
2005etik aurrera Sudoku jokoa mendebaldean hedatzen eta paperezko hedabideetan agertzen hasiz geroztik, batzuetan jokatu izan dut, bai egunkari eta aldizkarietan, bai ordenagailuan edo telefonoan, baina grina berezirik gabe. Errazak edo ertainak direnak erraz ebazten nituen teknika sinple batzuekin, eta zailak saiatu bai baina konplikatuak zirela ikusi eta utzi egiten nituen. Duela gutxi arte. Halako batean, ordenagailuko Linux sistemak instalatuta dakarren Sudoku programan partidatxo erraz batzuk jokatzen hasi, gero ertainetara pasatu, eta konturatu orduko zailak edo oso zailak ebazten saiatzen nenbilen...
Errazak eta ertainak teknika sinple batzuk aplikatuta egin daitezke, aukerak bilatze hutsarekin. Baina zailentzat ez dago teknika sinplerik apuntatzen-eta ibili beharrik gabekorik, edo nik behintzat ez dakit edo ez naiz gai buruan dena gordetzeko. Baina papera eta lapitzaren laguntzarekin zailentzako ustez funtzionatu zezakeen metodo bat garatu nuen: lauki bakoitzarentzako aukera posible guztiak apuntatzen nituen, hor ikusi lerro, zutabe edo 3x3ko koadroren batean aukera bakarrik gelditzen zen... eta aukera bakarrik ez zegoenetan, aukera posibleetako bat hautatu eta hortik jarraitu, baina irteerarik gabeko aukera bat aurkituz gero, azken hautaketa punturaino atzera egin behar eta beste bide bat probatu...
Kontua da aipatutako metodo hori aplikatzea konplexua dela, kalkulu eta konbinaketa asko egin behar dira, bide asko probatu batzuetan, eta akatsak egiteko aukerak handiak dira. Orduan, oso gutxitan lortzen nuen bukatzea. Baina zalantza nuen ea metodoak balio ez zuelako edo kalkuluren batean okertzen nintzelako ote zen.
Eta zerbaitetan badira onak ordenagailuak, kalkuluak egiten eta konbinazioak azkar probatzen da. Eta zerbaitetarako naiz informatikaria, ezta? Bada, pentsatutako metodoa inplementatzen zuen programa bat idatzi nuen. Konprobatu nuen metodoak funtzionatzen zuela sudoku erraz, ertain eta zailekin, baina oso zailekin ez beti; bide bat hautatu behar zuenean ausaz hartzen duen bidearen arabera, batzuetan bai eta beste batzuetan ez. Baina programari esker metodoaren akats edo hutsunea aurkitu ahal izan nuen eta konpondu.
Sudoku ebazlea Python programa bat da eta GitHub-en jarri dut GPL lizentzia librearekin. Ustez, konponbidea duen edozein sudoku ebazteko gai da eta esaten badu ezin duela ebatzi, ebazpenik ez duelako da, baina ezin dut ziurtatu. Ordenagailuko sudoku jokoetan planteatzen diren hainbat sudokurekin eta zailtasun maila ezberdinekin probatu dut, eta beti ebatzi ditu. Ebazpenik ez dutela ziur dakidan kasuetan, ebazpenik ez dutela esan du. Sudokuak ebazpen bat baino gehiago badu, bat eman eta gelditu egiten da. Hurrengo exekuzio batean beste ezberdin bat eman dezake.
Exekutatzeko hainbat aukera daude. Aurrez definituta dakartzan sudokuetako bat ebaztea eska diezaiokegu (erraz, ertain, zail eta oso zail batzuk, hutsa, ebazpenik ez duen bat, ebazpen anitz duen bat...) edo guk sartuko dizkiogu ebatzi nahi dugun sudokuaren balioak. Azken emaitza soilik erakusteko esan diezaiokegu edo bideko pauso guztiak, une bakoitzeko aukeren egoerarekin (aukeretan lauki bakoitzerako dauden aukera posibleak erakutsiko ditu; hautatuko den aukera bakarra bada berdez markatuko du, hainbat badaude hartutakoa horiz markatuko du, eta uneren baten irteerarik gabeko bide batera iristen bada gorriz markatuko du, hautaketa bat egindako azken egoerara itzuliz eta beste hautu bat eginez). Eta pauso bakoitzaren amaieran guk tekla bat sakatu arte itxoiteko ere hauta dezakegu, edo ez.
Beraz, Sudoku jokoarekin ere izan dudan mailaz maila ebaztea lortzeko konpultsioa gainditu dut, metodo bat garatu eta programa bat eginda. Ez da beste munduko lorpenik, ziur sudokuak ebazteko milaka programa badaudela Interneten. Erronka pertsonal txiki bat, eta lortu izanaren gogobetetze eta harrotasun sentsazio xume bat besterik ez. Baina aizu, zertarako izan blog pertsonal bat horrelako gauzak kontatzeko ez bada? ;-)
Nik zahartzaroan egin beharreko ariketen disziplinaz baino ez bada ere, egunero egiten dut bat edo beste. Eta, normalean, denak amaitu ohi ditut. Aukerarik aukeraz, jakina. Seguru, gero, nire eskuetara iristen direnak ez direla merkatuko zailenak, baina, behar bada, ezta, batez beste, errazenak ere. Alzheimer-Citak hirugarren adinekooi jarri ohi dizkigunak, behintzat, nabarmen errazagoak dira.
Sarri pentsatu izan dut nork arraiok egiten ote dituen sudokuak ze, gero ebatzi ahal izateko, bidea egin ahal izateko, aurretik norbaitek (edo zerbaitek?) jakin behar izango du bide guztia atzekoz aurrera burutzen, ezta?
Zurea irakurri ostean, hona galdera: sudokuak nola prestatzen edo asmatzen dira?