Skip to content

Instantly share code, notes, and snippets.

@lucasdellasala
Created October 28, 2022 04:28
Show Gist options
  • Save lucasdellasala/532c8082b5ce5869a398522932ca5773 to your computer and use it in GitHub Desktop.
Save lucasdellasala/532c8082b5ce5869a398522932ca5773 to your computer and use it in GitHub Desktop.
interface TestCase {
input: string;
expected: string;
solution: number;
}
const TEST_CASES: TestCase[] = [
{
input: 'aca',
expected: 'aaa',
solution: 2
},
{
input: 'aaabb',
expected: 'aaabb',
solution: 0
},
{
input: 'aaaab',
expected: 'aaaaa',
solution: 1
},
{
input: 'acdcd',
expected: 'aaddd', // || 'ccddd' ok || 'aaccc' mal,
solution: 3
},
];
function getMinMoves(s: string) {
const len = s.length;
const comp: any = {}
// analysis
for (let i = 0; i < len; i++) {
const prev = s[i - 1]?.charCodeAt(0) - 97;
const current = s[i].charCodeAt(0) - 97;
const next = s[i + 1]?.charCodeAt(0) - 97;
const data = { prev, current, next };
let match;
let matchPos;
let near;
let nearPos;
if (current === prev) {
near = prev;
nearPos = i - 1;
match = near;
matchPos = nearPos;
}
if (current === next) {
near = next;
nearPos = i + 1;
match = near;
matchPos = nearPos;
}
comp[i] = {
data,
near,
nearPos,
match,
matchPos,
done: match ? true : false,
};
}
// solution
for (const key in comp) {
if (comp[key].done) {
continue;
}
}
console.log({ comp });
return 2;
}
/* for(const test of TEST_CASES){
const result = getMinMoves(test.input);
if (result === test.solution) {
console.log(`✅[SUCCESS] Input ${test.input} has ${test.solution} minimum moves to satisfy the condition.`)
} else {
console.log(`❌[FAIL] Input ${test.input} hasn't ${result} minimum moves to satisfy the condition.`)
}
} */
function grouper(s: string) {
const l = s.length;
const list = transcript(s);
const y = Math.max(...list);
const x = Math.min(...list);
const m = getMaxMoves(list);
const d = Math.abs(y - x);
const a = d + 1;
const c = a ** l;
console.log({ s }, { list }, { l }, { m }, { y }, { x }, { d }, { a }, { c });
}
function transcript(s: string) {
let list = [];
for (let i = 0; i < s.length; i++) {
list.push(s[i].charCodeAt(0) - 97);
}
return list;
}
function getMaxMoves(list: number[]) {
let counter = 0;
for (let i = 0; i < list.length - 1; i++) {
counter = counter + Math.abs((list[i] - list[i + 1]));
}
return counter;
}
grouper('aba');
grouper('acad');
grouper('ababe');
function getCombs(combs: any[], min: number, max: number, len: number) {
// Escribir funcion recursiva que construya algo como combinations_aba
}
const combinations_aba = [
[0, 0, 0],
[0, 0, 1],
[0, 0, 2],
[0, 1, 0],
[0, 1, 1],
[0, 1, 2],
[0, 2, 0],
[0, 2, 1],
[0, 2, 2],
[1, 0, 0],
[1, 0, 1],
[1, 0, 2],
[1, 1, 0],
[1, 1, 1],
[1, 1, 2],
[1, 2, 0],
[1, 2, 1],
[1, 2, 2],
[2, 0, 0],
[2, 0, 1],
[2, 0, 2],
[2, 1, 0],
[2, 1, 1],
[2, 1, 2],
[2, 2, 0],
[2, 2, 1],
[2, 2, 2]
]
// https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgCoQM5gMJwygbwChlTlQAHAVzAC5kspQBzAbhLIgA8KIFIAJvUYt2ZBgHsANjWASQ9EFQC2AI2jsAvkSIJ5WNAFEAyqgD62AILGT9dFlz4A2gF1kAXmROOpYuPGUNPQA5IhwwQA0Pv7cvPwQQsihcOFR-mQY0rLy9ABM0ZppZH7p5CDUdEkpcKqqkdHisXyCIdW19aWSMmByCsgADAVFvg1kgZXJKXXDMTzNCa3VqaOkmd299ACMQ9El6eOtCAJHHaVN8YnJAteRyAD0d8gAPk9JCEc3yBIA1s+vye8EMFkMo4FIZuI1tk+gBmHYudhEGBUED8XrIZgQMAAWVA2IkADdMAAKDDCMBMEDMACUyD2yD0IAMUggIA8DAAdCyqWAABZiMiMgx6ZQUehwEAAT3ZBG00QeyAlYMlGGAGGiMAkUGQxJZYHI7P6rANAB5kNzjcAANRW2n08RC-UUKAQAnsjBOYDIAC0yE2LgA-ByELy4FBsBIBBBLGBif1ab6AJwAdgF6UdDKoUBd4HdnpcwdD4cj0dj8Z9yBTaf8GZA3H1ng9XqtfsDhbDEajMbjCcrqZWDP0+oEcDAcBlyGdroimezrLAM7rXH1mkRnT1INHIer4g3oLAIYAChIMDuyBu62Gz6QLxAw8fTzpOsAYDqEFmcw33J4pwS7QPxEvbUfxdAlr38ICH3ZL1fU2cDxH3EN2SA+CyEQ3koM8SCT3AuVn1fYl3znXNvyw+t-06QC72A5AlzAVDSGwjBoOQFs4IAtCt15ZDqIYzcDwwk8ePvHCBzw0oRQofMZQ40gRzHCFSiAxT0iYlT-HQ9SEK4h8tLIAR5Ageh0OQANkApKgUHoeApHwdTVwKJ8yAVKEenkDUtTfIdkG+CBpVAQdRQo0oXy80UnF8yUCwMutgsowdwFASzcJ0RyHX0aQIC5CRmGJAhAooZBNGpasXTALM2VyLRUruAAqZBNSgQjvMgAwJFfVATHMKwbGMal6QzF0MCoKQGwxLFcRAfEiQwYlWrADlxhKpzSFC4khpGr9PHmjlXN6OKawyllstygADQBQcicYwAFVsGwExjDcABJcoaGQAASAgdvGTRkFDZjPp2vb5F+5RQGAZQVBBQlMHMiQGFHNUYGlPkUEZARgDckAOVO6kCmQCBbMIAchUyk7iVOwAZcicAAxSwnoAGWe179UBzAFp+v68BAYJWYIDbRtB8HIeUaGZrhhGegwZHzN5NH5AxrGcbx8RtF+2q7h0ZFUSxjEoAkKheCaskGApFgDozKR3S5VlmD5atLbVMaKQlDAECYChYwwZb0qZfVpU8bFR15DlQS4YkOUjqQnZ9wVvK4dkg75UPQAjqOY4d7zRc8TEcTgLhppJaOsFj0gMwERPg45GpZulX0uFLhKDHHTwK7YzO-YZdlx1q+qpA7tYsqkHK8oYIqZ3y4uVwn81x7pEE5-y6VCnnhOV-yiv18VReu+K6qkRRNF5HMqBXfd4BPdJclKRpOlog3Kf2VcNcyEanUNy9TwjVNTluTt-lyA2gOruJ2HJqAYF5KSfM7ZixdjLL2FMjdxKkDKhVc0Tt97ayPmyXOQcC4w1mlPRQKh1BQFcAdDcegUSQBokaDy2pdRYgNF-S0yAzRTxtjybisFLRALvp0Kh4BoDskETQ1iyAk4hxrsSXUTtpK+inp6cR-pqRIOiKgqAbJREaCIHKIgzB9aG2gMSUIqhwjLQMQbI2JiwgCGCBYwx1jTE1AgPYxEWDda5wjGoWaIpVAm0VFKVwM4wZ9CUGoaAIT87EIiVAGc3IYmkLigqQwbsmCqGANqLB6IXREVVASccABHSyTcLKSnHGCZg8MRTVIkGoUAiN9BmBqHAXROgMx+IaVjDAzSzFP2iE4foM4hkDBcDMQZwyZz+nGSMkZuQxkDJGZsYZCzxATL9FM1ZZB1nLOQPMmZM5cgrIOXszZJyjl7K2aQJwuzZlXK8Lcs5AzHmXPGbs259yblTKeWs95hzPm7Iuf0AFhyfnbMBf88ZQLjkDOha2KFkzXmwu+aMhFGz4XIvRfszFQLPkXIudMnF-yiAuCIEAA
@lucasdellasala
Copy link
Author

