mirror of https://github.com/coolaj86/fizzbuzz.git
docs: add hotplate problem
This commit is contained in:
parent
0f1de0d892
commit
cd2ff26faa
|
@ -0,0 +1,49 @@
|
||||||
|
HotPlate
|
||||||
|
===
|
||||||
|
|
||||||
|
(originally from <https://gist.github.com/coolaj86/6033171>)
|
||||||
|
|
||||||
|
You have a 16x16 grid of which the 4 centermost cells are always 100 degrees and the cornermost cells are always 0 degrees. All other cells start at 50 degrees.
|
||||||
|
|
||||||
|
For example, a 6x6 grid would look like this:
|
||||||
|
|
||||||
|
| 0 | 50 | 50 | 50 | 50 | 0 |
|
||||||
|
| 50 | 50 | 50 | 50 | 50 | 50 |
|
||||||
|
| 50 | 50 | 100 | 100 | 50 | 50 |
|
||||||
|
| 50 | 50 | 100 | 100 | 50 | 50 |
|
||||||
|
| 50 | 50 | 50 | 50 | 50 | 50 |
|
||||||
|
| 0 | 50 | 50 | 50 | 50 | 0 |
|
||||||
|
|
||||||
|
Each turn the temperature of each cell (aside from the 4 hot and 4 cold) changes to be the average of the 4 adjacent cells left, right, up, and down.
|
||||||
|
|
||||||
|
The goal is to determine how many turns it takes until not a single cell has changes more than 0.001 degrees and then print out the grid.
|
||||||
|
|
||||||
|
For example, the result of running on a 6x6 grid would be this:
|
||||||
|
|
||||||
|
Grid: 6x6
|
||||||
|
Turns: 57
|
||||||
|
Diff: 0.001
|
||||||
|
0.00 33.33 49.99 49.99 33.33 0.00
|
||||||
|
33.33 50.00 66.66 66.66 50.00 33.33
|
||||||
|
49.99 66.66 100.00 100.00 66.66 49.99
|
||||||
|
49.99 66.66 100.00 100.00 66.66 49.99
|
||||||
|
33.33 50.00 66.66 66.66 50.00 33.33
|
||||||
|
0.00 33.33 49.99 49.99 33.33 0.00
|
||||||
|
Actual Diff: 0.0009489096904715666
|
||||||
|
|
||||||
|
Or with a splash of color:
|
||||||
|
|
||||||
|
!["Fancy Grid"](http://i.imgur.com/udnNfE6.png "Fancy 6x6")
|
||||||
|
|
||||||
|
**Bonus**:
|
||||||
|
Print out a colorful web page grid using jQuery.
|
||||||
|
You'll need
|
||||||
|
[a function to convert from wavelength to rgb](https://github.com/scottbyrns/Wavelength-To-RGB/blob/master/wavelength.js).
|
||||||
|
Instead of a tight loop, only do one turn per millisecond and update the grid each turn so that you can watch it update (or 10 milliseconds, whatever number seems visually appealing).
|
||||||
|
|
||||||
|
Hint
|
||||||
|
---
|
||||||
|
|
||||||
|
Many find it conceptually simpler to use 2-dimensional arrays for this problem, however, it's easier to solve programmatically with a 1-dimensional array. Either approach will work. The former is easier to understand, the second is easier to code.
|
||||||
|
|
||||||
|
(more hints to come)
|
Loading…
Reference in New Issue