Hacker News new | past | comments | ask | show | jobs | submit login

Solution to the puzzle; took about 3 to code minutes after I found the thumbnails for the slideshow.

https://gist.github.com/789200




  c = c < 4 ? c + 1 : 0;
What is this line of code saying exactly.. ?


http://en.wikipedia.org/wiki/Ternary_operation

  if (c < 4) {
   c = c + 1;
  } else {
   c = 0;
  }


You could learn a couple of things just by looking the code of others. If you use jQuery you can see the source and find this kind of code in many places. Also:

    var x = a || b || (function(){ /* stuff here */ })()
or

    var a = b = b || {}


I like this slick way cycle thru a range of numbers:

c = c < 4 ? c + 1 : 0;


I tend to prefer c = (c + 1) % 4.

It's shorter (which matters for client-side code), and makes it more explicit what you're attempting to accomplish.


just a correction. The equivalent to the above is: c = (c + 1) % 5


I really regret not paying attention to maths at school. What exactly is the % doing there? What is the purpose of % normally?


% is the modulus operator. It's the remainder when you divide...so 0 % 4 == 0, 1 % 4 == 1, 2 % 4 == 2, 3 % 4 == 3, then 4 % 4 == 0 again. It's useful in that the result cycles through 0 <= x % n < n.


Agreed, that is definitely more clear.

Alternatively, increment with c++ and replace [c] with [c%4].




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: