Професионална програма
Loading...
+ Нов въпрос
stanpov avatar stanpov 8 Точки

задача "Fancy Barcodes" помощ?

Зациклих с решението на тази задача,немога да разбера,защо при вторият ми опит за регекс винаги ми дава null?

Ето до къде стигнах
https://pastebin.com/4vTuPZHV

Ето и условието

https://judge.softuni.bg/Contests/Practice/DownloadResource/8942

 

Ако някой има примерно решение на JS,бих се радвал да го погледна...

Тагове:
0
Fundamentals Module
MartinBG avatar MartinBG 2791 Точки

g ключа на регекса е излишен:

let pattern = /(@#+)([A-Z][a-zA-Z0-9]{4,}[A-Z])(@#+)/

 

Ето примерно решение:

 

function solve(input) {
  const patternBarcode = /@#+([A-Z][A-Za-z0-9]{4,}[A-Z])@#+/;
  const patternDigit = /\d/;
  
  input.shift();

  input.forEach(barcode => {
    if (patternBarcode.test(barcode)) {
      const productGroup = [...barcode]
        .filter(char => patternDigit.test(char))
        .join('');

      if (productGroup.length > 0) {
        console.log(`Product group: ${productGroup}`);
      } else {
        console.log(`Product group: 00`);
      }
    } else {
      console.log('Invalid barcode');
    }
  });
}

 

И още по-кратко:

function solve(input) {
  const patternBarcode = /@#+([A-Z][A-Za-z0-9]{4,}[A-Z])@#+/;
  const patternDigits = /[0-9]/g;

  input.slice(1).forEach(barcode => {
    if (patternBarcode.test(barcode)) {
      const productGroup = (barcode.match(patternDigits) || ['0', '0']).join('');
      console.log(`Product group: ${productGroup}`);
    } else {
      console.log('Invalid barcode');
    }
  });
}

 

0
09/07/2020 00:49:27
stanpov avatar stanpov 8 Точки

Благодаря,значи глобал флага е доколкото разбрах да не връща резултат след първия намерен и затова го махаме защото в този случай не ни е нужен.

0