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

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

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

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

Q&A

解決済

2回答

424閲覧

42個の組み合わせを作りたいのに、43組みになってしまう問題について

gyoruo

総合スコア61

JavaScript

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

0グッド

0クリップ

投稿2019/10/13 13:15

42個の組み合わせ((1,1)などの同じ値の組み合わせは無視する)を表示させたいのですが、なぜか43組みになってしまいます。
解決策をお願い致します。

JavaScript

1function main(shuffleList) { 2 var quotient, remainder; 3 4 for (i = 0; i < shuffleList.length; i++) { 5 var x = shuffleList[i]; 6 quotient = Math.floor(x / 7); 7 remainder = x % 7; 8 if (quotient !== remainder) { 9 console.log(quotient); 10 console.log(remainder); 11 console.log("##############"); 12 } 13 else { continue; } 14 } 15} 16 17function shuffle() { 18 var list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]; 19 20 //シャッフル 21 for (var i = list.length - 1; i > 0; i--) { 22 var r = Math.floor(Math.random() * (i + 1)); 23 var tmp = list[i]; 24 list[i] = list[r]; 25 list[r] = tmp; 26 } 27 return list; 28} 29var shuffleList = shuffle(); 30

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

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

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

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

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

think49

2019/10/13 13:59

main(shuffleList); が抜けているのでは? このままでは動きません。
guest

回答2

0

[0,0][7,7] のペアが成立しないから。

JavaScript

149 - 6 === 43

※個人的には、[0,1,2,3,4,5,6,7] の中から「42通りのペア」を抽出する意義が謎です。
[1,2,3,4,5,6,7] から「42通りのペア」を抽出するなら分かりますが。

Re: gyoruo さん

投稿2019/10/13 13:49

think49

総合スコア18162

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

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

gyoruo

2019/10/13 15:05

0〜7はこちらの都合でそうさせていただきました。 詳しく記載してなく、申し訳ございません。
think49

2019/10/13 15:09 編集

0-7がお望みなら、jun68yktさんの回答は0-6なので、期待通りではありません。 次の質問の「1から始まる」も0を含まない為、期待通りではありません。 https://teratail.com/questions/217068
guest

0

ベストアンサー

こんにちは

解決策をお願い致します。

とのことなので、ご質問のタイトルにある「42個の組み合わせを作りたい」との要件を満たすために、取り急ぎの

解決策

を挙げますと、function shuffle() の冒頭で

修正前:

javascript

1var list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49];

としている部分を、 0始まりの49個の配列、すなわち、0以上48以下の整数を含む配列

修正前:

javascript

1var list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48];

に修正することかなと思われます。
上記を動作確認するコードを、以下のCodePenに作成しました。

これは、ご質問に挙げられているコードの var list を上記のように修正し、さらに、 main の中で、組み合わせの数をカウントして出力するようにしたもので、 main の終了時に "組み合わせの数: 42" と表示されます。

補足:
本題とは関係ありませんが、上記の0以上48以下の整数を昇順に含む配列 list は、49個の数を並べる他に、以下でも作れます。

javascript

1var list = [...Array(49)].map((_,i) => i);

以上、参考になれば幸いです。

投稿2019/10/13 14:31

編集2019/10/13 16:40
jun68ykt

総合スコア9058

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

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

gyoruo

2019/10/13 15:05

ご丁寧な対応、ありがとうございます。 最後の補足でもできるんですね! 教えていただき、ありがとうございます。
jun68ykt

2019/10/13 15:43

どういたしまして。次のご質問にも回答しましたので、参考になれば幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問