<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sudoku Archivi -</title>
	<atom:link href="https://simonetocco.it/tag/sudoku/feed/" rel="self" type="application/rss+xml" />
	<link>https://simonetocco.it/tag/sudoku/</link>
	<description></description>
	<lastBuildDate>Wed, 13 Jan 2021 08:24:52 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://simonetocco.it/wp-content/uploads/2020/12/logoSimone-1-150x150.png</url>
	<title>sudoku Archivi -</title>
	<link>https://simonetocco.it/tag/sudoku/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sudoku Solver in C++: risolutore sudoku con backtracking</title>
		<link>https://simonetocco.it/sudoku-solver-in-c-risolutore-sudoku-con-backtracking/</link>
					<comments>https://simonetocco.it/sudoku-solver-in-c-risolutore-sudoku-con-backtracking/#respond</comments>
		
		<dc:creator><![CDATA[Simone Tocco]]></dc:creator>
		<pubDate>Wed, 13 Jan 2021 08:24:41 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[sudoku]]></category>
		<guid isPermaLink="false">https://simonetocco.it/?p=2569</guid>

					<description><![CDATA[<p>Uno degli esercizi più utilizzati in ambito di programmazione e di algoritmi e strutture dati, è certamente il Sudoku Solver in C++ utilizzando la tecnica algoritmica di backtracking. Supponiamo quindi di dover dare in input una griglia Sudoku 9&#215;9 che al suo interno è divisa in ulteriori griglie 3&#215;3. Le semplici regole del gioco prevedono [&#8230;]</p>
<p>L'articolo <a href="https://simonetocco.it/sudoku-solver-in-c-risolutore-sudoku-con-backtracking/">Sudoku Solver in C++: risolutore sudoku con backtracking</a> sembra essere il primo su <a href="https://simonetocco.it"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Uno degli esercizi più utilizzati in ambito di programmazione e di algoritmi e strutture dati, è certamente il Sudoku Solver in C++ utilizzando la tecnica algoritmica di backtracking.</p>



<p>Supponiamo quindi di dover dare in input una griglia Sudoku 9&#215;9 che al suo interno è divisa in ulteriori griglie 3&#215;3.</p>



<p>Le semplici regole del gioco prevedono che dobbiamo usare all&#8217;interno di una stessa riga numeri compresi tra 1 e 9 senza ripetizioni e sappiamo anche che all&#8217;interno di una matrice 3&#215;3 non ci debbano anche qui essere ripetizioni.</p>



<pre class="wp-block-code"><code>#include &lt;iostream>
#define N 9
using namespace std;
int matrice&#91;N]&#91;N] = {
   {3, 0, 6, 5, 0, 8, 4, 0, 0},
   {5, 2, 0, 0, 0, 0, 0, 0, 0},
   {0, 8, 7, 0, 0, 0, 0, 3, 1},
   {0, 0, 3, 0, 1, 0, 0, 8, 0},
   {9, 0, 0, 8, 6, 3, 0, 0, 5},
   {0, 5, 0, 0, 9, 0, 6, 0, 0},
   {1, 3, 0, 0, 0, 0, 2, 5, 0},
   {0, 0, 0, 0, 0, 0, 0, 7, 4},
   {0, 0, 5, 2, 0, 6, 3, 0, 0}
};
bool isPresentEiNcolonnaonna(int colonna, int num){ //controlla se un numero è già presente nella colonna
   for (int riga = 0; riga &lt; N; riga++)
      if (matrice&#91;riga]&#91;colonna] == num)
         return true;
   return false;
}
bool isPresentEiNriga(int riga, int num){ //controlla se un numero è già presente nella riga
   for (int colonna = 0; colonna &lt; N; colonna++)
      if (matrice&#91;riga]&#91;colonna] == num)
         return true;
   return false;
}
bool isPresentEiNquadratro(int boxStartRiga, int boxStartColonna, int num){
////controlla se un numero è già presente nel box 3x3
   for (int riga = 0; riga &lt; 3; riga++)
      for (int colonna = 0; colonna &lt; 3; colonna++)
         if (matrice&#91;riga+boxStartRiga]&#91;colonna+boxStartColonna] == num)
            return true;
   return false;
}
void sudokuMatrice(){ //stampa a video la matrice risolta
   for (int riga = 0; riga &lt; N; riga++){
      for (int colonna = 0; colonna &lt; N; colonna++){
         if(colonna == 3 || colonna == 6)
            cout &lt;&lt; " | ";
         cout &lt;&lt; matrice&#91;riga]&#91;colonna] &lt;&lt;" ";
      }
      if(riga == 2 || riga == 5){
         cout &lt;&lt; endl;
         for(int i = 0; i&lt;N; i++)
            cout &lt;&lt; "---";
      }
      cout &lt;&lt; endl;
   }
}
bool trovAspazIovuoto(int &amp;riga, int &amp;colonna){ //trova spazio vuoto
   for (riga = 0; riga &lt; N; riga++)
      for (colonna = 0; colonna &lt; N; colonna++)
         if (matrice&#91;riga]&#91;colonna] == 0) //marked with 0 is empty
            return true;
   return false;
}
bool veRificApostoValido(int riga, int colonna, int num){
   //when item not found in colonna, riga and current 3x3 box
   return !isPresentEiNriga(riga, num) &amp;&amp; !isPresentEiNcolonnaonna(colonna, num) &amp;&amp; !isPresentEiNquadratro(riga - riga%3 ,
colonna - colonna%3, num);
}
bool solveSudoku(){
   int riga, colonna;
   if (!trovAspazIovuoto(riga, colonna))
      return true; //when all places are filled
   for (int num = 1; num &lt;= 9; num++){ //valid numbers are 1 - 9
      if (veRificApostoValido(riga, colonna, num)){ //check validation, if yes, put the number in the matrice
         matrice&#91;riga]&#91;colonna] = num;
         if (solveSudoku()) //recursively go for other rooms in the matrice
            return true;
         matrice&#91;riga]&#91;colonna] = 0; //turn to unassigned space when conditions are not satisfied
      }
   }
   return false;
}
int main(){
   if (solveSudoku() == true)
      sudokuMatrice();
   else
      cout &lt;&lt; "Non esistono soluzioni";
}</code></pre>
<!--------------------------------------><!-- Conversion Box Made Using : -------><!-- WP Conversion Boxes - -------------><!-- http://wpconversionboxes.com --><!--------------------------------------><div class="wpcb_nothing_offset"></div>

<style>
    
    .wpcb_template_main_1{
        
        background-color: #0faf97;
        width: 100%;
        height: ;
        border-width: ;
        border-color: ;
        margin-top: ;
        margin-bottom: ;
        margin-left: ;
        margin-right: ;
        padding: 20px;
        -webkit-box-shadow: inset 0px 0px 200px -38px rgba(0,0,0,0.5);
        -moz-box-shadow: inset 0px 0px 200px -38px rgba(0,0,0,0.5);
        box-shadow: inset 0px 0px 200px -38px rgba(0,0,0,0.5);     
        
    }
    
    .wpcb_template_main_1 .wpcb_box_heading{
        background-color: ;
        padding-top: 0px;
    }
    
    .wpcb_template_main_1 .wpcb_box_heading_text{
        font-family:    'Arial', serif;
        font-size:      32px;
        line-height:    38px;
        color:          #ffffff;
        text-align:     center;
        text-shadow: 0px 3px 4px rgba(0, 0, 0, 0.25);
        font-weight: 900;
        margin: 0;
    }
    
    .wpcb_template_main_1 .wpcb_box_content_container{
        
    }    
    
    .wpcb_template_main_1 .wpcb_box_content{
        font-family:    Arial;
        font-size:      20px;
        line-height:    24px;
        color:          #ffffff;
        text-align:     center;
        padding: 20px 0px;
    }
    
    .wpcb_template_main_1 .wpcb_box_button_div{
        text-align: center;
    }
    
    .wpcb_template_main_1 .wpcb_box_button_div a.wpcb_box_button, .wpcb_template_main_1 .wpcb_box_button_div button.wpcb_box_button{
        font-family:    Arial;
        font-size:      16px;
        color:          #fff;
        background-color: #4f78f2;
        border-radius: 30px;
        width: ;
        padding: 10px 15px;
    }
    
    .wpcb_button_gradient{background-image : -moz-linear-gradient(top, #4f78f2, #1851f9);background-image : -ms-linear-gradient(top, #4f78f2, #1851f9);background-image : -webkit-gradient(linear, #4f78f2, #1851f9);background-image : -webkit-linear-gradient(top, #4f78f2, #1851f9);background-image : -o-linear-gradient(top, #4f78f2, #1851f9);background-image : linear-gradient(top, #4f78f2, #1851f9);filter : progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#4f78f2&quot;, endColorstr=&quot;#1851f9&quot;, GradientType=0);border-color : +#4f78f2 #1851f9 #1851f9;background-color : #4f78f2;}    
        
</style>


<div class="wpcb_template_main wpcb_template_main_1 wpcb_nothing wpcb_nothing" data-fadetime="0">
    <div class="wpcb_box_all_content_container">
        <div class="wpcb_box_content_container">    
            <div class="wpcb_box_heading">
                <div class="wpcb_box_heading_text">Hai bisogno di una consulenza o assistenza?</div>
            </div>            
            <div class="wpcb_box_content">
                Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" />            </div>    
            <div class="wpcb_box_button_div">
                <a href="http://simonetocco.it/assistenza-e-consulenza/" target="" id="wpcb_box_button_1" class="wpcb_box_button wpcb_button_gradient">Apri Richiesta</a>
            </div>
        </div>    
    </div>
</div><!------------------------------><!-- Conversion Box Ends Here --><!------------------------------><div class="wpcb-tracker" data-id="3640167" data-boxid="1" data-visitedpage="https://simonetocco.it:443/tag/sudoku/feed/" data-visittype="visit"></div><p>L'articolo <a href="https://simonetocco.it/sudoku-solver-in-c-risolutore-sudoku-con-backtracking/">Sudoku Solver in C++: risolutore sudoku con backtracking</a> sembra essere il primo su <a href="https://simonetocco.it"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://simonetocco.it/sudoku-solver-in-c-risolutore-sudoku-con-backtracking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
