2016-05-03 9 views
3

Also hier ist das Problem:Algorithmus Verwirrung in Codewars

Der neue "Avengers" Film wurde gerade veröffentlicht! An der Kinokasse stehen viele Menschen in einer riesigen Schlange. Jeder von ihnen hat eine einzige 100, 50 oder 25 Dollar Rechnung. Ein "Avengers" Ticket kostet 25 Dollar.

Vasya arbeitet derzeit als Angestellter. Er möchte ein Ticket an jede einzelne Person in dieser Linie verkaufen.

Kann Vasya ein Ticket an jede Person verkaufen und die Änderung geben, wenn er zunächst kein Geld hat und die Tickets streng in der Reihenfolge verkauft, in der die Leute in der Schlange folgen?

Zurück JA, wenn Vasya ein Ticket an jede Person verkaufen und die Änderung geben kann. Andernfalls NEIN zurücksenden.

Mein Code:

function tickets(peopleInLine) { 
    var speakVasya = ""; 
    var vasyaValue = 0; 
    for (var i = 0; i < peopleInLine.length; i++) { 
    if (peopleInLine[i] - 25 > vasyaValue) { 
     speakVasya = "NO"; 
     break; 
    } else { 
     vasyaValue += 25; 
     speakVasya = "YES"; 
    } 
    } 
    document.write(speakVasya); 
} 


tickets([25, 25, 50]); 

Live-Demo hier https://jsfiddle.net/py234z11/1/

Mein Problem ist, nach codewars, meine Lösung geht 7 Tests aber nicht bei 2, aber ich kann nicht verstehen, welche diejenigen als es gibt nicht die Argumente, die Tickets in Funktion bringen.

+1

Ich habe das Gefühl, dass viele erforderliche Informationen fehlen. Wenn jeder einen 25-Dollar-Schein hat und ein Ticket 25 ist, braucht er keine Änderung und kann nur jede Person in der ersten Zeile verkaufen. – IMTheNachoMan

+1

@IMTheNachoMan ja Entschuldigung Englisch ist nicht meine Muttersprache und versuche mein Bestes, um es zu erklären. Also, wenn jeder 25 Dollar in einer Reihe von 30 Leuten hat, also Tickets ([25,25,25,25 ....]), wird das Programm YES so drucken, wie es sollte, weil sie nie das Geld ausgehen würde. Aber wenn der erste Mann 25 hatte und der zweite Kerl 100 Dollar auf 75 Wechsel hatte, würde der arme Vasya keine Kleingeld haben, so dass es NO –

+0

drucken würde Ohne Ihre Eingangslinien zu sehen, wie können wir sagen. – bhspencer

Antwort

3

Das Zählen der Geldmenge ist nicht genug - Sie müssen die Anzahl der Rechnungen im Auge behalten. Wenn Sie beispielsweise eine 100-Dollar-Rechnung haben, können Sie keine Änderung für jemanden mit einer 50-Dollar- oder 100-Dollar-Rechnung vornehmen. Sie benötigen die bestimmte Rechnung (die 25-Dollar-Rechnung für 50 Dollar und 25 und 50 Dollar oder drei 25-Dollar-Wechsel) um eine Änderung für die $ 100 Rechnung zu machen).

Also, anstatt ein gesamtes gesammeltes Geld zu behalten, behalten Sie die Anzahl der gesammelten Rechnungen im Auge.

+1

Wenn jemand einen $ 100 hat, müssen Sie ihm $ 50 + $ 25 geben, wenn Sie ihn haben, und nicht 3 x $ 25. – stark