Skip to content

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!

Clone this wiki locally