質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

408閲覧

undefined is not an object

Q3fdxrGzWzu0u5n

総合スコア8

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/06/27 06:39

チェッカーを使って,確認しようとしたところ,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])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/06/27 11:30

何をしたいのかをまずはっきりさせたほうがいいでしょう while(true)的なことはjsではやらない方がいいですよ
shun-K

2020/06/27 14:56

幅優先探索をしてるのだと思いますが、このコードを実行してもエラーにはならないですよ。 実行すると ans は [[0,4,2,3,5,1],[0,2,4,3,5,1],[0,2,3,4,5,1],[0,2,3,4,1,5],[0,2,3,1,4,5],[0,2,1,3,4,5],[0,1,2,3,4,5]] になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問