地獄のJavaScript2

(ε・◇・)з 戦いはこれからだ!

http://jsdo.it/uupaa/hellsjs2 で動かせるよ

// forked from uupaa's
//   "地獄のJavaScript (Symbolic JavaScript)"
//   http://jsdo.it/uupaa/hellsjs

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

  // use: $=_-+~[]{}()*/<!\;"
  $         =  -~[];        // 1
  $$        =  $+$;         // 2
  $$$       =  $$+$;        // 3
  $$$$      =  $$$+$;       // 4
  $$$$$     =  $$$$+$;      // 5
  $$$$$$    =  $$$<<$;      // 6
  $$$$$$$   =  $$$$$$+$;    // 7
  $$$$$$$$  =  $$<<$$;      // 8
  $$$$$$$$$ =  $$$*$$$;     // 9
  _         =  +[];         // 0
  __        =  // "constructor"
               (""+{})[$$$$$] +  // c
               (""+{})[$] +      // o
               (""+$/_)[$] +     // n
               (""+![])[$$$] +   // s
               (""+!![])[_] +    // t
               (""+!![])[$] +    // r
               (""+[][[]])[_] +  // u
               (""+{})[$$$$$] +  // c
               (""+!![])[_] +    // t
               (""+{})[$] +      // o
               (""+!![])[$];     // r
  ___       =  // "return "
               (""+!![])[$] +    // r
               (""+!![])[$$$] +  // e
               (""+!![])[_] +    // t
               (""+[][[]])[_] +  // u
               (""+!![])[$] +    // r
               (""+$/_)[$] +     // n
               " ";
  ____      =  // "self"
               (""+![])[$$$] +   // s
               (""+!![])[$$$] +  // e
               (""+![])[$$] +    // l
               (""+![])[_];      // f
  _____     =  // "proto"
               (""+/ /[__])[$$$$$$$*$$] + // p
               (""+!![])[$] + // r
               (""+{})[$] + // o
               (""+!![])[_] + // t
               (""+{})[$]; // o
  ______    =  // "type"
               (""+!![])[_] + // t
               (""+$/_)[$$$$$$$] + // y
               (""+/ /[__])[$$$$$$$*$$] + // p
               (""+!![])[$$$]; // e

  $_        =  ""[__][__];       // new Function
  $$_       =  $_((___+____))(); // new Function("return self")() -> DOMWindow

/*
   8                = $$<<$$;
   9                = $$$$$$$$$;
   10               = $$$$$<<$;
   20               = $$$$$<<$$;
   new Function     =  "".constructor.constructor
  "function RegExp() { [native code] }"
                            25
                    =  / /[__];
  "function Number() { [native code] }"
                    =  (0)[__];
   undefined        =  [][0];
   true             =  !![]; // or  !+[]
   false            =   ![]; // or !!+[]
   NaN              =   -{}; // or   +{}
   Infinity         =  1/0;
  "[object Object]" =  (""+{})
  -1                =  ~[];
   0                =  +[]; // or -[] // or +""
  -2147483648       =  -1 << -1;
   2147483647       =  ~(-1 << -1);
 */
  log('"a"   = @', (""+![])[$] );
  log('"b"   = @', (""+{})[$$] );
  log('"c"   = @', (""+{})[$$$$$] );
  log('"d"   = @', (""+[][[]])[$$] );
  log('"e"   = @', (""+!![])[$$$] );
  log('"f"   = @', (""+![])[_] );
  log('"g"   = @', (""+/ /[__])[$$$$$*$$+$] ); // 11
  log('"i"   = @', (""+$/_)[$$$] );
  log('"j"   = @', (""+{})[$$$] );
  log('"l"   = @', (""+![])[$$] );
  log('"m"   = @', (""+(_)[__])[$$$$$*$$+$] ); // 11
  log('"n"   = @', (""+$/_)[$] );
  log('"o"   = @', (""+{})[$] );
  log('"p"   = @', (""+/ /[__])[$$$$$$$*$$] ); // 14
  log('"r"   = @', (""+!![])[$] );
  log('"s"   = @', (""+![])[$$$] );
  log('"t"   = @', (""+!![])[_] );
  log('"u"   = @', (""+[][[]])[_] );
  log('"v"   = @', (""+/ /[__])[$$$$$$*$$$$+$] ); // 25
  log('"x"   = @', (""+/ /[__])[$$$*$$$$+$] ); // 13
  log('"y"   = @', (""+$/_)[$$$$$$$] );
  log('"E"   = @', (""+/ /[__])[$$$*$$$$] ); // 12
  log('"I"   = @', (""+$/_)[_] );
  log('"N"   = @', (""+(+{}))[_] );
  log('"O"   = @', (""+{})[$$<<$$] ); // 8
  log('"R"   = @', (""+/ /[__])[$$$*$$$] ); // 9
});