Discussion on: Daily Challenge #29 - Xs and Os

nishu1343 profile image

Bro, nice solution .cud u explain me what is going inside the reduce. And im not able to reproduce it.

willsmart profile image

It's working for me in chrome just now. Try wrapping the output line in a console.log if you're outside a REPL

In the reduce acc is the accumulator, keeping a sum of values as they come up. The reduce returns the sum at the end.
Each c is a character from the string (...str is an array of the chars from str)
c == 'x' || c == 'X' is obv a boolean. The code uses the fact that in JS Number(true) == 1 and Number(false) == 0, so it's a shorter way of saying:

XO = str => 
    (acc, c) => acc + (c == 'x' || c == 'X' ? 1 : 0) - (c == 'o' || c == 'O' ? 1 : 0),
  ) == 0;

So each x adds one to the sum, and each o subtracts one. If the sum is zero there are the same number of x's as o's

Thread Thread
nishu1343 profile image

Cool.its working😃