For fun I asked a few friends for ideas on a random color generator in a single line of javascript. You know, these guys: #0afec0 , #c9f2d0 , #9b923e .

Here’s what we came up in about two minutes (in chronological order)…

1 2 3 '#' + ( function co ( lor ){ return ( lor += [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ][ Math . floor ( Math . random () * 16 )]) && ( lor . length == 6 ) ? lor : co ( lor ); })( '' );

Similar recursive technique, but using a string instead of an array and aliasing the Math object:

1 2 ( function ( m , s , c ){ return ( c ? arguments . callee ( m , s , c - 1 ) : '#' ) + s [ m . floor ( m . random () * s . length )]})( Math , '0123456789ABCDEF' , 5 )

Using a named function expression instead of arguments.callee.

1 2 '#' + ( function lol ( m , s , c ){ return s [ m . floor ( m . random () * s . length )] + ( c && lol ( m , s , c - 1 ));})( Math , '0123456789ABCDEF' , 4 )

If we assume JavaScript 1.6, then we could just use Array.map():

1 2 '#' + '0123456789abcdef' . split ( '' ). map ( function ( v , i , a ){ return i > 5 ? null : a [ Math . floor ( Math . random () * 16 )] }). join ( '' );

But then, the magic of Math struck (16777215 == ffffff in decimal) :

1 '#' + Math . floor ( Math . random () * 16777215 ). toString ( 16 );

Thx to ben alman, nlogax, and temp01 for their smarts.