// your code goes here
let payment = "payment5,200,Paying off: invoiceB";
let invoices = [
"invoiceA,2024-01-01,100",
"invoiceB,2024-02-01,200",
"invoiceC,2023-01-30,1000"
];
function solve() {
let payParts = payment.split(",");
let payId = payParts[0];
let amount = payParts[1];
let invoiceId = payParts[2].substr(12);
for (let invoice of invoices) {
if (invoice.split(",")[0] == invoiceId) {
console.log(`${payId} pays off ${amount} for ${invoiceId} due on ${invoice.split(",")[1]}`);
}
}
}
let str = "10A13414124218B124564356434567430";
let allowed = ["B12456435"];
function solve2() {
let num = 0;
let ids = [];
do {
let temp = parseInt(str[0] + str[1]);
let id = str.substr(2, temp);
ids.push(id);
str = str.substr(2 + temp);
} while (str.length > 1);
console.log(ids);
const allowedIds = [];
for (const id of ids) {
// if (allowed.includes(id)) {
// allowedIds.push(id);
// }
for (const allowedId of allowed) {
if (id.startsWith(allowedId)) {
allowedIds.push(id);
}
}
}
console.log(allowedIds);
}
let str2 = "USD:CAD:DHL:5,USD:GBP:FEDX:10";
function solve3(amount, source, target) {
let conversions = {};
for (let conversion of str2.split(",")) {
let parts = conversion.split(":");
let src = parts[0];
let tgt = parts[1];
let rate = parts[3];
let post = parts[2];
if (!conversions.hasOwnProperty(src)) {
conversions[src] = {};
}
conversions[src][tgt] = { post, rate };
if (!conversions.hasOwnProperty(tgt)) {
conversions[tgt] = {};
}
conversions[tgt][src] = { post, rate: 1/rate };
// if (src === source && (hop === 1 || tgt === target)) {
// console.log(amount * rate);
// return;
// }
// if (src === target && tgt === source) {
// console.log(amount / rate);
// return;
// }
}
// console.log(JSON.stringify(conversions));
for (const [ tgt, convObj ] of Object.entries(conversions[source])) {
console.log(`1 ${source} ${JSON.stringify(convObj)}`)
if (tgt === target) {
console.log(JSON.stringify(convObj));
continue;
}
for (const [tgt2, convObj2] of Object.entries(conversions[tgt])) {
if (tgt2 === target) {
console.log(JSON.stringify([convObj, convObj2]));
}
}
}
}
solve3(2, "GBP", "CAD");
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQoKbGV0IHBheW1lbnQgPSAicGF5bWVudDUsMjAwLFBheWluZyBvZmY6IGludm9pY2VCIjsKbGV0IGludm9pY2VzID0gWwoJImludm9pY2VBLDIwMjQtMDEtMDEsMTAwIiwKCSJpbnZvaWNlQiwyMDI0LTAyLTAxLDIwMCIsCgkiaW52b2ljZUMsMjAyMy0wMS0zMCwxMDAwIgpdOwoKCmZ1bmN0aW9uIHNvbHZlKCkgewoJbGV0IHBheVBhcnRzID0gcGF5bWVudC5zcGxpdCgiLCIpOwoJbGV0IHBheUlkID0gcGF5UGFydHNbMF07CglsZXQgYW1vdW50ID0gcGF5UGFydHNbMV07CglsZXQgaW52b2ljZUlkID0gcGF5UGFydHNbMl0uc3Vic3RyKDEyKTsKCWZvciAobGV0IGludm9pY2Ugb2YgaW52b2ljZXMpIHsKCQlpZiAoaW52b2ljZS5zcGxpdCgiLCIpWzBdID09IGludm9pY2VJZCkgewoJCQljb25zb2xlLmxvZyhgJHtwYXlJZH0gcGF5cyBvZmYgJHthbW91bnR9IGZvciAke2ludm9pY2VJZH0gZHVlIG9uICR7aW52b2ljZS5zcGxpdCgiLCIpWzFdfWApOwoJCX0KCX0KfQoKbGV0IHN0ciA9ICIxMEExMzQxNDEyNDIxOEIxMjQ1NjQzNTY0MzQ1Njc0MzAiOwpsZXQgYWxsb3dlZCA9IFsiQjEyNDU2NDM1Il07CgpmdW5jdGlvbiBzb2x2ZTIoKSB7CglsZXQgbnVtID0gMDsKCWxldCBpZHMgPSBbXTsKCWRvIHsKCQlsZXQgdGVtcCA9IHBhcnNlSW50KHN0clswXSArIHN0clsxXSk7CgkJbGV0IGlkID0gc3RyLnN1YnN0cigyLCB0ZW1wKTsKCQlpZHMucHVzaChpZCk7CgkJc3RyID0gc3RyLnN1YnN0cigyICsgdGVtcCk7Cgl9IHdoaWxlIChzdHIubGVuZ3RoID4gMSk7Cgljb25zb2xlLmxvZyhpZHMpOwoJCgljb25zdCBhbGxvd2VkSWRzID0gW107Cglmb3IgKGNvbnN0IGlkIG9mIGlkcykgewoJCS8vIGlmIChhbGxvd2VkLmluY2x1ZGVzKGlkKSkgewoJCS8vIAlhbGxvd2VkSWRzLnB1c2goaWQpOwoJCS8vIH0KCQlmb3IgKGNvbnN0IGFsbG93ZWRJZCBvZiBhbGxvd2VkKSB7CgkJCWlmIChpZC5zdGFydHNXaXRoKGFsbG93ZWRJZCkpIHsKCQkJCWFsbG93ZWRJZHMucHVzaChpZCk7CgkJCX0KCQl9Cgl9Cgljb25zb2xlLmxvZyhhbGxvd2VkSWRzKTsKfQoKCmxldCBzdHIyID0gIlVTRDpDQUQ6REhMOjUsVVNEOkdCUDpGRURYOjEwIjsKCmZ1bmN0aW9uIHNvbHZlMyhhbW91bnQsIHNvdXJjZSwgdGFyZ2V0KSB7CglsZXQgY29udmVyc2lvbnMgPSB7fTsKCQoJZm9yIChsZXQgY29udmVyc2lvbiBvZiBzdHIyLnNwbGl0KCIsIikpIHsKCQlsZXQgcGFydHMgPSBjb252ZXJzaW9uLnNwbGl0KCI6Iik7CgkJbGV0IHNyYyA9IHBhcnRzWzBdOwoJCWxldCB0Z3QgPSBwYXJ0c1sxXTsKCQlsZXQgcmF0ZSA9IHBhcnRzWzNdOwoJCWxldCBwb3N0ID0gcGFydHNbMl07CgkJaWYgKCFjb252ZXJzaW9ucy5oYXNPd25Qcm9wZXJ0eShzcmMpKSB7CgkJCQljb252ZXJzaW9uc1tzcmNdID0ge307CQoJCX0KCgkJY29udmVyc2lvbnNbc3JjXVt0Z3RdID0geyBwb3N0LCByYXRlIH07CgkJCgkJaWYgKCFjb252ZXJzaW9ucy5oYXNPd25Qcm9wZXJ0eSh0Z3QpKSB7CgkJCWNvbnZlcnNpb25zW3RndF0gPSB7fTsKCQl9CgkJY29udmVyc2lvbnNbdGd0XVtzcmNdID0geyBwb3N0LCByYXRlOiAxL3JhdGUgfTsKCQkKCQkvLyBpZiAoc3JjID09PSBzb3VyY2UgJiYgKGhvcCA9PT0gMSB8fCB0Z3QgPT09IHRhcmdldCkpIHsKCQkvLyAJY29uc29sZS5sb2coYW1vdW50ICogcmF0ZSk7CgkJLy8gCXJldHVybjsKCQkvLyB9CgkJCgkJLy8gaWYgKHNyYyA9PT0gdGFyZ2V0ICYmIHRndCA9PT0gc291cmNlKSB7CgkJLy8gCWNvbnNvbGUubG9nKGFtb3VudCAvIHJhdGUpOwoJCS8vIAlyZXR1cm47CgkJLy8gfQoJfQoJLy8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoY29udmVyc2lvbnMpKTsKCQoJZm9yIChjb25zdCAgWyB0Z3QsIGNvbnZPYmogXSBvZiBPYmplY3QuZW50cmllcyhjb252ZXJzaW9uc1tzb3VyY2VdKSkgewoJCWNvbnNvbGUubG9nKGAxICR7c291cmNlfSAke0pTT04uc3RyaW5naWZ5KGNvbnZPYmopfWApCgkJaWYgKHRndCA9PT0gdGFyZ2V0KSB7CgkJCWNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGNvbnZPYmopKTsKCQkJY29udGludWU7CgkJfQoJCWZvciAoY29uc3QgW3RndDIsIGNvbnZPYmoyXSBvZiBPYmplY3QuZW50cmllcyhjb252ZXJzaW9uc1t0Z3RdKSkgewoJCQlpZiAodGd0MiA9PT0gdGFyZ2V0KSB7CgkJCQljb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShbY29udk9iaiwgY29udk9iajJdKSk7CgkJCX0KCQl9Cgl9Cn0KICAKc29sdmUzKDIsICJHQlAiLCAiQ0FEIik7CgoKCgo=