チェッカーを使って,確認しようとしたところ,TypeError: undefined is not an object (evaluating 'ans.length')というエラーが出てしまうのですが,どこが該当しているのかわかりません.初歩的であるとは思いますが,どこが間違っているか教えていただきたいです.
Javascript
1function f(lst) { 2 function swap(a, i, n){ 3 var ax = a.slice(0); 4 var tmp = ax[i]; 5 var ii = (i + 1) % n; 6 ax[i] = ax[ii]; 7 ax[ii] = tmp; 8 return ax; 9 } 10 function is_goal(a){ 11 var n = a.length; 12 for (var i = 0; i < n; i++){ 13 if (a[i] != i) return false 14 } 15 return true 16 } 17 function eq_pat(q1, q2){ 18 var n = q1.length; 19 for (var i = 0; i < n; i++){ 20 if (q1[i] != q2[i]) return false 21 } 22 return true; 23 } 24 var ans=[]; 25 function print_path(m) { 26 27 if (m !== null) { 28 print_path(m[2]); 29 ans.push(m[1]) 30 return ans 31 } 32 } 33 function bfs(list){ 34 var queue = [[0, list, null]] 35 while (true){ 36 37 var m = queue.shift(); 38 var n=list.length; 39 var d = m[0]; 40 var pat = m[1]; 41 var parent = m[2]; 42 43 if (is_goal(pat)) break; 44 for (var i = 1; i < n; i++){ 45 var patx = swap(pat, i, n); 46 if (parent !== null && eq_pat(patx, parent[1])) continue; 47 queue.push([d + 1, patx, m]); 48 } 49 } 50 //puts(print_path(m)) 51 return print_path(m) 52 } 53 bfs(lst) 54} 55f([0,4,2,3,5,1])
あなたの回答
tips
プレビュー