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}`);
}
}
Бях stuck-нал на тая задачка с 80/100. Благодаря много за идеята, Мартин! Това проработи. За съжаление, условието отново е неточно.
Условието на задачата изисква да се декриптира съобщението, никъде няма условност "може съобщението изобщо да не е криптирано, може да е".
Самото условие е:
И по-късно в Constraints допълнително потвърждение с: