-
Notifications
You must be signed in to change notification settings - Fork 281
State Machine
huluoyang edited this page Jul 29, 2016
·
2 revisions
现代计算机科学的发展起源来自英国数学家--阿兰图灵,
他也是二战期间破解德国电报密文的幕后英雄。
图灵在去世很长时间后依然不为世人所知,一直被英国官方雪藏。
图灵对人类的贡献远不止他领导了一个天才团队建造了一个巨大机器来破解Enigma密码,
进而直接导致二战战争提前结束,挽救了数百位人的生命。
更在于他提出了状态机和人工智能。
状态机(State Machine)
机器和人类一样,每天都有不同的情绪,
不同的情绪拥有不同的状态,不同的状态会对应不同的反应。
举个例子:https://freecodecamp.cn/challenges/record-collection
这个题目考察的就是如何来更新一个对象的属性。
// Setup
var collection = {
2548: {
album: "Slippery When Wet",
artist: "Bon Jovi",
tracks: [
"Let It Rock",
"You Give Love a Bad Name"
]
},
2468: {
album: "1999",
artist: "Prince",
tracks: [
"1999",
"Little Red Corvette"
]
},
1245: {
artist: "Robert Palmer",
tracks: [ ]
},
5439: {
album: "ABBA Gold"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function update(id, prop, value) {
if(value){
if(prop !== "tracks"){
collection[id][prop] = value;
}else{
collection[id][prop].push(value);
}
}else{
delete collection[id][prop];
}
return collection;
}
// Alter values below to test your code
update(5439, "artist", "ABBA");
函数的名称为update(更新)。
两个状态:value是否为真、prop是否为"tracks"。
三个操作:修改值、追加值、删除值。
这就是图灵机的原型:状态机(不同的状态对应不同的操作)。
这本是一道简单的题目,但有很多同学都对此题提出疑问,表示不明白题目所指。
此前我都是贴出代码,但是觉得没有深入到问题的本质。
如果能够知微见著,深入理解到问题的本质,那么就可以举一反三。
以后遇到类似的问题,分分钟解决,岂不开心。
Enjoy Happy Code!
非常感谢你能在万千GitHub项目中发现这里,如果你也喜欢这个项目,不要忘记给我们点赞(Star)哦。
如果想知道项目的每一步进展,可以关注(Watch)我们哦。
如果想贡献代码,提交PR,可以新建一个属于自己的分支(Fork)哦。
欢迎你来到freecodecamp中文社区。