Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
Haga que un índice de matriz se desborde o se desborde dentro de un rango (incluidos los números negativos)

Estoy implementando un intérprete de brainfuck en Javascript. Estoy representando la memoria con una matriz y me gustaría tener la opción de limitar los índices de la matriz dentro de un rango. Si el índice está fuera de este rango, quiero que pase por encima o por debajo de los límites. Tengo un pequeño problema para describir el problema correctamente. Aquí hay un ejemplo de lo que estoy pensando:

 lbound: 0, ubound: 10, index: 10, result: 0 lbound: 0, ubound: 10, index: 11, result: 1 lbound: -10, ubound: 0, index: -10, result: 0 lbound: -10, ubound: 0, index: -11, result: -1 lbound: -5, ubound: 15, index: 16, result: -4 lbound: 5, ubound: 15, index: 26, result: 6

Podría hacer una función algo como:

 if (index < lbound) { // underflow return ubound - index - index * Math.round(index / lbound) } if (index > ubound) { // overflow return lbound + index - index * Math.round(index / ubound) } return index

Pero eso es demasiado ingenuo y se pierde el caso de dividir por cero. Supongo que tengo un enfoque equivocado aquí. Básicamente, estoy buscando una fórmula matemática que asigne un número específico dentro de un rango que incluya números negativos. Pero no una simple reasignación. Se debe calcular el número correcto de sobreimpulsos o subimpulsos. Por lo tanto, las partes enteras de lbound o ubound deben restarse del índice. Y finalmente la diferencia se tiene que sumar o restar a lbound o ubound.

Cualquier ayuda sería genial. :)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Básicamente módulo es la operación que estás buscando. Solo que lo está haciendo un poco más complicado, ya que también desea admitir números negativos, por lo que se debe agregar un poco de "rotación" del resultado del módulo a la "fórmula".

Esta función a continuación debería hacer el truco:

 function keepIndexInsideRange(index, lbound, ubound) { var range = Math.abs(ubound - lbound); var result = index % range; if (lbound < 0 && index > ubound) { result = -(range - result); } return result; } console.log('should return 0', keepIndexInsideRange(10, 0, 10)); // OK console.log('should return 1', keepIndexInsideRange(11, 0, 10)); // OK console.log('should return 0', keepIndexInsideRange(-10, -10, 0)); // OK console.log('should return -1', keepIndexInsideRange(-11, -10, 0)); // OK console.log('should return -9', keepIndexInsideRange(1, -10, 0)); // OK console.log('should return -4', keepIndexInsideRange(16, -5, 15)); // OK console.log('should return 6', keepIndexInsideRange(26, 5, 15)); // OK

Puedes jugar con él aquí https://stackblitz.com/edit/typescript-lxw3ai?file=index.ts (solo expande la consola en el lado derecho de la pantalla).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda