Started coding 3: Backtracking
This commit is contained in:
113
Backtracking/README.md
Normal file
113
Backtracking/README.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Coding 3: Backtracking
|
||||
|
||||
## Rocket Sections
|
||||
|
||||
In order to identify budding rocket science talent, SpaceX has designed a new
|
||||
modular build-your-own rocket kit for amateur rocketeers to use to construct
|
||||
model rockets. After careful user-studies, SpaceX has found that its customers
|
||||
want to be able to build rockets of widely varying height. Thus, they've arrived
|
||||
at the following idea. Instead of selling rocket fuselage tubing at every height
|
||||
desired by their customers, they'll offer an array of rocket "sections" at
|
||||
varying heights that can be fit together to form a full sized rocket. For
|
||||
example, for the Lil Falcons parts (their entry level kit for preschoolers, that
|
||||
comes complete with a mix your own rocket fuel kit and size 3T smocks) they
|
||||
offer rocket sections in the following sizes: 1 inch, 2 inch 5 inch, and 7 inch
|
||||
sections.
|
||||
|
||||
In order to build a rocket of height 15, a kinderscientist could use two 5"
|
||||
sections, two 2" sections, and one 1" section for a total of five sections. Or
|
||||
three 5" sections for a total of three sections. Obviously, construction is made
|
||||
more complicated by the number of sections that need to be arc welded together
|
||||
(there's a companion Kids-Do-Welding TM starter kit made by Hasbro for the
|
||||
preschooler who hasn't gotten started welding yet). The goal of any good rocket
|
||||
designer is to minimize the number of sections used in the construction of their
|
||||
rocket.
|
||||
|
||||
## Input
|
||||
|
||||
The input to the program will be a line containing a space separated, sorted
|
||||
list of the n lengths of available rocket sections for a given kit. The second
|
||||
line will be a single integer representing the length of rocket the user wants
|
||||
to construct. The first line will always include a part of length 1, meaning
|
||||
that all requested lengths can be constructed.
|
||||
|
||||
## Output
|
||||
|
||||
For partial credit you can simply output a single line reporting the minimum
|
||||
total number of rocket sections needed to construct the rocket in the format "N
|
||||
rocket sections minimum\n".
|
||||
|
||||
For full credit the output should have n+1 lines. The first n lines should
|
||||
detail how many of each rocket length the designer needs to buy. Each should be
|
||||
of the form "X of length Y" detailing how many (X) rocket sections of length
|
||||
value Y should be bought. The final line should report the total number of
|
||||
rocket sections in the format "N rocket sections minimum".
|
||||
|
||||
### Sample Partial Credit Input/Output
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Sample Input</td>
|
||||
<td>Sample Output</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 2 5 7<br>15</pre></td>
|
||||
<td><pre>3 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 2 3 5 7 14<br>15</pre></td>
|
||||
<td><pre>2 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9<br>17</pre></td>
|
||||
<td><pre>9 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9 10<br>18</pre></td>
|
||||
<td><pre>2 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9 10 90 100<br>198</pre></td>
|
||||
<td><pre>4 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Sample Full Credit Input/Output
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Sample Input</td>
|
||||
<td>Sample Output</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 2 5 7<br>15</pre></td>
|
||||
<td><pre>1 of length 1<br>0 of length 2<br>0 of length 5<br>2 of length 7<br>3 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 2 3 5 7 14<br>15</pre></td>
|
||||
<td><pre>1 of length 1<br>0 of length 2<br>0 of length 3<br>0 of length 5<br>0 of length 7<br>1 of length 14<br>2 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9<br>17</pre></td>
|
||||
<td><pre>8 of length 1<br>1 of length 9<br>9 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9 10<br>18</pre></td>
|
||||
<td><pre>0 of length 1<br>2 of length 9<br>0 of length 10<br>2 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>1 9 10 90 100<br>198</pre></td>
|
||||
<td><pre>0 of length 1<br>2 of length 9<br>0 of length 10<br>2 of length 90<br>0 of length 100<br>4 rocket sections minimum</pre></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Your Task
|
||||
|
||||
Develop a recursive backtracking solution to the problem. Turn your solution in
|
||||
as `cs412_hw3_a.py` to Gradescope.
|
||||
|
||||
### Rubric:
|
||||
|
||||
- (10 points) Does the code solve the samples in the write-up?
|
||||
- (7 point) Does the code solve the private testing samples?
|
||||
- (3 points) For solving the full credit option.
|
||||
Reference in New Issue
Block a user