CCCPaste

04. Cinema Voucher

function cinemaVoucher(inputArray){
/*
Любо е голям почитател на киното и редовно ходи на прожекции и участва в томболи, 
от които често печели ваучери за кино. 

Вашата задача е да напишете програма, която да изчислява колко покупки от киното може да си купи Любо със спечеленият ваучер. 

Ако името на покупката съдържа повече от 8 символа, то тя е билет за филм, а нейната цена представлява 
сумата на ASCII символите от първите ѝ два символа. 

Ако името на покупката съдържа 8 или по-малко символа, нейната цена е равна на стойността на първия ASCII символ в името. 

Любо въвежда името на покупките, които желае, докато не въведе "End" или не въведе покупка, 
чиято стойност е по-голяма от останалата сума на ваучера. 

Вход 
Първоначално се чете един ред:
•	Стойността на ваучера – цяло число в интервала [1…100000]
След това до получаване на команда "End" или до изчерпването на ваучера, се чете по един ред:
o	Покупката, която Любо е избрал – текст

Изход
Програмата приключва при въвеждане на команда "End" или при покупка чиято стойност е по-голяма от останалите пари от ваучера. На конзолата трябва да се напечатат три реда:
•	"{брои закупени билети}"
•	"{брой закупени други покупки}"

*/
// To convert an entire string into an array of ASCII codes, you can use:
// Array.from() combined with map() and charCodeAt(0).
// For instance, Array.from('Hello').map(char => char.charCodeAt(0)) produces [72, 101, 108, 108, 111].

let index = 1; 
let voucherValue = Number(inputArray[0]);
let input = inputArray[index]; 
let totalTickets = 0; 
let totalGoods = 0;
let ticketsPrice = 0 
let newTicketPrice = 0;  
let productPrice = 0; 

while (input != "End"){

     let wordLength = input.length; //определям дължината на масива
     let article = Array.from(input).map(char=>char.charCodeAt(0));// преобразувам го в масив от ASCII символи 
   
     if(wordLength > 8){ // проверявам дали дължината е по-голяма от 8 -> това е билет за кино

        //let article = Array.from(input).map(char => char.charCodeAt(0));
       
        for(let i = 0; i < 2; i++){ // с този цикъл вземам първите два ASCII символа за да намеря цената на билета. Идва от условието на задачата
        
            let currentPrice = article[i];
            newTicketPrice = newTicketPrice + currentPrice;
            currentPrice = 0; 
        
       }
       if(ticketsPrice <= voucherValue){  //проверявам дали ваучера покрива цената на билета
        
        voucherValue = voucherValue - newTicketPrice;
        totalTickets++;
        newTicketPrice= 0; 
       }else {

             break; 
       }

    }else if(wordLength <= 8){ // проверявам за артикул който има дълина по-малка или рвна на 8
 
        let currentArticle = article[0]// вземам само първия ASCII символ на артикула.
        productPrice = currentArticle;  
       
        if(productPrice <= voucherValue){ //проверявам дали ваучера покрива цената на артикула
            voucherValue = voucherValue - productPrice; 
            productPrice = 0; 
            totalGoods++;
        }else{

            break; // ако нямам достатъчно пари излизам
        }

        
    }

        index++;                           
        if(index > inputArray.length-1){    //проверявам за карай на масива 
            break; 
        }
        input = inputArray[index]; // вземам следващ елемент от масива
}


console.log(totalTickets);
console.log(totalGoods); 

}
//cinemaVoucher([300, "Captain Marvel", "popcorn", "Pepsi"])
//cinemaVoucher(["1500","Avengers: Endgame","Bohemian Rhapsody","Deadpool 2","End"])
//cinemaVoucher([200, "popcorn", "Pepsi", "End"]) // 192 е сумата на двата артикула  с 200 би трябввало да излезем заради End!
cinemaVoucher([200, "popcorn", "Pepsi", "Orange", "End"]) // 271 е сумата на трите артикула, 200лв. би трябввало да не ни стигнат поради което да изляза за заради недостатъчно пари във ваучера.