Ne serait-il pas amusant de faire de la notation N-aire une image en échelle de gris? ?? ??
import numpy as np
import math
from tqdm import tqdm
from PIL import Image
Convertir x en k-chiffres N-aire et sortir comme numpy.array (ex. x=10,n=2,k=8 → 00001010)
def int__n(x,n,k):
if x>(n**k-1):
# print("x over maximum\n","x=",x," n**k-1=",n**k-1)
# print("n=",n," k=",k)
return np.full(k,n-1)
else:
a = x%(n**(k-1))
b = x//(n**(k-1))
if k==1:
return np.array([b])
else:
v = int__n(a,n,k-1)
return np.insert(v,0,b,axis=0)
Remplacez int__n un nombre naturel inférieur ou égal à k et combinez
def mk_matrix(k,base): # k:Base de taille:base
c = int(math.log(k,base)+2)
m = np.full((0,c),0)
for i in range(k):
v = int__n(i+1,base,c)
m = np.insert(m,i,v,axis=0)
return m
Conversion de numpy.array en PIL.Image (création d'image)
def mk_img(x,base):
M = np.uint8((255/(base-1)*((base-1)-mk_matrix(x,base))))
# Image.fromarray(M).convert("L").resize((x,x)).show()
img = Image.fromarray(M).convert("L").resize((x,x))
img.save("base{base}_for_{x}.png ".format(base=base,x=x))
img.resize((500,500)).save("base{base}_for_{x}_resized_500x500.png ".format(base=base,x=x))
Créer des images de 2 à 20 base
for n in tqdm(range(2,21)):
mk_img(2000,n)
Binaire Système à cinq aires 13-aire 20-aire
Eh bien, je savais que ce n'était pas particulièrement amusant. Je me demande si c'est devenu une pratique pour PIL et numpy ...