2017-06-19 15 views
0

誰でもこのコードの何が間違っているかを知ることができますか?私はCodeWarsでコードを実行し、1つ以外のすべてのテストを渡します...悲しいことに、その特定のテストの入力が表示されないので、それを理解することは非常に難しいです。CodeWarsチャレンジどのテストが失敗の原因ですか?

は、ここでの挑戦命令です:

新しい「アベンジャーズ」映画がリリースされたばかり!映画館の興行場には、巨大なラインの中にたくさんの人がいます。それぞれ100ドル、50ドルまたは25ドルの請求書があります。 「アベンジャーズ」のチケットは25ドルかかります。

現在Vasyaは書記官として働いています。彼はこの行のすべての人にチケットを売りたがっています。

Vasyaは当初、お金がなく、人々がラインに従うように厳密にチケットを売っていれば、各人にチケットを販売し、変更を与えることができますか? Vasyaが各人にチケットを販売して変更を提供できる場合は、YESを返します。それ以外の場合はNOを返します。

amount50> = 1とamount25> = 1のチェックをスワップしてamount25> = 3とすると、このコードはすべてのテストで機能することが判明しました。

function tickets(peopleInLine){ 
    let amount25 = 0; 
    let amount50 = 0; 
    let amount100 = 0; 

    for(let i = 0; i < peopleInLine.length; i++){ 

    if(peopleInLine[i] === 100){ 
     if(amount25 >= 3){ 
     amount25 -= 3; 
     amount100++; 
     }else if(amount25 >= 1 && amount50 >= 1){ 
     amount25 -= 1; 
     amount50 -= 1; 
     amount100++; 
     }else{ 
     return "NO"; 
     } 
    } 

    if(peopleInLine[i] === 50){ 
     if(amount25 >= 1){ 
     amount25--; 
     amount50++; 
     } else { 
     return "NO"; 
     } 
    } 

    if(peopleInLine[i] === 25){ 
     amount25++; 
    } 
    } 
    return "YES"; 
} 

答えて

0

Codewarsでは、あなたは、あなたが間違って何が起こっているかを考え出すのトラブルを抱えている入力パラメータまたは他の変数を印刷するには、コード内ではconsole.logステートメント(またはJavaScript以外の言語での同等のステートメント)を置くことができますあなたのコードで、または入力についてのあなたの前提で。私はちょうどあなたのコードでこれを行い、あなたのコードが失敗しているテストが[25,25,25,25,50,100,50]であることを見ました。最初に50ドルと25ドルをチェックするのではなく、まず25ドルを3ドル戻してみてください - あなたは25ドルを4ドル受け取っていますが、そのうちの1ドルを50ドルで最初の人に変更しますが、残りの3つの$ 25($ 50と$ 25ではなく)を100ドルの人に変更すると、最後の人の$ 50を変更するための$ 25もなくなります。

関連する問題