Advertisement
Guest User

Python - déobf

a guest
Nov 9th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.10 KB | None | 0 0
  1. from math import *
  2.  
  3. def mmod(a, b):
  4.   return a % b;
  5. def getlinechars(o=False):
  6.   c,k=2**31-1,1
  7.   if k>=0:
  8.     c=[53,o and 99 or 29,o and 509 or 21,31,32,c,c][k]
  9.   return c
  10. na = 21;
  11. pokemons_in_team = [];
  12. lnm = ["Bulbizarre","Herbizarre","Florizarre","Salameche","Reptincel","Dracaufeu","Carapuce","Carabaffe","Tortank","Chenipan","Chrysacier","Papilusion","Aspicot","Coconfort","Dardargnan","Roucool","Roucoups","Roucarnage","Rattata","Rattatac","Piafabec","Rapasdepic","Abo","Arbok","Pikachu","Raichu","Sabelette","Sablaireau","Nidoran F","Nidorina","Nidoqueen","Nidoran M","Nidorino","Nidoking","Melofee","Melodelfe","Goupix","Feunard","Rondoudou","Grodoudou","Nosferapti","Nosferalto","Mystherbe","Ortide","Rafflesia","Paras","Parasect","Mimitoss","Aeromite","Taupiqueur","Triopikeur","Miaouss","Persian","Psykokwak","Akwakwak","Ferosinge","Colossinge","Caninos","Arcanin","Ptitard","Tetarte","Tartard","Abra","Kadabra","Alakazam","Machoc","Machopeur","Mackogneur","Chetiflor","Boustiflor","Empiflor","Tentacool","Tentacruel","Racaillou","Gravalanch","Grolem","Ponyta","Galopa","Ramoloss","Flagadoss","Magneti","Magneton","Canarticho","Doduo","Dodrio","Otaria","Lamantine","Tadmorv","Grotadmorv","Kokiyas","Crustabri","Fantominus","Spectrum","Ectoplasma"]
  13. mrandmax = 2147483647;
  14. mrand = 0;
  15. mfmax = 93;
  16. nn = 78;
  17.  
  18. def mround(f):
  19.   d = mmod(abs(f), 1)
  20.   return (mfloor(abs(f))+(d>=.5))*(1-2*(f<0))
  21.  
  22. def mfloor(f):
  23.   return round(f)-(round(f)>f)
  24.  
  25. def mceil(f):
  26.   return round(f)+(round(f)<f)
  27.  
  28. def mseed(s):
  29.   global mrand
  30.   mrand=mmod(s,mrandmax)
  31.  
  32. def mrandom():
  33.   mseed(mrand*16807)
  34.   return float(mrand/mrandmax)
  35.  
  36. def muniform(mini,maxi):
  37.   return mrandom()*(maxi-mini)+mini
  38.  
  39. def mrandint(mini,maxi):
  40.   return mround(muniform(mceil(mini),mfloor(maxi)))
  41.  
  42. def f2mf(f):
  43.   return mround(float(f * 93))
  44.  
  45. def mf2f(n):
  46.   return float(n / 93)
  47.  
  48. def mbit(a,b):
  49.   return mmod((a//(2**b)),2)
  50.  
  51. def getattack(pokemon_id,pts):
  52.   global pkt
  53.   mseed(42)
  54.   for k in range(pokemon_id + 1):
  55.     mrandom()
  56.   a = mrandint(1,mrandmax);
  57.   for j in range(na):
  58.     if mbit(a,j)!=0:
  59.       pkt[j]+=pts
  60.  
  61. def i2c(k):
  62.   return chr(k+33)
  63.  
  64. def c2i(c):
  65.   return ord(c)-33
  66.  
  67. def clean():
  68.   global pokemons_in_team
  69.   sum_of_priorities = 0;
  70.   s = 0;
  71.  
  72.   # Calcule la somme des priorités.
  73.   for current_pokemon in pokemons_in_team:
  74.     sum_of_priorities += current_pokemon[1];
  75.  
  76.  
  77.   for current_pokemon in pokemons_in_team:
  78.     #
  79.     current_pokemon[2] = f2mf(current_pokemon[1]/(sum_of_priorities or 1))
  80.     s += current_pokemon[2]
  81.    
  82.     # Check si on fait du sale.
  83.     if(current_pokemon[2] <= 0):
  84.       pokemons_in_team.remove(current_pokemon)
  85.       return clean()
  86.   return s
  87.  
  88. def pk(pokemon_id, priority = 1, d=2):
  89.   global pkt, pokemons_in_team
  90.   pokemon_id -= 1 # Obtenir id dans tableau (1-94 transformé en 0-93)
  91.   if pokemon_id >= 0 and pokemon_id < len(lnm): # Check si id valide
  92.     new = True
  93.     for k in range(len(pokemons_in_team)):
  94.       if pokemons_in_team[k][0] == pokemon_id: # Check si pokemon déjà rentré
  95.         new = False;
  96.         pokemons_in_team[k][1] = max(priority, 0);
  97.     if new and len(pokemons_in_team) < 10: # Si nouveau et pas d'autre pkm dans l'équipe
  98.       pokemons_in_team.append([pokemon_id,max(priority, 0),0]) # Ajout dans l'équipe
  99.  
  100.  
  101.   ptt = clean();
  102.   pkt = [0] * 21;
  103.   total_score = 0;
  104.   input_string = "";
  105.   for current_pokemon in pokemons_in_team:
  106.     getattack(current_pokemon[0], current_pokemon[2]/ptt)
  107.     input_string = i2c(current_pokemon[0]) + input_string + i2c(current_pokemon[2])
  108.   for k in pkt:
  109.     if(k):
  110.       total_score += log(e+k*len(pokemons_in_team))
  111.   return float(total_score), input_string
  112.  
  113. def setst(input_string):
  114.   score = 0;
  115.   pokemons_in_team[:] = [];
  116.   num_pokemon = len(input_string) // 2;
  117.   for k in range(num_pokemon):
  118.     score = pk(
  119.         c2i(
  120.             input_string[num_pokemon - 1 - k]
  121.         ) + 1,
  122.         c2i(
  123.             input_string[num_pokemon + k + len(input_string) % 2]
  124.         ),
  125.         k + 1 >= num_pokemon
  126.     )
  127.   return score
  128.  
  129. print("pk(n,p) pour rajouter\nle Pokemon n a ta main\navec p points d'attaque.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement