graph_cieletoiles.py

Created by schraf

Created on September 22, 2018

831 Bytes

C’est une belle soirée et le ciel est rempli d’étoiles. Plus précisément, il y a en moyenne 1% d’étoiles et parmi ces étoiles 1% sont rouges (les autres sont bleues). Ce qui donne par exemple :

Visuel n°1

Comme vous pouvez le constater, il est difficile de repérer les étoiles rouges (vos préférées !). Vous décidez de programmer en Python votre télescope pour qu’il les repère à votre place :


Visuel n°2

Plus précisément :

  • Créez une fonction nuit sans paramètre qui permet de créer le ciel noir avec 1% d’étoiles dont 1% seront rouges. Ainsi, en lançant nuit() on obtiendra un visuel ressemblant au n°1
  • Créez ensuite une fonction scan sans paramètre qui appellera nuit puis, autour de chaque étoile rouge, ajoutera 4 pixels blancs comme sur le visuel ci-dessous :


Visuel n°3

Remarque : On ne tiendra pas compte du fait qu’a priori mettre 4 pixels blancs peut cacher une autre étoile.


from kandinsky import *
from random import *

def nuit():
  for x in range(320):
    for y in range(240):
      c=0 # Noir color(0,0,0)
      if random()<0.01: # 1% de chance
        c=13204 # Bleu color(55,113,162)
        if random()<0.01: # 1% du 1%
          c=63488 # Rouge color(255,0,0)
      set_pixel(x,y,c)
      
def scan():
  nuit()
  for x in range(320):
    for y in range(240):
      if get_pixel(x,y)==63488:
        set_pixel(x-1, y-1, 65535) # Blanc
        set_pixel(x+1, y+1, 65535)
        set_pixel(x+1, y-1, 65535)
        set_pixel(x-1, y+1, 65535)  

# Version pour les forts en maths

def scan2():
  nuit()
  for p in range(320*240):
    if get_pixel(p%320,p//320)==63488:
      for n in range(0,5):
        set_pixel(p%320+2*(n%2)-1,p//320+2*((n//2)%2)-1, 65535)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.