Skip to content

Instantly share code, notes, and snippets.

@anabastos
Created March 17, 2017 19:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anabastos/4014c329a0852b7aa9062606e210a9ab to your computer and use it in GitHub Desktop.
Save anabastos/4014c329a0852b7aa9062606e210a9ab to your computer and use it in GitHub Desktop.
Desafio map -js4girls
//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]
// ]
@anabastos
Copy link
Author

matrix.map(linha => linha.map(coluna => coluna % 2 == 0 ? coluna * 2 : coluna ))

@theuves
Copy link

theuves commented Mar 18, 2017

@anabastos

Assim?

matrix.map(l => l.map(c => c * -~!(c % 2)))

@anabastos
Copy link
Author

@theuves Boa! Valeu.

@MarcoWorms
Copy link

@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))

@anabastos
Copy link
Author

@MarcoWorms valeu marco! ficou bem claro a sua solução!

@suissa
Copy link

suissa commented Mar 18, 2017

Concordo plenamente com o @MarcoWorms

@theuves
Copy link

theuves commented Mar 18, 2017

@MarcoWorms

Agradável.

Desconhecia este Ramda.

@MarcoWorms
Copy link

MarcoWorms commented Mar 18, 2017

@theuves ;) cara to usando pra caramba nos projetos da @pagarme, recomendo 👍

@angelorubin
Copy link

angelorubin commented Sep 16, 2018

matriz.flat().map( cv => cv % 2 == 0 ? cv * 2 : cv)

@neoandrevictor
Copy link

`

<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>
`

@neoandrevictor
Copy link

`

<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>
`

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