CSCI 1200 - Fall 2007
Computer Science II
  Contact Information


  Course Overview

  Web Resources
  Additional Tutoring


  Lecture notes
  Lab materials
  Test reviews

  Lab Times
  Office Hours

Academic Integrity

  Due Date and Time
  Late Day Policy
  Electronic Submission

Programming Tips

C++ Development
  Dev C++

Other Information
  Command Line Args
  File I/O
  Redirecting I/O

HW6 Sliding Block Recursion Contest


  • cutler: recursion, history unsorted list, heuristic based on min possible moves to solve
  • dawkim: recursive, 2 solvers (1 square, 1 non-rect), map for history, early exits
  • devars2: no undo, pass by reference or const refence
  • hutcha2: got rid of all bugs, uses lists for efficient erase
  • kasia: greedy, with heuristic based on similarity to solution
  • kramet: no info on optimizations
  • peacha: no info on optimizations
  • pedrok: breadth first search, scratch grid, uses a map for fast searching
  • radoca: depth first with increasing max depths, hashing for history
  • rakese: looks for all possible board positions
  • saulnk: no info on optimizations
  • sberard: bi-directional a* search, (preallocated) hash table of visited states
  • scourj: fast possible possible moves checker
  • vandes4: breadth first search, tree of pointers to moves
  • wellir: iterative, minimizes memory, hashes board
  • woodg: looks for pieces next to blanks to move

Source code for cutler's & sberard's solutions are posted on the calendar.


 Puzzle 1Puzzle 2Puzzle 3Puzzle 4Puzzle 5Puzzle 6Puzzle 7Puzzle 8Puzzle 9Puzzle 10Puzzle 11Puzzle 12Puzzle 13Puzzle 14Puzzle 15Puzzle 16Puzzle 17
cutler00003770000> 1hrseg fault0> 1hrseg fault> 1hr> 1hr
dawkim00.0100000000.070.817120memorymemory> 1hr> 1hr
devars20.010.2200.031.960.180009.59> 1hr> 1hr0> 1hr> 1hr> 1hr> 1hr
hutcha200.0100.1> 1hr1.> 1hr> 1hr
kasia0.010000.050 (48)0 (6)00 (9)00.03 (226)seg fault034 (6364)seg fault> 1hr> 1hr
kramet000> 1hr> 1hr> 1hr> 1hr18> 1hrmemorymemorymemory10memorymemoryincorrect> 1hr
peacha0incorrect00> 1hrincorrectincorrectincorrect> 1hrincorrectincorrect> 1hr> 1hr> 1hr> 1hr> 1hr> 1hr
radoca0.0200000000.0202.483.380memorymemory> 1hr> 1hr
rakese00000.010.010000> 1hr> 1hr0memorymemory> 1hr> 1hr
saulnk0000.02 (16)0.340.32 (118)0 (6)00 (15)memorymemorymemory7 (10)memorymemorymemorymemory
sberard0. (32)21070.2979> 1hr1.0711.4
scourj000 (8)0 (152)0.020 (74)0 (6)00 (19)seg fault31 (6124)seg faultincorrectseg faultseg faultseg faultseg fault
vandes40000000000> 1hr> 1hr0> 1hr> 1hr> 1hr> 1hr
woodg00.1300seg fault0.09incorrectincorrectincorrectseg faultseg faultseg faultseg faultseg faultseg faultincorrectincorrect

All times above are in seconds.
The orange highlighted squares are tied for the fastest times for each puzzle (within a tenth of a second).
A number in parentheses after the time indicates the length of the non-optimal path that was output.


 incorrecttoo longseg faultmemory> 1hrfinishedfastestsloccount
cutler  2 4119307
dawkim   221312630
devars2    6118323
hutcha2   5396449
kasia 52 288342
kramet1  5653437
peacha6   834257
pedrok   6 1110444
radoca   221312307
rakese   241111437
saulnk 5 7 54355
sberard 1  1154530
scourj166  44372
vandes4    61112334
wellir   7 109774
woodg5 7  54212

"incorrect" means that the output was incorrect (e.g., illegal moves).
"too long" means that the path output was non optimal.
"seg fault" means the program terminated with an error.
"memory" means ran out of memory.
"> 1hr" means the solver was still running after an hour.
"finished" is the number of correctly solved puzzles.
"fastest" is the number of puzzles for which the submission was one of the fastest.
"sloccount" is the a count of the (non comment) lines of source code.


  • Matthew Dawkins
  • Alex Radocea


  • hutcha: fastest consumption of entire RAM
  • kasia: longest (incorrect) solution
  • wellir: most lines of code