Loading...
simonakis avatar simonakis 0 Точки

Nested Loops- Lab. Задача 7- Cinema Tickets

Минавам и двата нулеви теста, а и си поиграх и тествах с няколко други инпута и все работи. 
Добавих и възможност функцията да се справя правилно ако въведените купени билети надвишат капацитета. 
И все пак в Judge всички освен нулевите тестове са ми грешни. 0/100. Не разбирам какво иска от мен. 
Ето кода:
https://pastebin.com/VmkDd6KC

Не е супер красив, ама тестван обстойно и работи. 

Ще съм благодарен ако хвърлите светлина върху дебрите на изискванията на Judge за тази задача. 

Благодаря предварително. 

Тагове:
MartinBG avatar MartinBG 4803 Точки

Честно казано, доста се оплетох в логиката на решението Ви, затова направо поствам работещо такова, ако може да Ви е от полза:

 

function solve(input) {
  let standardTotal = 0;
  let studentTotal = 0;
  let kidTotal = 0;

  let movieName;
  while ((movieName = input.shift()) !== 'Finish') {
    let seatsTotal = Number(input.shift());
    let seatsUsed = 0;
    
    let command;
    while (seatsUsed < seatsTotal && (command = input.shift()) !== 'End') {
      seatsUsed++;
      switch (command) {
        case 'student':
          studentTotal++;
          break;
        case 'standard':
          standardTotal++;
          break;
        case 'kid':
          kidTotal++;
          break;
      }
    }
    
    let usedPercentage = (seatsUsed / seatsTotal * 100).toFixed(2);
    console.log(`${movieName} - ${usedPercentage}% full.`);
  }

  const totalTicketsSold = kidTotal + studentTotal + standardTotal;
  let studentPercentage = (studentTotal / totalTicketsSold * 100).toFixed(2);
  let standardPercentage = (standardTotal / totalTicketsSold * 100).toFixed(2);
  let kidPercentage = (kidTotal / totalTicketsSold * 100).toFixed(2);

  console.log(`Total tickets: ${totalTicketsSold}`);
  console.log(`${studentPercentage}% student tickets.`);
  console.log(`${standardPercentage}% standard tickets.`);
  console.log(`${kidPercentage}% kids tickets.`);
}

 

0
simonakis avatar simonakis 0 Точки

Съгласен съм, че кодът ми не е красив, но определено работи. Не съм използвал вложен цикъл и затова е може би объркващ и дълъг. 
Вашият работи в Judge, но сме да твърдя, че моят е по-обстоен, защото покрива и случая, когато за даден филм са зададени да речем 3 билета общо, а са купени (незнайно как, но това е безпредметно) повече от 3. С вашата функция изходът е бъгнат, а при мен дори това работи. 

Даже за други инпути също се бъгва в VSC.Ето например пробвайте с този инпут:
"solve (["Movie1", "2", "kid", "kid", "End", "Movie2", "10", "kid", "student", "standard", "End", "Movie3", "5", "kid", "kid", "student", "End", "Movie4", "2", "kid", "kid", "Finish"])

В VSC се бъгва, изписва филм с име "End" и влиза в безкраен цикъл даже. Не разбирам защо Judge приема този код с 100% вярност?!

Интересно ми е защо в Judge и двата нулеви теста ми ги изписва верни, но нито един от следващите не са верни, особено при положение че съм тествал над 20 различни инпута и на всички работи правилно.
Малко е изнервящ тоя Judge....

0
19/05/2020 09:28:49
MartinBG avatar MartinBG 4803 Точки

@simonakis

Може условието да Ви обърква, но инпута, с който тествате е невалиден.

По условие, билети за един филм се продават, докато следните две условия изпълнени:

- има свободни места ( seatsUsed < seatsTotal )

- не е получена команда "End"

Кoгато свършат билетите, не се подава команда "End", а направо заглавие на следващ филм (или "Finish"):

solve (["Movie1", "2", "kid", "kid", "End", "Movie2", "10", "kid", "student", "standard", "End", "Movie3", "5", "kid", "kid", "student", "End", "Movie4", "2", "kid", "kid", "Finish"])

0
19/05/2020 12:33:13
simonakis avatar simonakis 0 Точки

Ето това е проблемът... Явно когато свършат билетите няма инпут "End"... Трябваше в примерните нулеви inputs да бяха дали пример точно с това. 
Ся като оправя задачата така би трябвало да стане. Ако ли не- вдигам ръце. Поне фундаментално я разбирам :D

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.