SOURCE

console 命令行工具 X clear

                    
>
console
function lamps(a) {
  // 第一个字符是 1 的原字符串
  a[0] = a[0] == 0 ? 0 : 1;
  let count1 = _handle(a.join('').split(''));
  // 第一个字符是 0 的原字符串,并默认加 1 次
  a[0] = a[0] == 0 ? 1 : 0;
  let count2 = _handle(a.join('').split(''))+1;
  // 比较以 1 和以 0 开头的次数
  return count1 > count2 ? count2 : count1;  
  // 字符串调整函数
  function _handle(arr) {
    
    let count = 0;
    // 输出
    document.getElementById('div').innerHTML += '<p>开头是 '+arr[0]+' 的原字符串:'+arr.join('')+'</p><p>***开始***</p>';
    
    while(true) {
			// 循环从头判断是否有 00 或 11
      if (arr.join('').match(/0(?=0)|1(?=1)/)) {
        let temp = arr.join('').match(/0(?=0)|1(?=1)/)[0];
        let index = arr.join('').match(/0(?=0)|1(?=1)/)['index'];
				// 是 00 就换成 01,是 11 就换成 10
        temp == 0 ? arr[index+1] = 1 : arr[index+1] = 0;
        // 输出
        document.getElementById('div').innerHTML += '<p>'+arr.join('')+'</p>';        
				// 每次调整就加一次
        count++;
      } else {
        // 输出
        document.getElementById('div').innerHTML += '<p>***结束***</p><p>开头是 1 的新字符串:'+arr.join('')+'</p>';
        break;
      }
    }
    // 输出
    document.getElementById('div').innerHTML += '<p>'+'进行次数:'+count+' 次'+'</p><br/>';
    return --count;
  }
  
}
lamps([1,1,0,1,1,0,0,0,0,1,0]);
// document.getElementById('div').innerHTML += '所以最少次数是:'+lamps([1,1,0,1,1,0,0,0,0,1,0]) + ' 次';
<!-- 题目:https://www.codewars.com/kata/simple-fun-number-124-lamps/train/javascript -->
<div id="div"></div>
p {
  margin: 0;
  padding: 0;
}