BuK/IIm21/Vorlesung 6 Hildebrand

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
Folie 20:

<code id="6267a2bbc4b5a">

var base;

function createXWord(indexes){
  word = ""
  for(let i = 0; i < indexes.length; i++){
    word += base[indexes[i]-1][0]
  }
  return word
}

function createYWord(indexes){
  word = ""
  for(let i = 0; i < indexes.length; i++){
    word += base[indexes[i]-1][1]
  }
  return word
}

function validateSolution(solution){
  solX = createXWord(solution)
  solY = createYWord(solution)
  checkLength = Math.min(solX.length,solY.length)
  if(solX.slice(0, checkLength) == solY.slice(0, checkLength)){
    if(solX.length == solY.length){
      return solution
    } else {
      return true
    }
  } else {
    return false
  }
}

function generateSolutions(starts){
  solutions = []
  if(starts.length == 0){
    for(let j = 0; j < base.length; j++){
      solutions.push([j+1])
    }
  }  
  for(let i = 0; i < starts.length; i++){
    for(let j = 0; j < base.length; j++){ 
      solutions.push(starts[i].concat([j+1]))
    }
  }
  return solutions
}

function solve(b){

  base = b
  solution = []

  solution = generateSolutions(solution)

  while(true){

    faulty = []

    for(let s = 0; s < solution.length; s++){

      result = validateSolution(solution[s])
      if(result == false){
	faulty.push(s)
      }else if(result != true){
	  return result
	}
      }
      for(let f = faulty.length-1; f > -1; f--){ 
	solution.splice(faulty[f],1)
      }
      solution = generateSolutions(solution)
      if(solution == []){
        return false
      }
  }
  
}
</code>
<run id="6267a2bbc4ba8">

k = [["001","0"],["01","011"],["01","101"],["10","001"]]

</run>