Updated with first two Fall 2010 assignments.
authorW. Trevor King <wking@drexel.edu>
Wed, 6 Oct 2010 20:58:35 +0000 (16:58 -0400)
committerW. Trevor King <wking@drexel.edu>
Wed, 6 Oct 2010 20:58:35 +0000 (16:58 -0400)
assignments/archive/submit_command/index.shtml
assignments/archive/sudoku/1.cfg [new file with mode: 0644]
assignments/archive/sudoku/2.cfg [new file with mode: 0644]
assignments/archive/sudoku/3.cfg [new file with mode: 0644]
assignments/archive/sudoku/index.shtml [new file with mode: 0644]
assignments/current/1
assignments/current/2

index 8fa597c566f4d856b542389b94ff1a2525052524..8aec137f4e21a7465a445bb03cd96ccd9d09c1a0 100644 (file)
@@ -1,7 +1,7 @@
 <!--#set var="root_directory" value="../../.." --><!--#include virtual="$root_directory/shared/header.shtml"-->
 
-<h1>Assignment #1</h1>
-<p><em>Due Friday, October 2, 2009</em></p>
+<h1>Assignment #2</h1>
+<p><em>Due Friday, October 8, 2010</em></p>
 
 <h2>Purpose</h2>
 
@@ -14,7 +14,7 @@ command on all the nodes of a virtual machine. The command to execute
 will be extracted from the command line arguments.  For instance,</p>
 
 <pre>
-mpicc -np 4 ./submit rm /tmp/a
+mpiexec -np 4 ./submit rm /tmp/a
 </pre>
 
 <p>will remove the file <code>a</code> from the local
