Guest User

get_scores_gmw44

a guest
Sep 30th, 2014
221
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** get_scores_gmw44() : void
  2.   *
  3.   * Bereken de scores van alle <Deelnemer>s aan de loterij door hun buffers te vergelijken.
  4.   * Vereist een instance van <Bjarno> die de variabele buffer bevat.
  5.   * Vereist dat elke <Deelnemer> de variabelen buffer en naam bevat.
  6.   * Stopt de scores van de deelnemers in het highscore-systeem.
  7.   * Na het uitvoeren bevat highscore_name(0) de winnaar, tenzij gelijkspel. (gebruik highscore_show() voor gemak)
  8.   *
  9.   */
  10. var value, popcount;
  11.  
  12. with (Deelnemer) {
  13.     score = 0;
  14.     buffer_set_pos(Bjarno.buffer, 0);
  15.    
  16.     repeat (buffer_get_length(Bjarno.buffer)) {
  17.         //hammingafstand(A,B) is gelijk aan popcount(A xor B)
  18.        
  19.         value = buffer_read_uint8(Bjarno.buffer);
  20.        
  21.         if (!buffer_at_end(buffer))
  22.             value ^= buffer_read_uint8(buffer);
  23.        
  24.         popcount = (value>>7) + ((value>>6)&1) + ((value>>5)&1) + ((value>>4)&1) + ((value>>3)&1) + ((value>>2)&1) + ((value>>1)&1) + (value&1);
  25.         score += popcount;
  26.     }
  27.    
  28.     highscore_add(Deelnemer.naam, score);
  29. }
RAW Paste Data