-
-
Save anabastos/4014c329a0852b7aa9062606e210a9ab to your computer and use it in GitHub Desktop.
//tendo uma matrix 4x4 multiplicar apenas os valores pares | |
var matrix = [ | |
[1, 11, 32], | |
[13, 14, 15], | |
[7, 6, 2] | |
] | |
//resultado esperado: | |
// [ | |
// [1, 11, 64], | |
// [13, 28, 15], | |
// [7, 12, 4] | |
// ] |
@theuves Boa! Valeu.
@theuves por mais 'hacky' que essa solução tenha ficado eu não acho bom escrevermos código assim pois a semântica é nula e pra quem estiver aprendendo cria mais 'nuvens' pra entender o que está acontecendo. Usar bit operators não deveria ser normal quando é possível criar código semântico que facilite o entendimento pras pessoas. Um dos motivos de eu estar usando ramda em todos os meus projeto atuais é que por mais que vc não entenda o que as funcoes do ramda fazem internamente, o código ainda fica extremamente legível.
Minha solução pra esse desafio (abusando do ramda) foi: https://goo.gl/cChKcs
const matrix = [
[76, 22, 83],
[31, 26, 73],
[32, 58, 44],
]
const isEven = pipe(
modulo(__, 2),
equals(0),
)
const doubleIfEven = ifElse(isEven, multiply(2), identity)
const matrixMapper = pipe(map, map)
const doubleMatrix = matrixMapper(doubleIfEven)
doubleMatrix(matrix)
sem ramda:
const matrix = [
[76, 22, 83],
[31, 26, 73],
[32, 58, 44],
]
const isEven = number =>
(number % 2) === 0
const doubleIfEven = number =>
isEven(number) ? number * 2 : number
matrix.map(lines => lines.map(doubleIfEven))
@MarcoWorms valeu marco! ficou bem claro a sua solução!
Concordo plenamente com o @MarcoWorms
matriz.flat().map( cv => cv % 2 == 0 ? cv * 2 : cv)
`
<title>Tendo uma matrix 4x4 dobrar apenas os valores pares</title> <script> function main(){
var matrix = [
[1, 11, 32],
[13, 14, 15],
[7, 6, 2]
];
for(i=0;i<matrix.length;i++){
for (j=0;j<matrix[i].length;j++){
if (matrix[i][j]%2==0){
matrix[i][j]=matrix[i][j]*2;
}
}
}
document.write(matrix);
}
</script>
`
`
<title>Tendo uma matrix 4x4 dobrar apenas os valores pares</title> <script> function main(){
var matrix = [
[1, 11, 32],
[13, 14, 15],
[7, 6, 2]
];
for(i=0;i<matrix.length;i++){
for (j=0;j<matrix[i].length;j++){
if (matrix[i][j]%2==0){
matrix[i][j]=matrix[i][j]*2;
}
}
}
document.write(matrix);
}
</script>
`
matrix.map(linha => linha.map(coluna => coluna % 2 == 0 ? coluna * 2 : coluna ))