fork(1) download
  1. process.stdin.resume();
  2. process.stdin.setEncoding('utf8');
  3.  
  4. // your code goes here
  5.  
  6. function BitArray() {
  7. this.iarray = [];
  8. }
  9.  
  10. BitArray.prototype.bit = function (index, bit) {
  11. var shift_count = index & 31,
  12. array_index = index >> 5;
  13.  
  14. if (arguments.length == 1) {
  15. return (this.iarray[array_index] >> shift_count) & 1;
  16. }
  17.  
  18. var bitmask = 1 << shift_count;
  19.  
  20. if (bit)
  21. this.iarray[array_index] |= bitmask;
  22. else
  23. this.iarray[array_index] &= ~bitmask;
  24. }
  25.  
  26. BitArray.prototype.numofbits = function () {
  27. var len = this.iarray.length,
  28. num = 0;
  29. for (var i = 0; i < len; ++i) {
  30. num += 1;
  31. }
  32. return num;
  33. }
  34.  
  35. BitArray.prototype.numofbits = function () {
  36. var len = this.iarray.length,
  37. num = 0;
  38. for (var i = 0; i < len; ++i) {
  39. if (this.iarray[i])
  40. num += this.ut.numofbits(this.iarray[i]);
  41. }
  42. return num;
  43. }
  44.  
  45. BitArray.prototype.ut = {};
  46.  
  47. BitArray.prototype.ut.numofbits = function (bits) {
  48. bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
  49. bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
  50. bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
  51. bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
  52. return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
  53. }
  54.  
  55. //----
  56.  
  57. process.stdout.write("Hello, World!\n");
  58.  
  59. var obj = new BitArray();
  60.  
  61. obj.bit( 0, 1);
  62. obj.bit(100, 0);
  63. obj.bit(200, 1);
  64. obj.bit(300, 0);
  65. obj.bit(400, 1);
  66.  
  67. // obj(4, 1); /* このように、objを関数として使えるとイイよね */
  68.  
  69. var num = obj.numofbits();
  70.  
  71. process.stdout.write("num = " + num.toString());
  72.  
  73.  
Success #stdin #stdout 0.05s 11232KB
stdin
Standard input is empty
stdout
Hello, World!
num = 3