Zigh
Tittelitön
- Liittynyt
- 17.10.2016
- Viestejä
- 5 119
Itse tekisin varmaan niin, että kerätään kahta settiä "vieraillut" ja "naapurit", joissa vain uniikkeja ruutuja eikä samaa ruutua molemmissa.Törmäsin yksinkertaisen oloiseen mutta jotenkin hankalaan ongelmaan. On 8x8 ruudukko ja siihen joko "käyttäjä" tai random arpoo 8 ykköstä ja loput solut on nollia. Pitäisi nopeasti pienellä koodinpätkällä tutkia, ovatko ykköset ns. yhtä suurta mannerta, eli palat kiinni toisissaan seinistä tai katto/lattiasta. Kulmittain ei saa olla eikä irrallisia saaria. En saanut tätä tehtyä millään?
Täydennystä, liitteenä on muutama ok ja ei-ok manner. Ja kulmitttain saa olla, mutta ei pelkästään kulmittain.
A Etsitään siis ensimmäinen ykkönen -> vieraillut + 1 kpl
B Tarkistetaan tämän naapurit (neljään suuntaan)-> naapurit + n kpl
C Siirrytään yhteen naapureista -> vieraillut + 1 kpl, naapurit - 1 kpl
D Toistetaan B ja C niin kauan, että naapurit on tyhjä (kohdassa B lisätään vain naapurit, joita ei löydy kummastakaan setistä)
E Jos kuvio on yhtenäinen, vieraillut on tässä vaiheessa kooltaan 8. Jos ei, kuvio ei ole yhtenäinen.
Varmaan löytyy joku elegantimpikin ratkaisu, mutta tämä nyt tuli ensimmäisenä mieleen.