2017-02-26 7 views
0

の数を与えられたデータセットをループ私はこのようになり、特定のデータセットを、持っている:は継続的に項目

3 # Number of test cases 3 # Test case 1 has 3 names ALFRED SINGH JOHN 6 # Test case 2 has 6 names ALPHA NITRO ROB RICHARD ANON POPE 1 # Test case 3 has 1 name FELIX

だから私は、このデータセットを文字列化している、と私の問題は、上のベースデータセット全体をループさテストケースの数、また各テストケースの名前の数も考慮する必要があります。私はこれにはjavascriptを使用しており、これは私の現在のコードです。それだけで最初のテストケースを実行できます。テストケースと名の数を尊重しつつ

var example = '3\n3\nALFRED\nSINGH\nJOHN\n6\nALPHA\nNITRO\nROB\nRICHARD\nANON\nPOPE\n1\nFELIX' 
 

 
run(example) 
 

 
function run(input) { 
 
    var lines = input.split('\n') 
 
    var testCases = lines[0] 
 
    lines.shift() 
 
    var n = lines[0] 
 
    lines.shift() 
 
    for (var i =0; i < n; i += 1) { 
 
     var names = lines[i] 
 
     console.log(names) 
 
    } 
 
}

私の問題は、データセット全体をループされます。

回答 複数の正解。問題を特定するためにJaromandaXに行く1st。

付加的な問題

だから、答えはテストケースを考慮せずに、すべての名前のリストを返すように見えます。目的は、テストケースに関して名前をグループ化することです。このような構造(理論的には):

{ 
    "1": ["ALFRED", "SINGH", "JOHN"], 
    "2": [...], 
    "3": ["FELIX"] 
} 
+0

テストケースの数には外側のループが必要で、内部ループには名前の数と同じようにする必要があります –

+0

@JaromandaX答えは以下のように表示されますか?意図した結果が返されません。ちょうどテストケース1を返します –

答えて

1

テストケースのための外側のループを使用してください - 内側のループは、わずかな変更を必要とあまりにも

"読み" する lines.shift()を使用して

var example = '3\n3\nALFRED\nSINGH\nJOHN\n6\nALPHA\nNITRO\nROB\nRICHARD\nANON\nPOPE\n1\nFELIX'; 
 

 
function run(input) { 
 
    var lines = input.split('\n') 
 
    var testCases = lines.shift(); 
 
    var obj = {}; 
 
    for (var x = 0; x < testCases; x++) { 
 
     var testCase = obj[x+1] = []; 
 
     var numberOfNames = lines.shift(); 
 
     for (var i = 0; i < numberOfNames; i += 1) { 
 
      testCase.push(lines.shift()); 
 
     } 
 
    } 
 
    return obj; 
 
} 
 
console.log(run(example));

ノートを、行からの値。シフトはシフトされた行を返します。

+0

それぞれの名前をどのようにリンクするか考えてみてください彼らのテストケースに?私は配列を作成し、それぞれの配列に特定の名前をプッシュしたい。これはすべての名前が等しいとみなすようです! –

+0

私はあなたが望むデータ構造を知ることができません。おそらくそれを質問に追加してください –

+0

上記の編集を参照してください:その他の問題 –

0

すべてのテストケースをループする必要があります。

var example = // 'the dataset above (stringified)' 
 

 
run(example) 
 

 
function run(input) { 
 
    var lines = input.split('\n') 
 
    var testCases = lines[0] 
 
    lines.shift() 
 
    for(var x = 0; x < testCases; x++){ 
 
    
 
     var numberOfNames = lines[0] 
 
     lines.shift() 
 
     for (var i =0; i < numberOfNames; i += 1) { 
 
      var names = lines.shift() 
 
    
 
      console.log(names) 
 
     } 
 
    } 
 
}

EDIT:これはコードです あなたは配列:)クイックリファレンスのための

+0

これは動作していないようですが、最初のケースだけを返します。 '('名= lines.shiftを使用); '...実際には、' VARのテストケースの代わりに '名=行[I]で - –

+0

iは、ええその文句を言わない仕事を – okonek83

+0

をデバッグしますちょっと待ってNode.jsのとイムテスト=行。shift(); 'も同様です(1行で2行のコードは必要ありません) –

1

JSFifflerからそれらの名前を削除する必要があります。https://jsfiddle.net/rj1405/vttejren/1/

あなたがする必要がありますテストケースをループし、要素を削除する必要があります。shift()

var example = `3 
 
3 
 
ALFRED 
 
SINGH 
 
JOHN 
 
6 
 
ALPHA 
 
NITRO 
 
ROB 
 
RICHARD 
 
ANON 
 
POPE 
 
1 
 
FELIX`; 
 

 
run(example) 
 

 
function run(input) { 
 
    var lines = input.split('\n') 
 
    var testCases = lines.shift(); 
 
    for(var x = 0; x < testCases; x++){ 
 
     var numberOfNames = lines.shift(); 
 
     for (var i = 0; i < numberOfNames; i++) { 
 
      var names = lines.shift(); 
 
      console.log(names); 
 
     } 
 
    } 
 
}

関連する問題