Loading...
Hristo_Yonkov avatar Hristo_Yonkov 1 Точки

Star Enigma - JS

Някой да ми помогне къде греша?

function solve(input) {
    let numberMsg = input.shift();
    let decryptedArr = [];

    for (let i = 0; i < numberMsg; i++) {
        let pattern = /[SsTtAaRr]/g;

        if (pattern.test(input[i]) !== false) {
            let decriptKey = input[i].match(pattern).length;
            let decrypted = '';

            for (let char of input[i]) {
                let charCode = char.charCodeAt() - decriptKey;
                decrypted += String.fromCharCode(charCode);
            }

            decryptedArr.push(decrypted);   
        }
   
    }

    let attackedPlanets = [];
    let destroyedPlanets = [];
    
    for (let msg of decryptedArr) {
        let ifMatch = /@(?<name>[A-Za-z]+)[^@\-!:>]*:(?<population>[\d]+)[^@\-!:>]*!(?<attackType>[AD])![^@\-!:>]*->(?<soldierCount>[\d]+)/g.exec(msg);
        
        if (ifMatch !== null) {
            if (ifMatch.groups.attackType === 'D') {
                destroyedPlanets.push(ifMatch.groups.name);
            } else {
                attackedPlanets.push(ifMatch.groups.name)
            }
        }
        
    }

    console.log(`Attacked planets: ${attackedPlanets.length}`);
    
    attackedPlanets.sort((a, b) => a.localeCompare(b));

    for (let planet of attackedPlanets) {
        console.log(`-> ${planet}`);
    }

    console.log(`Destroyed planets: ${destroyedPlanets.length}`);
    
    destroyedPlanets.sort((a,b) => a.localeCompare(b));

    for (let planet of destroyedPlanets) {
        console.log(`-> ${planet}`);
    }
    


}

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

Във входните данни може да има съобщения, които не са криптирани и които предложеното решение няма да обработи.

if (pattern.test(input[i]) !== false) {
  //...
} else { // fix
  decryptedArr.push(input[i])
}
0
musakahero avatar musakahero 3 Точки

Бях stuck-нал на тая задачка с 80/100. Благодаря много за идеята, Мартин! Това проработи. За съжаление, условието отново е неточно.

Условието на задачата изисква да се декриптира съобщението, никъде няма условност "може съобщението изобщо да не е криптирано, може да е".

Самото условие е:

You are tasked to create a program to decrypt the messages of The Order and prevent the death of hundreds of lives. You will receive several messages, which are encrypted using the legendary star enigma. You should decrypt the messages, following these rules:

И по-късно в Constraints допълнително потвърждение с:

On the next n lines, you will be receiving encrypted messages.

 

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