中文名字未知。
前几天去书店翻到,
觉得是本好书。
感觉适合我这样上不上下不下的人。
找到一本 ebook,
周末翻。
// 计算奶牛 | |
// 初始 1 头奶牛,奶牛在 1 岁和 4 岁的时候生小牛(假设全部为母牛),5 岁时死亡,求给定的年数奶牛的数量。 | |
// 以下是我演算的各个方法。 | |
// 01 | |
var YEARS = arguments.length > 0 && parseInt(arguments[0], 10) || 10; | |
var cows = {}, | |
cow; | |
var _cowIdx = 0, | |
_cowNum = 0; | |
function addcow() { | |
cows[_cowIdx] = { | |
'old' : 0, | |
'idx': _cowIdx | |
}; | |
_cowNum++; | |
_cowIdx++; | |
} | |
function rmcow(idx) { | |
delete cows[idx]; | |
_cowNum--; | |
} | |
function proc_cow (cow) { | |
cow.old++; | |
switch (cow.old) { | |
case 1: | |
case 4: | |
addcow(); | |
break; | |
case 5: | |
rmcow(cow.idx); | |
break; | |
} | |
} | |
addcow(); | |
for (var i=0; i<YEARS; i++) { | |
for (cow in cows) { | |
proc_cow(cows[cow]); | |
} | |
} | |
print(_cowNum); | |
// 02 | |
var YEARS = arguments.length > 0 && parseInt(arguments[0], 10) || 10; | |
var cows = {}, | |
cow; | |
var _cowIdx = 0, | |
_cowNum = 0; | |
function addcow() { | |
cows[_cowIdx] = 0; | |
_cowNum++; | |
_cowIdx++; | |
} | |
function rmcow(idx) { | |
delete cows[idx]; | |
_cowNum--; | |
} | |
function proc_cow (cow) { | |
switch (++cows[cow]) { | |
case 1: | |
case 4: | |
addcow(); | |
break; | |
case 5: | |
rmcow(cow); | |
break; | |
} | |
} | |
addcow(); | |
for (var i=0; i<YEARS; i++) { | |
for (cow in cows) { | |
proc_cow(cow); | |
} | |
} | |
print(_cowNum); | |
// 03 | |
var YEARS = arguments.length > 0 && parseInt(arguments[0], 10) || 10; | |
var cows = {}, | |
cow; | |
var _cowIdx = 0, | |
_cowNum = 0; | |
cows[++_cowIdx] = 0; | |
_cowNum++; | |
for (var i=0; i<YEARS; i++) { | |
for (cow in cows) { | |
switch (++cows[cow]) { | |
case 1: | |
case 4: | |
cows[++_cowIdx] = 0; | |
_cowNum++; | |
break; | |
case 5: | |
delete cows[cow]; | |
_cowNum--; | |
break; | |
} | |
} | |
} | |
print(_cowNum); | |
// 04 | |
var YEARS = arguments.length > 0 && parseInt(arguments[0], 10) || 10; | |
var cows = [0, 0, 0, 0, 0], // 0 - 4 岁奶牛数量 | |
cow1; | |
cows[0] = 1; | |
for (var i=0; i<YEARS; i++) { | |
cow1 = cows[1]; | |
cows[1] = cows[0]; | |
cows[4] = cows[3]; | |
cows[0] += cows[4]; | |
cows[3] = cows[2]; | |
cows[2] = cow1; | |
} | |
print(cows[4] + cows[3] + cows[2] + cows[1] + cows[0]); | |
// 前 3 个是一种思路,最后一个比较吓到我。。。。 :) |