Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:teme_2020:tema3_2020_cbd [2021/01/08 11:23]
vlad.burcea [The Emperor's New Sudoku]
programare:teme_2020:tema3_2020_cbd [2021/01/19 11:31] (current)
vlad.burcea [Bonus - 35p]
Line 14: Line 14:
 **Termen de predare:** **Termen de predare:**
   * Data publicării:​ **27.12.2020**   * Data publicării:​ **27.12.2020**
-  * Deadline soft: **22.01.2021** +  * Deadline soft: **27.01.2021** 
-  * Deadline hard: **22.01.2021**+  * Deadline hard: **27.01.2021**
  
 /* /*
Line 27: Line 27:
  
 ===Actualizări:​=== ===Actualizări:​===
-  * 08.01.2021 - Corectat teste.+  ​* 15.01.2021 - VMchecker este [[https://​v2.vmchecker.grid.pub.ro/​homepage/​|live]]. 
 +  * 14.01.2021 - Update deadline. 
 +  * 10.01.2021 - Adaugat pseudocod task bonus 
 +  * 08.01.2021 - Corectat teste task bonus.({{:​programare:​teme_2020:​checker_tema3_v3.zip|checkerul}}) 
 +  ​* 08.01.2021 - Corectat teste task 4.
   * 07.01.2021 - Actualizari mod de rulare.   * 07.01.2021 - Actualizari mod de rulare.
-  * 06.01.2021 - Am adaugat {{:​programare:​teme_2020:​checker_tema3_v2.zip|checkerul}} local. ([[programare:​teme_2020:​tema3_2020_cbd#​resurse_si_checker-ul_local|link]]). Schimbare cerinte Makefile & mod de rulare.+  * 06.01.2021 - Am adaugat {{:​programare:​teme_2020:​checker_tema3_v3.zip|checkerul}} local. ([[programare:​teme_2020:​tema3_2020_cbd#​resurse_si_checker-ul_local|link]]). Schimbare cerinte Makefile & mod de rulare.
   * 05.01.2021 - Actualizari **importante** fisiere de input/​output. ([[programare:​teme_2020:​tema3_2020_cbd#​fisiere_de_intrareiesire|link]])   * 05.01.2021 - Actualizari **importante** fisiere de input/​output. ([[programare:​teme_2020:​tema3_2020_cbd#​fisiere_de_intrareiesire|link]])
   * 04.01.2021 - Mici actualizari ale cerintei. (in special [[programare:​teme_2020:​tema3_2020_cbd#​fisiere_de_intrareiesire|[1]]] si [[programare:​teme_2020:​tema3_2020_cbd#​bonus_-_35p|bonusul]])   * 04.01.2021 - Mici actualizari ale cerintei. (in special [[programare:​teme_2020:​tema3_2020_cbd#​fisiere_de_intrareiesire|[1]]] si [[programare:​teme_2020:​tema3_2020_cbd#​bonus_-_35p|bonusul]])
Line 267: Line 271:
 Dupa toate prelucrarile anterioare asupra setului de date primit de la Emperor Tiramisu, in final putem verifica daca jocul de sudoku este completat corect sau nu. Pentru a face acest lucru trebuie sa verificati daca se respecta cele 3 [[programare:​teme_2020:​tema3_2020_cbd#​reguli_sudoku|reguli]] ale jocului de sudoku. Acest lucru implica recunoasterea de cifre dintr-o imagine bmp. <spoiler Hint> {{ :​programare:​teme_2020:​face_mask.jpeg |}}</​spoiler>​ Dupa toate prelucrarile anterioare asupra setului de date primit de la Emperor Tiramisu, in final putem verifica daca jocul de sudoku este completat corect sau nu. Pentru a face acest lucru trebuie sa verificati daca se respecta cele 3 [[programare:​teme_2020:​tema3_2020_cbd#​reguli_sudoku|reguli]] ale jocului de sudoku. Acest lucru implica recunoasterea de cifre dintr-o imagine bmp. <spoiler Hint> {{ :​programare:​teme_2020:​face_mask.jpeg |}}</​spoiler>​
  
-Deoarece comunicatia cu Emperor Tiramisu se face printr-un server remote, veti afisa starea jocului in format json, intr-un fisier "output_task3.json"​. Jsonul va avea 2 campuri: campul "​input_file"​ - numele fisierului de intrare si in campul "​game_state"​ - "​Win!"​ daca Emperor Tiramisu a reusit sa completeze corect jocul sau "Loss :(" in caz contrar.+Deoarece comunicatia cu Emperor Tiramisu se face printr-un server remote, veti afisa starea jocului in format json, intr-un fisier "output_task3_board##​.json" ​(unde "##"​ reprezinta numarul boardului primit ca input). Jsonul va avea 2 campuri: campul "​input_file"​ - numele fisierului de intrare si in campul "​game_state"​ - "​Win!"​ daca Emperor Tiramisu a reusit sa completeze corect jocul sau "Loss :(" in caz contrar.
  
 <note tip>​Orice tabla de joc care contine casute necompletate sau alte simboluri in afara de cele adimse (cifre de la 1 la 9) se considera pierduta.</​note>​ <note tip>​Orice tabla de joc care contine casute necompletate sau alte simboluri in afara de cele adimse (cifre de la 1 la 9) se considera pierduta.</​note>​
Line 306: Line 310:
 Acum ca ati trecut prin toate aceste taskuri de la Emperor Tiramisu ar trebui sa reusiti (cu putin ajutor din partea noastra) sa rezolvati singuri un joc de sudoku, de la 0. \\ Acum ca ati trecut prin toate aceste taskuri de la Emperor Tiramisu ar trebui sa reusiti (cu putin ajutor din partea noastra) sa rezolvati singuri un joc de sudoku, de la 0. \\
  
-Asemenea taskului 4, veti primi ca input o imagine bmp cu o tabla de sudoku necompletat,​ iar voi va trebui sa rezolvati jocul folosind un algoritm propriu sau urmarind pseudocodul de mai jos (**//soon//**).\\+Asemenea taskului 4, veti primi ca input o imagine bmp cu o tabla de sudoku necompletat,​ iar voi va trebui sa rezolvati jocul folosind un algoritm propriu sau urmarind pseudocodul de mai jos.\\ 
 +<spoiler Pseudocod Backtracking>​ 
 +<​code>​ 
 +solve_sudoku ​(board, row, col) 
 + set nextRow and nextCol to the next position 
 + if board[row, col] is not open then // skip pinned numbers 
 + return [nextRow, nextCol] is out of bounds 
 + or solve_sudoku(nextRow,​ nextCol) is true 
 + end if 
 + 
 + for each number in {1..9} do 
 + if is_valid (board, row, col, number) is true then 
 + set board[row, col] to number 
 +  
 + if [nextRow, nextCol] is out of bounds 
 +     or solve_sudoku(nextRow,​ nextCol) is true then 
 + return true; // we have a solution 
 + end if 
 + 
 +            restore board[row, col] to "​open"​ // backtrack 
 + end if 
 + end for 
 +  
 + return false // no more numbers to try. all failed. 
 +end solve_sudoku 
 + 
 +is_valid (board, row, col, number) 
 + - function that returns 1 if the "​number"​ cand be placed in the board,  
 + on "​row"​ and "​col",​ and does not violate the 3 rules of sudoku. 
 +</​code>​ 
 +</​spoiler>​\\ 
  
 Cifrele lipsa vor fi completate din nou cu magenta. In cazul in care jocul nu poate fi completat, va trebui sa suprascrieti fiecare cifra din imagine cu un X, scris cu rosu (r: 255, g: 0, b:0). Cifrele lipsa vor fi completate din nou cu magenta. In cazul in care jocul nu poate fi completat, va trebui sa suprascrieti fiecare cifra din imagine cu un X, scris cu rosu (r: 255, g: 0, b:0).
Line 330: Line 365:
 </​spoiler>​ </​spoiler>​
  
-<​hidden>​ 
-Inclus pseudocod solver sudoku. 
-</​hidden>​ 
 ** Input ** ** Input **
 {{ :​programare:​teme_2020:​board1_unsolved.png |output_bonus.bmp}} {{ :​programare:​teme_2020:​board1_unsolved.png |output_bonus.bmp}}
Line 344: Line 376:
  
 ==== Resurse si checker-ul local ==== ==== Resurse si checker-ul local ====
-Resursele pentru tema se pot descarca de {{:​programare:​teme_2020:​checker_tema3_v2.zip|aici}}. Sunt prezente:+Resursele pentru tema se pot descarca de {{:​programare:​teme_2020:​checker_tema3_v3.zip|aici}}. Sunt prezente:
  
   * **bmp_header.h**:​ headerul care contine declaratiile struct-urilor pe care le veti folosi in citirea unui fisier BMP;   * **bmp_header.h**:​ headerul care contine declaratiile struct-urilor pe care le veti folosi in citirea unui fisier BMP;
programare/teme_2020/tema3_2020_cbd.1610097823.txt.gz · Last modified: 2021/01/08 11:23 by vlad.burcea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0