diff --git a/assignments/archive/sudoku/1.cfg b/assignments/archive/sudoku/1.cfg
new file mode 100644 (file)
index 0000000..2fd0850
--- /dev/null
@@ -0,0 +1,20 @@
+
+ - - -  - 2 8  - 5 -
+
+ - 7 4  6 1 -  2 8 -
+
+ - - 2  - 7 -  9 - 1
+
+
+ - 8 -  - - -  3 9 5
+
+ - - 5  7 - 6  1 - -
+
+ 3 4 1  - - -  - 2 -
+
+
+ 4 - 9  - 8 -  5 - -
+
+ - 2 8  - 5 3  6 7 -
+
+ - 5 -  4 6 -  - - -
diff --git a/assignments/archive/sudoku/2.cfg b/assignments/archive/sudoku/2.cfg
new file mode 100644 (file)
index 0000000..714a72a
--- /dev/null
@@ -0,0 +1,20 @@
+
+ - 6 -  - 3 -  - - -
+
+ - 3 1  9 - 8  - 5 -
+
+ 2 7 -  - - -  6 3 -
+
+
+ - - -  - 9 1  - - 3
+
+ - 1 -  - 2 -  - 9 -
+
+ 9 - -  6 8 -  - - -
+
+
+ - 9 6  - - -  - 4 7
+
+ - 4 -  2 - 9  5 6 -
+
+ - - -  - 1 -  - 8 -
diff --git a/assignments/archive/sudoku/3.cfg b/assignments/archive/sudoku/3.cfg
new file mode 100644 (file)
index 0000000..2e21724
--- /dev/null
@@ -0,0 +1,20 @@
+
+ - 2 -  - - -  6 - 9
+
+ 3 - -  9 - 4  - 5 -
+
+ - - -  8 1 -  - - -
+
+
+ 6 - -  5 - -  - 1 -
+
+ 8 1 -  3 - 9  - 6 5
+
+ - 4 -  - - 1  - - 3
+
+
+ - - -  - 7 6  - - -
+
+ - 6 -  4 - 5  - - 8
+
+ 9 - 1  - - -  - 7 -
diff --git a/assignments/archive/sudoku/index.shtml b/assignments/archive/sudoku/index.shtml
new file mode 100644 (file)
index 0000000..45b35f1
--- /dev/null
@@ -0,0 +1,134 @@
+<!--#set var="root_directory" value="../../.." --><!--#include virtual="$root_directory/shared/header.shtml"-->
+
+<h1>Assignment #1</h1>
+<p><em>Due Friday, October 8, 2010</em></p>
+
+<h2>Purpose</h2>
+
+<p>Remind ourselves of the C or C ++ syntax, in particular: arrays,
+loop, conditional, functions, ...</p>
+
+<p>Note: Please identify all your work.</p>
+
+<p>Write a C or C ++ code to
+solve <a href="http://en.wikipedia.org/wiki/Sudoku">sudoku
+puzzles</a>.</p>
+
+<p>Sudoku is a one player board puzzle in which the player fills in
+the empty cells on a 9x9 board with digits 1 to 9. The rules are
+simple:</p>
+
+<ul>
+  <li>The digits 1 to 9 must be on every row with no repetition.</li>
+  <li>The digits 1 to 9 must be on every column with no repetition.</li>
+  <li>The digits 1 to 9 must be on every tile with no repetition.</li>
+</ul>
+
+<p>The <em>tiles</em> in the rules refer to 3x3 sub-regions that cover
+the 9x9 board with no overlap.  A game is seeded by having some digits
+1 to 9 placed on the board (satisfying the rules above).  The player
+needs to complete the filling the board with digits 1 to 9 while
+respecting the rules above.</p>
+
+<h2>Algorithm — key steps</h2>
+
+<ol>
+  <li>Set the geometry of the board, i.e., the tiles.</li>
+  <li>Read in the starting configuration on the board.</li>
+  <li>Initialize in a trial array all the candidate digits for every
+    unfilled cell, i.e., digits 1 to 9.</li>
+  <li>For an unfilled cell on the board and for one of the digits in
+    the trial array corresponding to this cell, scan the row, column
+    and block for digit repetition.</li>
+  <li>If a repetition is found, eliminate this trial digit.</li>
+  <li>Repeat the two steps above for every unfilled cell on the board
+    and for every digit left in the trial array corresponding to these
+    unfilled cell 1.<li>
+  <li>If at any time the trial array contains only one (1) trial digit
+    for an unfilled cell on the board, this digit is part of the solution
+    of the sudoku puzzle and marked as such.</li>
+  <li>Accumulate the number of events in the steps above. An event
+    could be removing a digit from the trial array or selecting a
+    digit as part of the solution.</li>
+  <li>Repeat the scans above until the number of events is zero (0),
+    i.e., a steady state is reached, at which time the solution of the
+    sudoku puzzle is either obtained or the puzzle is too hard to
+    solve by this simple algorithm.</li>
+</ul>
+
+<h2>I/O</h2>
+
+<p>A simple file interface should prove sufficient to check your
+code. Namely, the initial configuration of digits on the board could
+be typed in a file with an obvious format</p>
+
+<pre>
+- - 1   3 - -   - 6 -
+- 5 -   - - 1   - - 3
+...
+</pre>
+
+<p>The output of any configuration could follow the same format.</p>
+
+<p>A run would then be</p>
+
+<pre>
+cat initialboard | ./sudoku
+</pre>
+
+<h2>Suggested functions</h2>
+
+<p>Please write a modular code.  Functions could be</p>
+
+<dl>
+  <dt><code>geometry()</code></dt>
+  <dd>set the geometry of the board (rows, column, tiles)</dd>
+  <dt><code>read_config()</code></dt>
+  <dd>read in a board configuration</dd>
+  <dt><code>print_config()</code></dt>
+  <dd>print a board configuration</dd>
+  <dt><code>is_forbiden()</code></dt>
+  <dd>check if a trial digit is forbidden in a cell</dd>
+  <dt><code>check_cell()</code></dt>
+  <dd>finds and removes forbidden digits in a cell</dd>
+  <dt><code>check_all_cells()</code></dt>
+  <dd>scans over all cells to remove forbidden trial digits</dd>
+</dl>
+
+<h2>Sample puzzles</h2>
+
+<pre>
+5 3 -   - 7 -   - - -
+6 - -   1 9 5   - - -
+- 9 8   - - -   - 6 -
+
+8 - -   - 6 -   - - 3
+4 - -   8 - 3   - - 1
+7 - -   - 2 -   - - 6
+
+- 6 -   - - -   2 8 -
+- - -   4 1 9   - - 5
+- - -   - 8 -   - 7 9
+</pre>
+
+<pre>
+5 3 4   6 7 8   9 1 2
+6 7 2   1 9 5   3 4 8
+1 9 8   3 4 2   5 6 7
+
+8 5 9   7 6 1   4 2 3
+4 2 6   8 5 3   7 9 1
+7 1 3   9 2 4   8 5 6
+
+9 6 1   5 3 7   2 8 4
+2 8 7   4 1 9   6 3 5
+3 4 5   2 8 6   1 7 9
+</pre>
+
+<ul>
+  <li><a href="1.cfg">1.cfg</a></li>
+  <li><a href="2.cfg">2.cfg</a></li>
+  <li><a href="3.cfg">3.cfg</a></li>
+</ul>
+
+<!--#include virtual="$root_directory/shared/footer.shtml"-->
index fe9059c74d71e909f29e068c3e229368164100d8..4e538d14beb14ba4de14341101632aeaa51d8bd2 120000 (symlink)
@@ -1 +1 @@
-../archive/submit_command/
\ No newline at end of file
+../archive/sudoku/
\ No newline at end of file
index 7b0666717bfcd971c51688526eb11d32e1a9e5e9..13520d3ded6040c6d703bc6b9af579971ffd6c60 120000 (symlink)
@@ -1 +1 @@
-../archive/average_and_standard_deviation/
\ No newline at end of file
+../archive/submit_command
\ No newline at end of file