地獄のJavaScript (Symbolic JavaScript)

jsdo.it に投稿してみた http://jsdo.it/uupaa/hellsjs

誰かうまいこと、a〜zをつくりだしてほしいんだよ。

uu.ready("window", function(uu, doc) {
  uu.mix(window, uu);
  uu.config.log.rollup = 1000; // logロールアップ回避

  log('-1 = @',   ~[] );  
  log('0  = @',   +[] ); // or -[]
  log('1  = @',  -~[] ); // or +!+[] 
  log('2  = @',  -~[] << -~[] ); // 1<<1
  log('3  = @',  -~[]  + -~[] + -~[] ); // 1+1+1
  log('4  = @',  -~[] << -~[] + -~[] ); // 1<<1+1
  log('5  = @', (-~[] << -~[] + -~[]) +
                                -~[] ); // (1<<1+1)+1
  log('6  = @', (-~[]  + -~[] + -~[]) <<
                                -~[] ); // (1+1+1)<<1
  log('7  = @', ((-~[] + -~[]) <<
                 (-~[] + -~[])) -
                         -~[] );   // (1+1)<<(1+1)-1
  log('8  = @', ((-~[] + -~[]) <<
                 (-~[] + -~[])) ); // (1+1)<<(1+1)
  log('9  = @', ((-~[] + -~[]) <<
                 (-~[] + -~[])) +
                         -~[] );   // (1+1)<<(1+1)+1
  log('-2147483648 = @',   ~[] << ~[]  );
  log('2147483647  = @', ~(~[] << ~[]) );

  log('true  = @', !![] ); // or  !+[]
  log('false = @',  ![] ); // or !!+[]
  
  log('"t"   = @', (!![]+"")[    +[]  ] );  
  log('"r"   = @', (!![]+"")[   -~[]  ] );  
  log('"u"   = @', (!![]+"")[  (-~[]) + (-~[]) ] );  
  log('"e"   = @', (!![]+"")[  (-~[]) + (-~[]) +
                                        (-~[]) ] );
  log('"f"   = @', (![]+"")[   +[]  ] );  
  log('"a"   = @', (![]+"")[  -~[]  ] );  
  log('"l"   = @', (![]+"")[ (-~[]) + (-~[]) ] );  
  log('"s"   = @', (![]+"")[ (-~[]) + (-~[]) +
                                      (-~[]) ] );
  log('"e"   = @', (![]+"")[ (-~[]) + (-~[]) +
                             (-~[]) + (-~[]) ] );

});