Drop it

題目舉了個遊戲的例子,關於遊戲中的角色平衡性與關聯性的問題,讓我們好聯想程式與遊戲的關聯

LoL


  題目說明:
隊友該賣就賣,千萬別捨不得。
  當你的隊伍被敵人包圍時,你選擇拯救誰、拋棄誰非常重要,如果選擇錯誤就會造成團滅。如果是AD或AP,優先拯救。因為AD和AP是隊伍輸出的核心。其次應該拯救打野。因為打野死了對面就可以無所顧慮地打龍。最後才是輔助或上單。因為輔助和上單都是肉,死了也不會對團隊造成毀滅性影響,該賣就賣。 但真實中的團戰遠比這要覆雜,你的隊伍很可能會被敵人分割成2個或3個部分。 當你救了一個重要的人時,很可能其他隊友也會因此獲救。 舉個例子: 輔助和AD經常是在一起的,打野和中單在一起,上單經常一個人。你救了AD,輔助也經常因此獲救。

關於遊戲術語: Glossary-1 Glossary-2
Top:上路 Mid(Middle) : 中路 Bot(Bottom) : 下路
JG(jungle) : 遊走於野區,靠野怪來補充經濟及升等,還有最重要的GANK
APC(Ability Power Carry) : 運用法術傷害的主要攻擊手(法師),Carry就是說主要輸出,可以"帶動"團隊士氣的。在會戰中處於後排
ADC(Attack Damage Carry) : 運用物理傷害的主要攻擊手(主流是遠程的射手,但不一定)Carry就是說主要輸出,可以"帶動"團隊士氣的。在會戰中處於後排
SUP(Support) : 支援團隊的輔助型角色,前期任務是幫助ADC成長

  而此題題目給定1個array與1個func(依據條件回傳true or false),題目要求:丟棄不符合條件的元素,直到函數回傳條件true為止,剩餘的元素(當你救了一個重要的人時,很可能其他隊友也會因此獲救)即為題目所求需將她作為答案回傳,如果沒有符合的元素,則回傳空array([])
  function drop(arr, func) {
  // Drop them elements.
 function findKeyPart(arr, func)
 {
   var pos = false  ;
   for(var i=0;i<arr.length;i++)
   {
     if( func(arr[i]) )
     {
         pos = i;
         break;
     }
   }
   return (pos !== false ) ? pos : false;
 }
  return (findKeyPart(arr, func) !== false) ? arr.slice(findKeyPart(arr, func)) : [];
}

drop([1, 2, 3], function(n) {return n < 3; });
drop([1, 2, 3, 4], function(n) {return n > 5;});

Solution 1:

我有2種想法-第1種為找到條件為真的元素的索引(index),然後使用slice函數將array做切割,切的範圍就是從第1個為真的元素到array的尾端,而我找index的函數(findKeyPart)的回傳部分是判斷位置(pos)是否不存在(false),如果不存在則返回false,這樣做的原因是可能有些array的第1個元素(index = 0)就符合條件了,如果直接以pos值來做true or false的判斷,pos = 0會被視為false,這樣就無法取得該元素的位置了
//your code here

Solution 2:

第2個想法是訪問陣列每個元素,然後依據func的返回值來做元素增刪,這解法還沒實作程式碼



**P.S. / Reference:  Array.prototype.slice()
          Glossary-LOL-1
          Glossary-2

results matching ""

    No results matching ""