Star Enigma (JS)
Здравейте. Имам проблем с решаването на тази задача и не мога да си открия грешката. Изобщо нямам идея какъв инпут подава джъдж че ми изкарва само 80/100. Гърмят ми Test 1 и Test 2. От вчера я мъча обаче не успявам да я докарам до 100/100. Ако може някой да ми помогне да си видя грешката за да мога да не я повтарям много бих се радвал. Сега след поредния няколко часов неуспешен опит да я докарам до 100 точки мисля да си лягам че стана почти 2ч и едва си държа очите отворени.
https://pastebin.com/57dRn5pK
Условието е тук
https://judge.softuni.org/Contests/1709
Да, аз ги гледах тези теми, но така и не установих проблема със стария ми код. Обаче опитах да я реша отначало малко по различно и тогава вече осъзнах къде ми е грешката. Благодаря!
https://pastebin.com/B1M1RW5A ето pastebin на задачата 100/100.
Натъкнах се на два проблема в новия ми код и те са:
1. Когато имаш само едно съобщение и то ти е подадено като вече декриптирано, тук на 27-ми ред while((planet = regex.exec(messages)) !== null) връща null, а реално това не е вярно, защото вече има валидно декриптирано съобщение, но просто индекса на регекса не е 0. И като му добавиш regex.lastIndex = 0; там на 26-ти ред дефакто му зануляваш индекса и вече почва да брои от първото съобщение в масива и влиза в while и всичко е точно.
2. На 14-ти ред му бях написал само let lettersCount = message.match(regex2).length; и ми гърмеше с 90/100 RunTime Error в Judge.
Оказа се, че просто когато няма нито една от буквите s,t,a,r в съобщението и в опит да вземе дължината на дефакто празен масив и гърми. Затова поправяме на let lettersCount = message.match(regex2) && message.match(regex2).length;
Демек да върне поне null ако масива няма дължина а не да ми гърми :D .
Дано съм помогнал на бъдещи курсисти във Fundamentals. :)
Super,