Väike Programmeerimise väljakutse (Erikujulised sudokud)

Loetud 91 kasutaja poolt

MeikopVint.ee asutaja 2012-04-23T14:37:13+03:00
Ülesanne siis järgmine:

Alljärgnevalt on kirjeldatud erikujulise sudoku väljad:
6 6 8 8 8 8 8 8 8
6 6 2 2 2 8 2 3 8
6 6 6 6 2 2 2 3 3
6 5 5 1 2 2 1 3 3
5 5 1 1 1 1 1 3 3
5 5 1 7 7 1 3 3 4
5 5 7 7 7 4 4 4 4
9 5 7 9 7 7 7 4 4
9 9 9 9 9 9 9 4 4

Ühesugused numbrid tähistavad ühte ala.

Meil on vaja genereerida juhuslikult selline sudoku kus numbrid (1-9) igas reas ja veerus oleks unikaalsed. Lisaks peab unikaalsus olema tagatud ka igas alas (kirjeldatud eelneva massiiviga).

Enne me erikujulisi sudokusid vinti tuua ei saa kui me loome algoritmi, mis selle sudoku umbes 100 ms ära genereerib.

Ehk on Vindi kasutajate hulgas mõni programmeerimishuviline kes antud ülesande ära lahendab.

Ülesande lahendajale au, kuulsus ja muud hüved (tasuta VIP staatus jms).

NB! Algoritm peab suutma genereerida igale erikujulisele sudokule (kirjeldatud siin: http://www.vint.ee/uploads/erikujuline.txt) korrektse ülesande alla 100 ms.

kraska 2012-04-23T17:29:43+03:00
Ma arvan, et selle jaoks on vaja ikka kümne aastase kogemusega IT-spetsialisti.
MeikopVint.ee asutaja 2012-04-23T20:43:06+03:00
[i]postitas kraska[/i]
Ma arvan, et selle jaoks on vaja ikka kümne aastase kogemusega IT-spetsialisti.


Ei. Tiit näiteks õppis keskkoolis paar aastat Pascalit. Ühel hetkel võttis kätte ja progres Javas sudokude hindaja. meetod, mis võtab sisendiks lahendamata sudoku ja ütleb, kui raske seda lahendada on (Täna Vindis kasutusel olev kerge/keskmine/Raske süsteem).

Käesoleva ülesande lahendamiseks on vaja primitiivseid teadmisi programmeerimisest (while ja if põhiliselt).

Kõige keerulisem on välja mõelda algoritm - Andmestruktuuride, while tsüklite korrektse kirlejdamise jms pealt võid võita kordades. Õige algoritmiga võidad ajas suurusjärkudes.
Mask 2012-04-23T22:38:12+03:00
Huvitav, kas see näide on natukenegi õiges suunas?
11115555
11225255
37773375
84474479
81144666
98448446
37557775
22328899
22229999
MeikopVint.ee asutaja 2012-04-24T08:52:25+03:00
Sul ei ole ju igas reas unikaalsed numbrid nagu sudoku nõuab:)
Mask 2012-04-24T12:36:54+03:00
Nüüd peaks olema küll unikaalne, peeglis, entroopialik, negatiiv. Näite põhjal see igatahes nii tundus. Üks kriteerijum oli puudu. Kõiki numbreid peab olema üheksa. Ja üks rida lahendusest puudus:)


111185555
117115255
177733375
374764476
666474333
384448486
286668889
223299899
222259999
MeikopVint.ee asutaja 2012-04-24T16:30:27+03:00
Sa oled vist ülesandest valesti aru saanud: Eesmärk on tekitada täidetud erikujuline sudoku, võttes aluseks erikujulise sudoku kirjeldus (mis oli lisatud esimeses postituses)
Mask 2012-04-24T22:25:21+03:00
Tõepoolest, ilmselt püüdsin võhikuna aru saada, sudoku kirjeldusest, arvuti keeles.
Oleks abiks kirjeldust ja sudokut kõrvuti näha. See aitaks mõista ühe numbrirea tähendust, sudoku või selle osa kirjeldamisel.

Näites olev numbrijada selline:
{1,1,1,1,1,2,2,2,2},
{1,1,3,3,4,5,5,2,2},
{1,3,3,4,4,4,5,5,2},
{1,3,4,4,4,4,4,5,2},
{8,3,6,6,6,6,6,5,2},
{8,3,3,6,6,6,5,5,9},
{8,3,7,7,6,7,7,5,9},
{8,8,7,7,7,7,7,9,9},
{8,8,8,8,9,9,9,9,9}};

Püüdsin kirjutada ilmselt teise sudoku kirjeldust, et numbrid igas reas ja veerus oleks unikaalsed. Lisaks, et unikaalsus oleks tagatud ka igas alas (kirjeldatud eelneva massiiviga).
Oma unikaalne süsteem ja sarnasus siin on. Massiiv ja tähendus ilmselt puudulik:)
Kuid mõte iseenesest ei tundunud tobe seetõttu, et sudokusid on palju erinevaid. Seetõttu võis arvata, et ka kirjeldusi ilmselt palju erinevaid. Ning tulemuseks tuli midagi sellist:

(1,1,1,5,2,5,9,9,9)
(1,1,6,3,7,3,6,9,9)
(1,8,8,8,7,4,4,4,9)
(5,6,6,6,7,2,3,3,2)
(2,2,2,7,7,7,5,5,5)
(5,6,6,5,7,3,3,3,2)
(4,9,9,9,7,1,1,1,8)
(4,4,6,3,7,3,6,8,8)
(4,4,4,2,5,2,8,8,8));

626171848
262717484
626171848
595737959
959373595
595737959
484313262
848131626
484313262

Ja nagu ma nüüd aru sain siis ei ole siiski eesmärk täidetud erikujuline sudoku Või kirjeldus, mis on juba olemas ja eksisteerib, vaid olemasoleva sudoku (kirjeldusele) programm, mis seda loeb, et arvuti söödetud info kiiremini jõuaks visuaalseks sudokuks kuvada.


MeikopVint.ee asutaja 2012-04-25T06:06:49+03:00
Sinu toodud näite esimene rida on: (1,1,1,5,2,5,9,9,9)
Seal reas ei ole ju kõik numbrid (1-9) unikaalsed!
Mask 2012-04-25T17:04:00+03:00
Ehk siis on ta sarnane alumise reaga?!

Lisa vastus

See funktsionaalsus on ainult verifitseeritud või VIP kasutajatele