Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import *
- def mmod(a, b):
- return a % b;
- def getlinechars(o=False):
- c,k=2**31-1,1
- if k>=0:
- c=[53,o and 99 or 29,o and 509 or 21,31,32,c,c][k]
- return c
- na = 21;
- pokemons_in_team = [];
- 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"]
- mrandmax = 2147483647;
- mrand = 0;
- mfmax = 93;
- nn = 78;
- def mround(f):
- d = mmod(abs(f), 1)
- return (mfloor(abs(f))+(d>=.5))*(1-2*(f<0))
- def mfloor(f):
- return round(f)-(round(f)>f)
- def mceil(f):
- return round(f)+(round(f)<f)
- def mseed(s):
- global mrand
- mrand=mmod(s,mrandmax)
- def mrandom():
- mseed(mrand*16807)
- return float(mrand/mrandmax)
- def muniform(mini,maxi):
- return mrandom()*(maxi-mini)+mini
- def mrandint(mini,maxi):
- return mround(muniform(mceil(mini),mfloor(maxi)))
- def f2mf(f):
- return mround(float(f * 93))
- def mf2f(n):
- return float(n / 93)
- def mbit(a,b):
- return mmod((a//(2**b)),2)
- def getattack(pokemon_id,pts):
- global pkt
- mseed(42)
- for k in range(pokemon_id + 1):
- mrandom()
- a = mrandint(1,mrandmax);
- for j in range(na):
- if mbit(a,j)!=0:
- pkt[j]+=pts
- def i2c(k):
- return chr(k+33)
- def c2i(c):
- return ord(c)-33
- def clean():
- global pokemons_in_team
- sum_of_priorities = 0;
- s = 0;
- # Calcule la somme des priorités.
- for current_pokemon in pokemons_in_team:
- sum_of_priorities += current_pokemon[1];
- for current_pokemon in pokemons_in_team:
- #
- current_pokemon[2] = f2mf(current_pokemon[1]/(sum_of_priorities or 1))
- s += current_pokemon[2]
- # Check si on fait du sale.
- if(current_pokemon[2] <= 0):
- pokemons_in_team.remove(current_pokemon)
- return clean()
- return s
- def pk(pokemon_id, priority = 1, d=2):
- global pkt, pokemons_in_team
- pokemon_id -= 1 # Obtenir id dans tableau (1-94 transformé en 0-93)
- if pokemon_id >= 0 and pokemon_id < len(lnm): # Check si id valide
- new = True
- for k in range(len(pokemons_in_team)):
- if pokemons_in_team[k][0] == pokemon_id: # Check si pokemon déjà rentré
- new = False;
- pokemons_in_team[k][1] = max(priority, 0);
- if new and len(pokemons_in_team) < 10: # Si nouveau et pas d'autre pkm dans l'équipe
- pokemons_in_team.append([pokemon_id,max(priority, 0),0]) # Ajout dans l'équipe
- ptt = clean();
- pkt = [0] * 21;
- total_score = 0;
- input_string = "";
- for current_pokemon in pokemons_in_team:
- getattack(current_pokemon[0], current_pokemon[2]/ptt)
- input_string = i2c(current_pokemon[0]) + input_string + i2c(current_pokemon[2])
- for k in pkt:
- if(k):
- total_score += log(e+k*len(pokemons_in_team))
- return float(total_score), input_string
- def setst(input_string):
- score = 0;
- pokemons_in_team[:] = [];
- num_pokemon = len(input_string) // 2;
- for k in range(num_pokemon):
- score = pk(
- c2i(
- input_string[num_pokemon - 1 - k]
- ) + 1,
- c2i(
- input_string[num_pokemon + k + len(input_string) % 2]
- ),
- k + 1 >= num_pokemon
- )
- return score
- 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