Loading...
MartinMP avatar MartinMP 3 Точки

Rage Quit - JS fund

Здравейте,

Имам проблем със следната задача:

    2. Rage Quit https://softuni.bg/trainings/resources/officedocument/49636/regular-expressions-more-exercise-js-fundamentals-may-2020/2832

Моят код: 

   https://pastebin.com/YrM3XBqP

проблема ми е, че при inpute-!btI17z=E:DMJ19U1Tvg VQ>11P"qCmo.-0YHYu~o%/%b.}a[=d15fz^"{0^/pg.Ft{W12`aD<l&$W&)*yF1WLV9_GmTf(d0($!$`e/{D'xi]-~17 *%p"%|N>zq@ %xBD18<Y(fHh`@gu#Z#p"Z<v13fI]':\Iz.17*W:\mwV`z-15g@hUYE{_$~}+X%*nytkW15

в него се съдържа "\" и с моя код не го приема като уникален символ и съотвено получвам "Unique symbols used: 53" вместо "Unique symbols used: 54". или поне аз така виждам, че ми е грешката.

Какво мога да променя в кода си, за 100/100? или Какво е по-подходящото решение?

 

Тагове:
1
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки
Best Answer

Грешката ти е, че броиш уникални символи преди да си създал резултата, а в него има стрингове, които ще се повторят 0 (нула) пъти и съответно техните символи не би трябвало да отидат в уникалните:

function solve(input) {
    let series = input[0].split(/[0-9]+/).filter((x) => x != '');
    let repeaters = input[0].split(/[^0-9]+/).filter((x) => x != '');
    let result = '';
    for (let i = 0; i < series.length; i++) {
        result += series[i].toUpperCase().repeat(repeaters[i]);
    }
    console.log(`Unique symbols used: ${[...new Set(result)].length}`);
    console.log(result);
}

 

1
MartinMP avatar MartinMP 3 Точки

Да, благодаря за отговорите! Видях, и в решението на krasizorbov, че накрая се броят уникалните символи. За нулата не бях се сетил.

1
AnitaToneva avatar AnitaToneva 2 Точки

Страхотно решение

2
Insanewpe avatar Insanewpe 1 Точки

Как мога да се свържа с вас извън този форум?Искам да имам ваш контакт, защото обясненията ви винаги са изчерпателни и имам нужда да черпя идеи и опит от човек като вас.

0
krasizorbov avatar krasizorbov 548 Точки

примерно решение лесно ще си откриеш грешката:

function solution(input = []) {
  let str = "";
  let globalPattern = /[\D]+([0-9]+)/g;
  input = input.shift().match(globalPattern);
  if (input !== null) {
    let pattern = /([\D]+)([0-9]+)/;
    for (let i = 0; i < input.length; i++) {
      let result = input[i].match(pattern);
      let sub = result[1].toUpperCase();
      let count = result[2];
      str += sub.repeat(count);
    }
    let reduced = Array.from(new Set(str));
    console.log(`Unique symbols used: ${reduced.length}`);
    console.log(str);
  }
}

0
AnitaToneva avatar AnitaToneva 2 Точки

Здравей , знаеш ли , че това бързо решение дава само 20 точки

Копирах го в джъдж и толкова, а пък работи, както и моето решение , но 20 точки и при мен

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