Advertisement
Guest User

JavaScript shuffle visualizer (jQuery version)

a guest
Aug 28th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************ CoffeeScript source: ************
  2. deckSize = 52
  3. deck = [0...deckSize]
  4.  
  5. rand = (min = 0, max = 51) ->
  6.   Math.floor(Math.random() * (max - min + 1)) + min
  7.  
  8. swap = (a, b) ->
  9.   [deck[a], deck[b]] = [deck[b], deck[a]]
  10.  
  11. testCount = 52
  12. test = (deck) ->
  13.     deck = [0...deckSize]
  14.     $('<table>').appendTo 'body'
  15.     for [1..testCount]
  16.         do shuffle    
  17.         for i in [0...deckSize]
  18.             if deck.indexOf(i) is -1 then throw "#{i} is not in the deck"
  19.             if deck.length isnt 52 then throw "deck length is #{deck.length}; should be 52"  
  20.         plot deck
  21.        
  22. plot = (deck) ->
  23.     tr = $ '<tr>'    
  24.     for i in [0...deck.length]
  25.         bg = 5 * deck[i] % 256
  26.         tr.append """
  27.             <td style='background-color:rgb(#{bg},#{bg},#{bg});'>
  28.                 &nbsp;
  29.             </td>"""
  30.     tr.appendTo 'table'
  31.    
  32. $ () ->
  33.     test deck
  34. *********************************************/
  35. //Usage:
  36. //1. Include jQuery
  37. //2. Declare your shuffle() function globally
  38. var deck, deckSize, plot, rand, swap, test, testCount, _i, _results;
  39.  
  40. deckSize = 52;
  41.  
  42. deck = (function() {
  43.   _results = [];
  44.   for (var _i = 0; 0 <= deckSize ? _i < deckSize : _i > deckSize; 0 <= deckSize ? _i++ : _i--){ _results.push(_i); }
  45.   return _results;
  46. }).apply(this);
  47.  
  48. rand = function(min, max) {
  49.   if (min == null) min = 0;
  50.   if (max == null) max = 51;
  51.   return Math.floor(Math.random() * (max - min + 1)) + min;
  52. };
  53.  
  54. swap = function(a, b) {
  55.   var _ref;
  56.   return _ref = [deck[b], deck[a]], deck[a] = _ref[0], deck[b] = _ref[1], _ref;
  57. };
  58.  
  59. testCount = 52;
  60.  
  61. test = function(deck) {
  62.   var i, _j, _k, _l, _results1, _results2;
  63.   deck = (function() {
  64.     _results1 = [];
  65.     for (var _j = 0; 0 <= deckSize ? _j < deckSize : _j > deckSize; 0 <= deckSize ? _j++ : _j--){ _results1.push(_j); }
  66.     return _results1;
  67.   }).apply(this);
  68.   $('<table>').appendTo('body');
  69.   _results2 = [];
  70.   for (_k = 1; 1 <= testCount ? _k <= testCount : _k >= testCount; 1 <= testCount ? _k++ : _k--) {
  71.     shuffle();
  72.     for (i = _l = 0; 0 <= deckSize ? _l < deckSize : _l > deckSize; i = 0 <= deckSize ? ++_l : --_l) {
  73.       if (deck.indexOf(i) === -1) throw "" + i + " is not in the deck";
  74.       if (deck.length !== 52) {
  75.         throw "deck length is " + deck.length + "; should be 52";
  76.       }
  77.     }
  78.     _results2.push(plot(deck));
  79.   }
  80.   return _results2;
  81. };
  82.  
  83. plot = function(deck) {
  84.   var bg, i, tr, _j, _ref;
  85.   tr = $('<tr>');
  86.   for (i = _j = 0, _ref = deck.length; 0 <= _ref ? _j < _ref : _j > _ref; i = 0 <= _ref ? ++_j : --_j) {
  87.     bg = 5 * deck[i] % 256;
  88.     tr.append("<td style='background-color:rgb(" + bg + "," + bg + "," + bg + ");'>\n    &nbsp;\n</td>");
  89.   }
  90.   return tr.appendTo('table');
  91. };
  92.  
  93. $(function() {
  94.   return test(deck);
  95. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement