JSFiddle - React, Tailwind, and code Playground
by stvnmntjy
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/prettify/r224/prettify.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
<h2>Even Fibonacci numbers</h2>
<h3>Problem 2</h3>
<p>Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:</p>
<pre>
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
</pre>
<p>By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.</p>
<pre class="prettyprint">
solve = ->
addTwo = (a, b) -> a + b
gen = (arr) ->
if not arr or arr.length is 0
then gen [0, 1]
else if _.last(arr) > 4000000
then _.initial arr
else gen arr.concat [addTwo _.last(arr), _.last _.initial arr]
_.reduce (_.filter gen(), (a) -> a % 2 is 0),
((m, a) -> m + a),
0
</pre>
<button id="solve" type="button">Solve!</button>
<pre id="solution" class="prettyprint">
>
</pre>
CSS
/* Pretty printing styles. Used with prettify.js. */
/* Vim sunburst theme by David Leibovic */
pre .str, code .str { color: #65B042; } /* string - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
pre.prettyprint, code.prettyprint {
background-color: #000;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
-o-border-radius: 8px;
-ms-border-radius: 8px;
-khtml-border-radius: 8px;
border-radius: 8px;
}
pre.prettyprint {
width: 95%;
margin: 1em auto;
padding: 1em;
white-space: pre-wrap;
}
/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }
@media print {
pre .str, code .str { color: #060; }
pre .kwd, code .kwd { color: #006; font-weight: bold; }
pre .com, code .com { color: #600; font-style: italic; }
pre .typ, code .typ { color: #404; font-weight: bold; }
pre .lit, code .lit { color: #044; }
pre .pun, code .pun { color: #440; }
pre .pln, code .pln { color: #000; }
pre .tag, code .tag { color: #006; font-weight: bold; }
pre .atn, code .atn { color: #404; }
pre .atv, code .atv { color: #060; }
}
CoffeeScript
solve = ->
addTwo = (a, b) -> a + b
gen = (arr) ->
if not arr or arr.length is 0
then gen [0, 1]
else if _.last(arr) > 4000000
then _.initial arr
else gen arr.concat [addTwo _.last(arr), _.last _.initial arr]
_.reduce (_.filter gen(), (a) -> a % 2 is 0),
((m, a) -> m + a),
0
$ ->
prettyPrint()
$('#solve').click ->
str = '> ' + solve()
prettied = prettyPrintOne str
$('#solution').html prettied
return
return