Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

flib

By: phillip1882 on Jul 13th, 2012  |  syntax: Python  |  size: 1.56 KB  |  views: 39  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import random
  2. def FLIBgen():
  3.    size = random.randint(2,26)
  4.    count = 0
  5.    FLIB = ""
  6.    while count < size:
  7.       FLIB = FLIB +(str(random.randint(0,1)) +chr(random.randint(65,65+size-1))+
  8.       str(random.randint(0,1)) +chr(random.randint(65,65+size-1)) )
  9.       count += 1
  10.    return FLIB
  11.  
  12. def execution(flib,inputval):
  13.    state = "A"
  14.    outputval = ""
  15.    count = 0
  16.    while count < len(inputval):
  17.       outputval =outputval +flib[(ord(state) -65) *4 +2*int(inputval[count])]
  18.       state = flib[(ord(state) -65) *4 +2*int(inputval[count]) +1]
  19.       count += 1
  20.    return outputval
  21.  
  22. def mutation(flib):
  23.    index = random.randint(0,len(flib)-1)
  24.    if index&1 == 1:
  25.       statenum = int(len(flib)/4)
  26.       state = random.randint(0,statenum-1)
  27.       flib = flib[:index] +chr(state+65) +flib[index+1:]
  28.    else:
  29.       state = str(random.randint(0,1))
  30.       flib = flib[:index] +state +flib[index+1:]
  31.    return flib
  32.  
  33. def crossover(flib1, flib2):
  34.    #this could be better; currently appends two flibs, random length
  35.    size1 = len(flib1)
  36.    size2 = len(flib2)
  37.    crossize1 = random.randint(0,size1-1)
  38.    crosspos1 = random.randint(0,size1-crossize1-1)  
  39.    crossize2 = random.randint(0,size2-1)
  40.    crosspos2 = random.randint(0,size2-crossize2-1)
  41.    newflib = flib1[crosspos1:crosspos1+crossize1]+flib2[crosspos2:crosspos2+crossize2]
  42.    return newflib
  43.    
  44. def score(inputval,outputval):
  45.    value1 = int(inputval,2)
  46.    value2 = int(outputval,2)>>1
  47.    size = len(inputval)
  48.    result = bin(value1^value2^(1<<size)).count('0')-1
  49.    return result/size