Skip to content

dnamsons/sudoku-gem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sudoku

Uzdevums

  1. Izlasīt https://guides.rubygems.org/make-your-own-gem/ un izveidot sudoku.gemspec failu, kā arī iestatīt rspec šajā direktorijā(vairāk info - http://rspec.info/).

    Katrai no uzdevuma ietvaros izveidojamām klasēm jāizveido testa fails, kurā notestē katru publisko klases metodi(Pirms sākt, vajadzētu iepazīties ar testēšanu šeit)

  2. Izveidot klasi Board, kas satur sekojošas metodes

    • columns - atgriež sudoku laukuma kolonnu masīvu
    • filled? - atgriež true vai false, atkarībā no tā, vai viss laukums ir piepildīts(nav svarīgi, vai tas darīts pareizi)
    • valid? - Izmantojot pārveidotu Validator klasi(par to vairāk 2.), atgriež true vai false, atkarībā no tā vai laukums ir pareizi aizpildīts(nav svarīgi, vai tas ir pilnīgi, vai nepilnīgi aizpildīts)
    • subgroups - atgriež masīvu ar sudoku laukuma apakšgrupām(mazie 3x3 kvadrātiņi)
    • to_s - atgriež string, kas noformatēts tieši tāpat kā .sudoku ievades faili
    • Instancei jāļauj piekļūt rindām un kolonnām, kā to varētu darīt ar masīvu -
        board = Board.new(...)
        board[0][1]
    • Divas Board instances jāspēj salīdzināt ar ==
    • insert - Ļauj norādīt rindas un kolonnas koordinātu, kā arī vērtību, kuru ievietot. Metode atgriež divdimensiju masīvu ar laukuma saturu(kā laukums izskatās pēc ievietošanas). Izmaiņas netiek pieglabātas klases instances datos. Ja lietotājs ievadījis ko citu kā ciparu, atgriezt kļūdas ziņojumu un neizvadīt izmainīto masīvu.
    • insert! - Ļauj norādīt rindas un kolonnas koordinātu, kā arī vērtību, kuru ievietot. Metode veic izmaiņas ar instances datiem. Ja lietotājs ievadījis ko citu kā ciparu, atgriezt kļūdas ziņojumu un izmaiņas neveikt.
  3. Izveidot klasi Validator, kas saņem klases Board instanci un, izmantojot tai pieejamās metodes, pārbauda, vai sudoku laukums ir pareizs.

  4. Izveidot klasi Parser, kas saņem .sudoku formāta stringu. Klasei jāatgriež gatava Board klases instance

  5. Palasīt Struct dokumentāciju.

    Izveidot jaunu Struct ar nosaukumu CellValue, kurai ir divi atribūti - value un locked.

    • value - satur lauka ciparisko vērtību
    • locked - norāda uz to, vai lauks ir labojams

    Pārveidot Board klases rindu vērtības no cipariem par CellValue instancēm

    Izveidojot jaunu Board instanci, aizpildītie cipari tiek uzstādīti ar atribūtu locked = true.

    Izsaucot metodi insert, vai insert! ar koordinātām uz struktūru, kuras locked vērtība ir true, izmetam kļūdas paziņojumu(Vairāk par exceptioniem šeit). Kļūdai jāizmanto paštaisīta Exception klase.


Parauga ievades faila formāts

Nulles apzīmē tukšās sudoku mīklas vietas

8 5 0 |0 0 2 |4 0 0
7 2 0 |0 0 0 |0 0 9
0 0 4 |0 0 0 |0 0 0
------+------+------
0 0 0 |1 0 7 |0 0 2
3 0 5 |0 0 0 |9 0 0
0 4 0 |0 0 0 |0 0 0
------+------+------
0 0 0 |0 8 0 |0 7 0
0 1 7 |0 0 0 |0 0 0
0 0 0 |0 3 6 |0 4 0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published