Estoy tratando de crear una clave única usando los alfabetos; Me las arreglé para resolverlo, pero realmente no me gusta el enfoque que tomé. y creo que alguien podría ayudarme a obtener una mejor manera de hacer este código. Por favor, hágamelo saber si se le ocurre una idea mejor. o cualquiera que sea tu idea para comparar con la mía? Creo que esta puede ser una buena forma de compartir conocimientos.. Gracias de antemano
let string = 'ABE'; let ar1 = ["A", "B", "C", "D", "E"]; string = string.split(''); if (string[2] !=='E') { for (let i = 0; i < 5; i++) { if (string[2] === ar1[i]) { i = i+1; string[2] = ar1[i] } } string = string.toString().replace(/,/g, ''); console.log("case 1", string); } else if (string[1] !=='E' && string[2] ==='E') { string[2] ='A'; for (let i = 0; i < 5; i++) { if (string[1] === ar1[i]) { i = i+1; let newString = ar1[i]; console.log(ar1[i]); string[1] = newString; } } string = string.toString().replace(/,/g, ''); console.log("case 2", string); } else if (string[1] ==='E' && string[2] ==='E') { string[1] ='A'; string[2] ='A'; for (let i = 0; i < 5; i++) { if (string[0] === ar1[i]) { i = i+1; string[0] = ar1[i]; } } string = string.toString().replace(/,/g, ''); console.log("case 3", string); }Los resultados serían como:
si cadena = "AAA" Entonces el resultado "AAB"
si cadena = "AAE" Entonces el resultado será "ABA"
si cadena = "AEE" Entonces el resultado será "BAA"
Puede codificar el valor en un valor numérico, como este valor de lugar
36 6 1 CBA 2 1 0 78y codifique un valor incrementado con los caracteres y la longitud deseados.
function decode(value, characters) { const values = Object.fromEntries(Array.from(characters, (v, i) => [v, i])); return value .split('') .reduce((s, v) => s * characters.length + values[v], 0); } function encode(value, characters, length = 0) { let result = ''; do { result = characters[value % characters.length] + result; value = Math.floor(value / characters.length); } while (value); return result.padStart(length, characters[0]); } console.log(decode('AAA', 'ABCDEF')); // 0 console.log(encode(0, 'ABCDEF', 3)); // AAA console.log(encode(1, 'ABCDEF', 3)); // AAB console.log(decode('CBA', 'ABCDEF')); // 78 console.log(encode(78, 'ABCDEF', 3)); // CBA console.log(encode(79, 'ABCDEF', 3)); // CBBEste enfoque rota cada carácter en una cantidad fija (que podría mejorarse), ignorando los otros caracteres.
let ar1 = ["A", "B", "C", "D", "E"]; function scramble(str) { let rotation=3; let s = str.split(''); for (let i=0; i<s.length; i++) { s[i]=ar1[(parseInt(s[i],16)+rotation) % ar1.length]; } return s.toString().replace(/,/g, ''); }