2017-11-22 1 views
1

私はPractice.itでJavaScriptの練習問題をやっていますが、2つのロケット船を並んで印刷するという質問があります。Javascriptでは、どのように2つの図を並べて印刷しますか?

私は印刷しましたが、最初のロケットの隣に他のロケットを印刷する方法がわかりません。

また、forループを使用してこれを行う方法はありますか?

function rocket(){ 
    triangle(); 
    line(); 
    sides(); 
    line(); 
    console.log("|Rocket |"); 
    console.log("| #1 |"); 
    line(); 
    sides(); 
    line(); 
    triangle(); 
} 

function triangle(){ 
    console.log(" /\\"); 
    console.log("/ \\"); 
    console.log("/ \\"); 
} 

function line(){ 
    console.log("+-------+"); 
} 

function sides(){ 
    console.log("|  |"); 
} 

rocket(); 

出力:

/\ 
/ \ 
/ \ 
+-------+ 
|  | 
+-------+ 
|Rocket | 
| #2 | 
+-------+ 
|  | 
+-------+ 
/\ 
/ \ 
/ \ 
+0

私はあなたのブラウザでのみコンソールで作業していないと仮定していますか? – zipzit

+1

ここに書いたコードを使って2つを並べて印刷することはできません。それは 'console.log'の仕組みではありません。 – Claies

+1

一度にロケットの「レイヤー」を描くようなロケットドローを設定するのはどうですか? 1つのレイヤー= 1行のテキスト。 – zipzit

答えて

1

素早く汚れた方法は、各文字列を連結することです。

console.log("+--------+".repeat(2)); 

そして、ちょうど各文字列のためにこれを行う:console.log("+--------+")使用のすべてのインスタンスのためにそう。

1

の代わりに、あなたの関数で正しい方法をログに記録するには、配列内のダイアグラムの文字列を置く必要があります。

例:あなたが側で両サイドを印刷したい場合は

function triangle(){ 
    return 
    [" /\\", 
    "/ \\", 
    "/ \\"] 
} 

そうすれば、あなただけのダイアグラムを受信機能、および水平にそれらを分離するために使用されるスペースの量を作ります。この関数は、ダイアグラムを1行ずつ印刷します(配列のインデックスによるインデックス)。

例:

function printDiagrams(diagramList /* This is an array of arrays */, spacing) { 
    // Get the size of the biggest array in diagramList 
    var size= biggestDiagramSize(diagramList) 
    // Here, you iterate in the diagrams array line by line and print 
    for(i = 0, i < size, i++) { 
    // Iterate over diagramList and print its lines 
    // Careful not to exceed arrays bound. 
    // Ex: console.log(diagram1[i] + spacing + diagram2[i] + spacing + diagramN[i]) 
    } 

} 

また、ダイアグラムを構成する機能が必要になるだろう。配列を受け取り、それらの連結を返します。

:別の図を横に並べて印刷しても機能します。

0

rocket関数のパラメータを定義することができます。関数内にString.prototype.repeat()String.prototype.replace()を使用すると、N個の図を並べて表示することができます。

function rocket(n = 1) { 
 
    let props = ["|Rocket |", "| #N |"]; 
 
    let j = 0; 
 
    let s = props[1].match(/\s+(?=\|)/)[0].length; 
 
    triangle(n); 
 
    line(n); 
 
    sides(n); 
 
    line(n); 
 
    for (var i = 0; i < props.length; i++) { 
 
console.log(
 
    props[i] 
 
    .repeat(n) 
 
    .replace(/(N)(\s+(?=\|))/g 
 
    , (_, a, b) => ++j + (j >=10 ? " ".repeat(s-1) : b))); 
 
    } 
 
    line(n); 
 
    sides(n); 
 
    line(n); 
 
    triangle(n); 
 
} 
 

 
function triangle(n){ 
 
    var props = [" /\\ ", "/ \\ ", "/ \\ "]; 
 
    draw(props, n); 
 
} 
 

 
function line(n){ 
 
    var props = ["+-------+"]; 
 
    draw(props, n); 
 
} 
 

 
function sides(n){ 
 
    var props = ["|  |"]; 
 
    draw(props, n); 
 
} 
 

 
function draw(props, n) { 
 
    for (var prop of props) console.log(prop.repeat(n)); 
 
} 
 

 
rocket(15);

関連する問題