estrategia bloquear las parejas o grupos que ya cumplan la condicion (skipeando en el bucle generador de combinaciones)

@lucasdellasala
Copy link
Author

https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgCoQM5gMJwygbwChlTlQAHAVzAC5kspQBzAbhLIgA8KIFIAJvUYt2ZBgHsANjWASQ9EFQC2AI2jsAvkSIJ5WNAFEAyqgD62AILGT9dFlz4A2gF1kAXmROOpYuPGUNPQA5IhwwQA0Pv7cvPwQQsihcOFR-mQY0rLy9ABM0ZppZH7p5CDUdEkpcKqqkdHisXyCIdW19aWSMmByCsgADAVFvg1kgZXJKXXDMTzNCa3VqaOkmd299ACMQ9El6eOtCAJHHaVN8YnJAteRyAD0d8gAPk9JCEc3yBIA1s+vye8EMFkMo4FIZuI1tk+gBmHYudhEGBUED8XrIZgQMAAWVA2IkADdMAAKDDCMBMEDMACUyD2yD0IAMUggIA8DAAdCyqWAABZiMiMgx6ZQUehwEAAT3ZBG00QeyAlYMlGGAGGiMAkUGQxJZYHI7P6rANAB5kNzjcAANRW2n08RC-UUKAQAnsjBOYDIAC0yE2LgA-ByELy4FBsBIBBBLGBif1ab6AJwAdgF6UdDKoUBd4HdnpcwdD4cj0dj8Z9yBTaf8GZA3H1ng9XqtfsDhbDEajMbjCcrqZWDP0+oEcDAcBlyGdroimezrLAM7rXH1mkRnT1INHIer4g3oLAIYAChIMDuyBu62Gz6QLxAw8fTzpOsAYDqEFmcw33J4pwS7QPxEvbUfxdAlr38ICH3ZL1fU2cDxH3EN2SA+CyEQ3koM8SCT3AuVn1fYl3znXNvyw+t-06QC72A5AlzAVDSGwjBoOQFs4IAtCt15ZDqIYzcDwwk8ePvHCBzw0oRQofMZQ40gRzHCFSiAxT0iYlT-HQ9SEK4h8tLIAR5Ageh0OQANkApKgUHoeApHwdTVwKJ8yAVKEenkDUtTfIdkG+CBpVAQdRQo0oXy80UnF8yUCwMutgsowdwFASzcJ0RyHX0aQIC5CRmGJAhAooZBNGpasXTALM2VyLRUruAAqZBNSgQjvMgAwJFfVATHMKwbGMal6QzF0MCoKQGwxLFcRAfEiQwYlWrADlxhKpzSFC4khpGr9PHmjlXN6OKawyllstygADQBQcicYwAFVsGwExjDcABJcoaGQAASAgdvGTRkFDZjPp2vb5F+5RQGAZQVBBQlMHMiQGFHNUYGlPkUEZARgDckAOVO6kCmQCBbMIAchUyk7iVOwAZcicAAxSwnoAGWe179UBzAFp+v68BAYJWYIDbRtB8HIeUaGZrhhGegwZHzN5NH5AxrGcbx8RtF+2q7h0ZFUSxjEoAkKheCaskGApFgDozKR3S5VlmD5atLbVMaKQlDAECYChYwwZb0qZfVpU8bFR15DlQS4YkOUjqQnZ9wVvK4dkg75UPQAjqOY4d7zRc8TEcTgLhppJaOsFj0gMwERPg45GpZulX0uFLhKDHHTwK7YzO-YZdlx1q+qpA7tYsqkHK8oYIqZ3y4uVwn81x7pEE5-y6VCnnhOV-yiv18VReu+K6qkRRNF5HMqBXfd4BPdJclKRpOlog3Kf2VcNcyEanUNy9TwjVNTluTt-lyA2gOruJ2HJqAYF5KSfM7ZixdjLL2FMjdxKkDKhVc0Tt97ayPmyXOQcC4w1mlPRQKh1BQFcAdDcegUSQBokaDy2pdRYgNF-S0yAzRTxtjybisFLRALvp0Kh4BoDskETQ1iyAk4hxrsSXUTtpK+inp6cR-pqRIOiKgqAbJREaCIHKIgdU9YGyNsSUIqhwjLWYPrQ20ATFhAEMECxVjjGmJqBABxxoNZa0PrrXOEY1CzRFKoE2iopSuBnGDPoSg1DQHCfnYh0SoAzm5PE0hM5tFQBSdAak4opT8Ljp3QJoBEbH08M-aIGYw5+KCeyYkkjq5BOJGHCsETaRsVpL3c0rIX6kEaow-UwB3Df2ACaC0gDbT2mco8UM0oACOg45zMGANqKQ45QR1lPgTNkKzkAzMsgwFA4C5YSloioaAQlQAIBkJKVkBkQSgFiVwJJrJkDSnSSTCQagilK0OcSYAtV0lqPSv4sBVAIHNU+SAYpIBlrRBfM1ahwjSKbi4FU72eT0gaK0R8oJ1ZfqE3wOi-wmLxo4GxQEsl4T7nIqeSANJBshFQCtJsNRcoMyBIwP0TY7JfFkuJGEgYM5cgzhhDOeM7BSbHWHrlAg7LOUr1lZsTh-88ZsuxV83oGAzA1Bbl4aITh+iitFS4GY+rDWthNQagVyBcjGr1ZazYRqLUzgdeau1zrBW2vEKa61jq3U+tdV6y1QrrWerIE4F1lr+ihtIOGs1-oTURo9Qm91Axo1eBdRmtNsa-RJr1S64NUbk3+vjXmwVuavUFt9RWuNWbK0hpNcGiNtaU0lurTm+terg0FubcWntXaXBEAHUAA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment