01. World Tour
Ако някой има възможност да помогне?
Какво стана с този изпит така и не разбрах 66/100 на първа задача:
https://pastebin.com/0dZpZ9SD
Проблем с тестове 5 и 6
Ако някой има възможност да помогне?
Какво стана с този изпит така и не разбрах 66/100 на първа задача:
https://pastebin.com/0dZpZ9SD
Проблем с тестове 5 и 6
Здравей!
Гледам, че и ти си направил същата грешка като мен (и аз имам 66/100). Това, което забелязах като разлика с други решения е, че в твоят код (и моя) принтираме в if тялото, а не извън него. Тоест, идеята е да се принтира дори и да не са валидни входните данни. Според мен не бяха напълно ясни условията на задачите, но най-вероятно проблема е в мен, тъй като има немалко хора изкарали пълния брой точки.
Здравейте,
Както колегата Dukoff е отбелязал, в кода от ОП не се печата във всеки случай. Също така при
if (trip.includes(findIndex)) {
trip = trip.replace(findIndex, newDest);
console.log(trip);
}
Тука изпускаш случая с повече от едно съвпадения и сменяш само първото. Това е тест 6
Моя въпрос е, защо гърми с Runtime Error, когато му се добави цикъл, за да може да замени всички съвпадения???
Едниственото, което се сетих е, че може да се подадът еднакви стрингове, затова и добавих една проверка, но не е от това....
Задача:
Знаеш ли какво се случва, мисля че подават нов стринг който съдържа стария стринг и твоя replace зацикля, понеже той както е направен сменя само първия мач, затова предлагам да замениш:
if (oldString !== newString) {
while (allLocations.includes(oldString)) {
allLocations = allLocations.replace(oldString, newString);
}
}
с един от двата варианта, сложен replace с функция с offset:
let offset = 0;
while (allLocations.indexOf(oldString, offset) >= 0) {
allLocations = allLocations.replace(oldString, (oldString, offset) => newString);
offset = allLocations.indexOf(oldString, offset) + newString.length;
}
или replace с регекс с глобален флаг (проблема е че подлежи на регекс инжекция, но в тестовете няма проблемни символи и минава 100/100):
let rgx = new RegExp(oldString, 'g');
allLocations = allLocations.replace(rgx, newString);
Отново много благодаря!
Странното е, че при ползване и на двата варианта предложени от теб, пак ми дава 87/100, но този път не е с Runtime error, а обикновена грешка(грешен резултат Х)....
Оффсета все още нищо не ми говори - не е тема засегната в Fundamentials....
Според мен е или грешка в теста или някой стабилно се е изгаврил с колегите на изпита, понеже това е изпитна задача и по описание, трябва да се решава само с обикновени стрингови операции(задача 1); 2-ра е с регЕкс, 3-та с обекти)....
Поздрави,
да, има още един пропуск при case "Remove Stop" (да махнеш = от валидацията за горен индекс) :
if (startIndex >= 0 && startIndex < allLocations.length) && (endIndex >= 0 && endIndex < allLocations.length)
или
офсета е просто отместване, indexOf може да му се каже от кой индекс (офсет) нататък да търси, съответно replace малко по-трудно се ползва с offset, както виждаш
Знам, че е късно, но ако някой търси решението в бъдеще както аз си чупих главата на тази задача:
Най-лесно става:
if(text.includes(oldString)){
let splitted = text.split(oldString);
text = splitted.join(newString);
}
Много Благодаря!
Здрасти приятел, аз за първи път решавам такава задача, всъщност вчера реших една, но ако има някой който ще ти покаже твоята грешка, а не просто друго решение тук е мястото. Невероятна помощ, да ти покаже слабостите на твоята логика за да я подобриш. Успех!
Напълно съм съгласен!
Скоро трябва да може да достъпим същия изпит и да се упражняваме на него.
Имай това предвид, за принтирането извън if-a.
Благодаря Ви. Наистина след принтирането извън "if......" дава 100 точки. Според мен условието е НЕкоректно защото иска точно обратното.