Name Description Size Visibility
Écrire une fonction “adn” qui admet en paramètre une chaine de caractères et renvoie “Brin ADN” si les caractères sont uniquement des A, T, C et G ou “Pas ADN” si d’autres lettres sont présentes.
185 Bytes Public
Enoncé de l’exercice Visitez ma chaine YouTube
533 Bytes Public
1.83 KB Public
Alice découvre la Numworks et tombe au pays des…
5.23 KB Public
La fonction aff affiche du texte (txt) à la position (x,y), de taille t, de couleur fg (ex : (255,0,0) pour du rouge). Les 3 derniers paramètres sont optionnels et permettent d’ajouter une couleur de fond bg, d’avoir des traits verticaux (a=1,b=0), horizontaux (a=0,b=1), unis (a=0,b=0) ou carrés (a=1,b=1) Attention ! Le programme a besoin d’utiliser les pixels entre (0,0) et (8,17), il ne faut donc rien afficher dans cette zone ou alors la déplacer (lignes 6 et 12) Vous pouvez donner d’autres valeurs à a et b, voici un exemple avec le résultat obtenu : aff('Score',20, -5, 6, BL,GR,a=3,b=-2) aff('0123456789',20,85,3,RE,a=2,b=2) for i in range(26): aff(chr(97+i),25+10*i,132,1,BL,GR,-2,0) aff(chr(65+i),25+10*i,172+30*(i%2)-15,2,[BL,RE][i%2],a=-1,b=-2)
629 Bytes Public
651 Bytes Public
Calendrier 2022 Utilisez les flèches haut et bas pour naviguer dans le calendrier. Ma playlist Youtube consacrée à la NUMWORKS Explications du programme from kandinsky import draw_string, fill_rect from ion import keydown,KEY_UP,KEY_DOWN from time import sleep nbjMois = "303232332323" # 28 + nb de jours dans le mois (28+3 pour janv, 28 + 0 pour février etc.) jSem = "LMmJVSD" mois = "Janv,Fev, Mars,Avril,Mai,Juin,Juill,Aout,Sept,Oct,Nov,Dec".split(',') def aff(d): nb = 0 v = 5 # le 1/1/2022 etait un vendredi for i in range(d): v += int(nbjMois[i]) # on cherche le 1er du mois n°d v %= 7 while nb < 2: # Affichage de 2 mois m = d + nb for i,js in enumerate(jSem): # Ligne des jours de la semaine draw_string(js,10 + 30 * i, 5 + 110 * nb) l = 1 for j in range(28 + int(nbjMois[m])): # on parcourt tous les jours du mois pos = jSem.index(jSem[v]) # dans quelle colonne est ce jour de la semaine ? draw_string(str(j + 1),10 + 30 * pos, 5 + 110 * nb + 15 * l) v = (v + 1) % 7 if pos == 6: l += 1 # Si dimanche on passe à la ligne suivante draw_string(mois[m], 250, 110 * nb + 30) nb += 1 def eff(): fill_rect(0,0,320,222,(255,255,255)) sleep(.2) def key(): # attente touche while True: for (i, k) in enumerate([KEY_UP,KEY_DOWN]): if keydown(k): return 2 * i - 1 # renvoyer -1 ou +1 d = 0 while True: aff(d) t = key() d = (d + 2 * t) % 12 # on avance ou recule dans le calendrier eff()
1.01 KB Public
Ma playlist consacrée à la NUMWORKS
343 Bytes Public
Attention, à cause de la boucle infinie, ce script ne fonctionnera que sur votre calculatrice et pas dans l’émulateur. Appuyez sur la touche “Retour” pour arrêter le programme.
513 Bytes Public
Source : http://www.peda.com/grafeq/gallery.html Chrome : https://my.numworks.com/python/schraf/chrome Sphère : https://my.numworks.com/python/schraf/sphere Margarita : https://my.numworks.com/python/schraf/margarita Threesome : https://my.numworks.com/python/schraf/threesome The Big Swim : https://my.numworks.com/python/schraf/bigswim
207 Bytes Public
599 Bytes Public
247 Bytes Public
791 Bytes Public
393 Bytes Public
545 Bytes Public
379 Bytes Public
341 Bytes Public
293 Bytes Public
444 Bytes Public
700 Bytes Public
686 Bytes Public
465 Bytes Public
But de nos automates: Reconnaitre un langage Alphabet Σ : par exemple constitué de 2 lettres {a, b} Mots créés à partir de l’alphabet Σ : par exemples aaa, ababab, bbaaa, etc. Un automate va être un ensemble d’états (cercles) et de transitions (flèches) Un état initial (pour nous il n’y en aura qu’un seul et ce sera toujours le cercle de numéro “0”) et un ou plusieurs états finaux (cercles doubles) Un mot est accepté lorsque l’on arrive dans un état final sinon il est rejeté. Automate n°1 Cet automate accepte-t-il le mot “ba” ? Réponse : NON, car en partant de l’état 0, la lettre “b” nous amène au cercle 1 puis le “a” nous ramène à l’état 0. Or cet état n’est pas un état final (pas de cercle double comme pour le 1). Donc le mot est refusé. Cet automate accepte-t-il le mot “abbb” ? Réponse : OUI, le “a” nous amène au cercle 1 puis on y reste avec les 3 “b”. Intuitivement, quels mots reconnait cet automate ? Réponse : Que l’on soit en 0 ou en 1, la lettre “a” nous ramène en 0. Pour arriver en 1 il faudra donc que la dernière lettre soit obligatoirement un “b”. Inversement, il suffit que le mot se termine par un “b” pour arriver à l’état final 1. Cet automate reconnait tous les mots (écrits avec l’alphabet Σ = {a, b} qui se terminent par “b”) Automate n°2 Il ressemble beaucoup au précédent mais il ne reconnait pas du tout le même langage ! Cet automate accepte-t-il le mot “ba” ? Réponse : OUI Cet automate accepte-t-il le mot “aa” ? Réponse : NON Cet automate accepte-t-il le mot “abbaabb” ? Réponse : OUI Intuitivement, quels mots reconnait cet automate ? Réponse : Les mots qui contiennent un nombre impair de “a” On re
492 Bytes Public
Il faut avoir fait l’activité automate_n1.py avant de regarder celle-ci. Automate n°2 de l'activité n°1 Imaginons que l’alphabet de cet automate soit beaucoup plus grand (par exemple Σ correspond à toutes les lettres de l’alphabet). Dans ce cas il devient quasi impossible de dessiner toutes les flèches. Ce que nous voulons est donc ( Σ - a signifie “Toutes les lettres sauf le “a”) Pour cela nous allons tout simplement renseigner uniquement les transitions qui sont utiles et oublier toutes les autres (celles qui font rester sur place). Finalement, l’automate ci-dessus se réduit à a2 = [{"a":1},{"a":0}] Comment s’écrit la version simplifiée de l’automate n°1 de l’activité 1 ? Réécrire les 2 fonctions accepte et details de l’activité n°1 pour qu’elles acceptent ces automates simplifiés en paramètres.
514 Bytes Public
Inspiré par un commentaire de Numworks France Ce script utilise une technique que j’ai décrite ici Un autre exemple ici
1.28 KB Public
284 Bytes Public
Playlist NUMWORKS de ma chaine Youtube Version TikTok Version en JavaScript de Maxime Richard Vous pouvez effacer la dernière ligne “sleep(0.01)” pour que l’animation aille beaucoup plus vite sur votre calculatrice.
1.37 KB Public
1.05 KB Public
Nombre de façons d’écrire 5 paires de parenthèses bien formées.
395 Bytes Public
Traduction en Python du script BASIC ci-dessous (“Creative Graphics on the BBC Microcomputer” John Cownie): Variation from turtle import * from math import * from kandinsky import fill_rect speed(0) hideturtle() fill_rect(0,0,320,222,(0,)*3) def s(a): return 120 * sin(a / 10) for a in range(1258): x, y = s(a), cos(a / 10) * s(a * .95) c = int((x * x + y * y) / 2200) pensize(7 - c) color(255 - 30 * c, 0, 0) goto(x,y)
252 Bytes Public
902 Bytes Public
1.35 KB Public
Source : http://www.peda.com/grafeq/gallery.html Chrome : https://my.numworks.com/python/schraf/chrome Sphère : https://my.numworks.com/python/schraf/sphere Margarita : https://my.numworks.com/python/schraf/margarita Threesome : https://my.numworks.com/python/schraf/threesome Arachnid : https://my.numworks.com/python/schraf/arachnid
238 Bytes Public
251 Bytes Public
461 Bytes Public
Autres exemples de tracés binaires ici
572 Bytes Public
Représentation binaire des puissances 1, 2 et 3 des entiers entre 0 et 160. On bas de l’écran on lit 1, 10, 11, 100… (1 = rectangle noir, 0 = rectangle blanc) qui correspondent aux entiers 1, 2, 3, 4… Au milieu de l’écran on lit 1, 100, 1001, 10000… qui donnent 1, 4, 9, 16… Et en haut les puissances 3 des entiers.
206 Bytes Public
Représentation binaire des 320 premiers termes de la suite de Fibonacci. Remarques : 1 & n permet de récupérer le bit unité, ce sera “1” si le nombre est impair et “0” sinon. n » 1 est une autre façon de diviser un entier par 2 sans tenir compte des décimales. Version avec la bibliothèque PIL : from PIL import Image, ImageDraw source = Image.new("RGB", (700, 700), color = "white") draw = ImageDraw.Draw(source) x, m = 0, 700 f = [0, 1] for i in range(m): if i < 2: n = i else: f = f[1:] + [sum(f)] n = f[1] j = 0 while n > 0: if 1 & n: draw.point((x, m - j), fill = 'black') j += 1 n >>= 1 x += 1 source.show()
240 Bytes Public
298 Bytes Public
155 Bytes Public
301 Bytes Public
196 Bytes Public
2.65 KB Public
Petits jeux inspirés des épreuves de Blanche dans Fort Boyard. COMBINAISON Vous devez reconstituer une combinaison de 5 balles bleues ou blanches. Vous disposez de 4 essais en niveau 1 et de 3 en niveau 2. Après chaque essai, le nombre de carrés bleus correctement positionnés est indiqué. STOP CHUTE Appuyez sur EXE pour lancer le jeu. Après un temps aléatoire, un carré bleu va apparaitre dans une des 5 cases. Vous devez appuyer sur la touche correspondante de votre calculatrice (1,2,3,+ ou -) dans les 4 dixièmes de seconde (en niveau 1) ou 3 dixièmes de seconde (au niveau 2). Vous avez 3 essais. SOUFFLE Un temps en secondes va s’afficher. Appuyez sur EXE puis comptez ce nombre de secondes dans votre tête et pressez sur la touche +. Le carré bleu se déplace alors vers le carré rouge et vous indique si vous êtes trop loin du temps ou si vous avez gagné. Vous avez 3 essais. Le niveau 1 vous donne un droit à l’erreur de 0,2s et le niveau 2 de 0,1s. from kandinsky import * from random import choice, randint from ion import * from time import sleep,monotonic BL, WH, RO = (80,176,216), (248,252,248), (232,120,88) # Etiquettes (Labels) pour le visuel LAB = "123+-" # Les touches autorisées TOUCHES = [KEY_ONE,KEY_TWO,KEY_THREE,KEY_PLUS,KEY_MINUS] NBJEUX = 3 # Phrases de Blanche PH = ["VOUS AVEZ PERDU !","BRAVO !","RATE !"] # Liste des clés cles = [] pal = [[255,255,255],[169,233,249],...,[100,123,137]] im = "A56B3...A2CB" # --- # Affichage des clés en bleu avec fond orange si perdu def aff_cles(): for i in range(len(cles)): draw_string(chr(254), 10+12*i,200,BL if cles[i] else RO) # --- # Voir vidéo sur l'utilisation de Gimp pour créer la chaine "im" def visage(): r,i = 0,0 while r < len(im): s = im[r] n = "" r += 1 while r < len(im) and "9" >= im[r] >= "0"
5.04 KB Public
Le script d’origine avec les explications est ici : https://my.numworks.com/python/schraf/blanche Ajout d’un 4e jeu nommé “CARRE” et basé sur le jeu CERCLE de Blanche CARRE Un carré de taille variable s’affiche ainsi qu’une jauge à gauche. Appuyez sur + ou - pour définir le niveau de la force que vous voulez appliquer au lancer de votre balle. Appuyez ensuite sur EXE pour la lancer. Celle-ci doit s’arrêter dans la zone orange, si ce n’est pas le cas vous avez 3 essais pour réussir à trouver la bonne force. Remarque : Il est possible que la balle fasse plusieurs tours, ce n’est pas grave, il faut juste qu’elle s’arrête au bon endroit ! Description du code du jeu n°4 # Le carré est numéroté de 0 (en haut à gauche) # et les n° font le tour dans le sens inverse # des aiguilles d'une montre # pos_carre cherche les coord (x,y) suivant le n° i def pos_carre(i, cote): i %= 4 * cote if i <= cote: return 0,i if i <= 2 * cote: return i - cote, cote if i <= 3 * cote: return cote, 3 * cote - i return 4 * cote - i, 0 # Dessin d'une balle pour le jeu 4 def boule4(c,cote,i): x, y = pos_carre(i, cote) boule(0, c, 115 - 11 * cote + 22 * x, 119 - 11 * cote + 22 * y) def jeu4(niv): essai = 0 # Facile = taille 4 ou 5 et Difficile = taille 3 à 5 cote = randint(niv - 1,4) # La force que le joueur doit trouver force = randint(3,16) titre(0, "CARRE") while essai < 3: # Dessin du carré for i in range(4 * cote): boule4(RO if i > 3 * cote else WH, cote, i) # La balle bleue à la position 0 boule4(BL, cote, 0) # Dessin de la jauge à gauche fill_rect(15,80,20,102,BL) fill_rect(16,81,18,100,WH) draw_string("+",20,60,BL) draw_string("-",20,185,BL) # Le joueur choisit la force t,h = 0,0 while t != 2:
6.34 KB Public
401 Bytes Public
Modèle d’origine
922 Bytes Public
Toutes les explications en vidéo ici À la maternelle, l’instituteur a donné des bonbons aux enfants. Le nombre de bonbons que chaque enfant reçoit n’est pas toujours le même. Voici par exemple une distribution possible : [10,2,8,22,16,4,10,6,14,20] L’instituteur a demandé aux enfants de faire un cercle et de jouer à un jeu : chaque enfant donne la moitié de ses bonbons à l’enfant sur sa droite (en même temps). Si le nombre de bonbons est un nombre impair, l’enseignant lui donne un bonbon supplémentaire pour que le partage tombe juste. On répète cette procédure jusqu’à ce que les enfants aient le même nombre de bonbons. Vous devez créer une fonction distrib qui, à partir de la distribution initiale de l’instituteur, affiche les différentes étapes jusqu’à ce que tous les enfants aient le même nombre de bonbons. >> distrib([ 1,2,3,4,5 ]) [ 4,2,3,4,5 ] # Le 1er enfant qui n'a qu'un bonbon reçoit de l'instit un autre bonbon qu'il donne au 2e # Le dernier qui en a 5 reçoit de l'instit un autre bonbon et donne donc 6/2 = 3 au premier enfant # L'enfant n°1 a donc bien 1+3 = 4 bonbons à la première étape [ 5,3,3,4,5 ] [ 6,5,4,4,5 ] [ 6,6,5,4,5 ] [ 6,6,6,5,5 ] [ 6,6,6,6,6 ] Dans cet exemple ont voit que tous les enfants auront 6 bonbons à la fin du jeu.
613 Bytes Public
Animation TikTok
1.01 KB Public
1.61 KB Public
Voilà pourquoi il faut toujours prendre sa Numworks quand on part en vacances ! Imaginez 4 amis : Pierre (noté pi), Audrey (a), Patricia (pa) et Eric (e) - Pour aller au cinéma, Eric a avancé 10 euros à Audrey - Pierre a payé 20 euros l’entrée dans un parc pour les 4 personnes - Patricia a avancé 2 euros à Eric pour une glace - Eric a avancé 24 euros pour l’entrée à la piscine des 4 amis Qui doit combien à qui ?? C’est très simple en utilisant le programme amis : >> amis() Liste amis ? pi,a,pa,e T=tous, 0=fin # On nous dit d'utiliser T pour tous et 0 pour terminer a avance x EUR pr b # l'ordre de saisi est a puis x puis b a,x,b : e,10,a # Eric avance 10 EUR à Audrey a,x,b : pi,20,T # Pierre avance 20 EUR à Tous a,x,b : pa,2,e a,x,b : e,24,T a,x,b : 0 # On a fini Bilan : pi prend 9.0 # Pierre récupère 9 EUR a depose 21.0 # Audrey dépose 21 EUR pa depose 9.0 # Patricia dépose 9 EUR e prend 21.0 # Eric récupère 21 EUR Bien entendu vous pouvez utiliser des nombres à virgule, par exemple : pa,2.50,e.
453 Bytes Public
461 Bytes Public
380 Bytes Public
Art génératif : Partie 2 - Le hasard Art génératif : Partie 1 - Transformations affines
662 Bytes Public
Découvrez ma chaine YouTube (Jeux pour la NUMWORKS, Python…)
877 Bytes Public
D’autres jeux pour la NUMWORKS sur ma chaine Youtube : Rubika, solitaire, Mission missile, démineur, carré magique, TRON, défis de blanche… Une vidéo pour en savoir plus sur ce programme
7.43 KB Public
832 Bytes Public
Vidéo d’explication Programme pour apprendre les lettres de l’alphabet Braille (sans les accents) Dans le menu qui s’affiche, choisir 1 si vous voulez lire des mots écrits en braille (tapez le mot pour vérifier ou simplement touche EXE), choisir 2 pour écrire en braille (touches 1-2-4-5-7-8 du clavier) des lettres de l’alphabet tirées au hasard et 3 pour que la machine écrive en braille le mot que vous taperez.
1.62 KB Public
En savoir plus sur la (more about) fractale “burning ship” : Français | English
794 Bytes Public
790 Bytes Public
605 Bytes Public
Explications en vidéo Autre exemple Des idées de caractères : Symbolïzm / Rune / Gumi
1.06 KB Public
2.29 KB Public
Explications en vidéo Version pour TI-83 Plus , TI-84 Plus, TI-84 Pocket. Mettre le programme sur la calculatrice puis le lancer en faisant 2nde CATALOG Asm( PRGM MERLIN. Vous avez à l’écran Asm(prgmMERLIN puis ENTER Version pour HP Prime Il s’agit de la réécriture de “carré magique” qui existait sur un jeu électronique de 1978 nommé MERLIN. La règle est simple : 9 points sont allumés (noir) ou éteints (gris) Dans la version normale, vous devez allumer tous les points sauf le central (touche 5 du clavier) Les touches 1,3,7 ou 9 du clavier inversent les 4 points d'un côté (un point allumé s'éteint et inversement). Par exemple la touche 1 inverse les points 1,2,4 et 5 Les touches 2,4,6 et 8 inversent les 3 points d'une rangée. Par exemple la touche 2 va inverser la rangée 1-2-3 La touche 5 inverse les points suivant une croix (2,4,5,6 et 8) Une fois que vous serez à l’aise avec la version de base, tentez >> go(2)
1.51 KB Public
Habituellement, lorsque vous achetez un produit, on vous donne un reçu où l’on voit apparaitre les 4 derniers chiffres de votre carte de crédit. Plus généralement, on voudrait une fonction masque qui admet en paramètre une chaine (numéro de la carte de crédit, numéro de téléphone ou autre) et qui en sortie affiche des “*” sauf pour les 4 derniers chiffres. >> masque("123456") '**3456' >> masque("888") '888' >> masque("0620212223") '******2223'
196 Bytes Public
4.43 KB Public
947 Bytes Public
Depuis 2019 le logo est plus simple (pas de bandes à l’intersection), voici un exemple de code : from kandinsky import * RO, OR, ROR, WH = (252,9,17), (254,167,0), (254,105,0), (255,255,255) R = 80 ** 2 for l in range(222): for c in range(320): rouge = (c - 100) ** 2 + (l - 111) ** 2 < R orange = (c - 216) ** 2 + (l - 111) ** 2 < R if rouge and orange: coul = ROR elif rouge: coul = RO elif orange: coul = OR if orange or rouge: set_pixel(c,l,coul)
751 Bytes Public
1.52 KB Public
215 Bytes Public
598 Bytes Public
594 Bytes Public
Basé sur un Tweet de @fesh0r
263 Bytes Public
Suivre une partie de jeu d'échecs Voir les explications en vidéo ici Première partie - Création du plateau et des pièces On reprend l’idée de la vidéo sur les nageurs pour la création des pièces. Inspiration pour la forme des pièces : https://youtu.be/36P26xWokjY
924 Bytes Public
La variable part contient la partie à jouer. Amélioration possible : Appuie d’une touche pour passer au coup suivant Playlist Youtube sur la NUMWORKS (jeux, programmation Python…)
1.81 KB Public
Déplacements possibles pour une pièce blanche sur un échiquier vide. Par exemple : >> jeu(T,"e4") >> jeu(D,"g8") >> jeu(C,"a6")
1.3 KB Public
9.39 KB Public
2.16 KB Public
Petite fonction pour afficher un nombre n à la position (x,y) avec une taille t et une couleur co
349 Bytes Public
Enoncé de l’énigme Numworks L’algorithme teste les différents choix possibles (remplir A, vider B, verser A dans B etc.). Tant qu’il obtient de nouvelles combinaisons, par exemples [0,0],[2,5],[3,0]… il continue. Quand il trouve une combinaison déjà existante, il remonte d’un niveau (indiqué par “Annuler”) et teste un autre choix.
1.35 KB Public
6.35 KB Public
1.32 KB Public
400 Bytes Public
471 Bytes Public
187 Bytes Public
4 dessins d’arbres de Noël (sur le simulateur il n’y a qu’un arbre qui s’affiche mais vous en aurez 4 différents en mettant le programme sur votre machine) Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
2.55 KB Public
Source : http://www.peda.com/grafeq/gallery.html Sphère : https://my.numworks.com/python/schraf/sphere Margarita : https://my.numworks.com/python/schraf/margarita Threesome : https://my.numworks.com/python/schraf/threesome The Big Swim : https://my.numworks.com/python/schraf/bigswim Arachnid : https://my.numworks.com/python/schraf/arachnid
275 Bytes Public
1.27 KB Public
Le modèle original est ici
441 Bytes Public
507 Bytes Public
“pion” dessine un pion de couleur “coul” aux coordonnées (c, l). Possibilité d’ajouter une ombre en utilisant le décalage “d” et une autre couleur, par exemple noire. La boucle “for i in range(3): pion()” permet d’avoir un tracé plus net, essayez avec 2 ou sans la boucle pour voir la différence.
696 Bytes Public
Alphabet Circular Glyphs | Youtube channel
881 Bytes Public
2.29 KB Public
4.79 KB Public
Création d'une ville from kandinsky import fill_rect, set_pixel from math import * from random import randint # Fond gris foncé fill_rect(0,0,320,222,(40,40,40)) # remplissage parallélogramme (begin_fill n'existe pas sur la NUMWORKS) def remplir(coul, *u): # On récupère les coordonnées des 4 points (ax,ay),(bx,by),(cx,cy),(dx,dy)=u[0] # On parcourt les pixels du rectangle contenant le parallélogramme for col in range(min(ax,bx,cx,dx), max(ax,bx,cx,dx)+1): for lig in range(min(ay,by,cy,dy), max(ay,by,cy,dy)+1): # Si c'est un pixel de l'écran if 0 <= col <= 320 and 0 <= lig <= 222: # On teste si le point est dans le parallélogramme xa,xb,xc,xd = ax-col,bx-col,cx-col,dx-col ya,yb,yc,yd = ay-lig,by-lig,cy-lig,dy-lig # xa*yb-ya*xb permet de déterminer de quel côté on est de la droite AB d1,d2,d3,d4 = xa*yb-ya*xb,xb*yc-yb*xc,xc*yd-yc*xd,xd*ya-yd*xa u,v,w,t = d1>0,d2>0,d3>0,d4>0 # Si tous identiques on est dans le parallélogramme if u == v == w == t: # On met la bordure en noir co = (0,0,0) if d1*d2*d3*d4 == 0 else coul set_pixel(col,222 - lig,co) # Plus z (profondeur) est grand, plus la couleur sera sombre def light(z,g): return ((max(0,min(255,g-1.1*z)),)*3) def cube(x, y, z): tx,ty,tz = 50-x,y,80-z x2,y2,z2 = x,y,z-1 # Description immeubles et rues # Testez avec d'autres fonctions if ty <= int(5+5*sin(tz)*cos(tx/2)) and (x % 10 > 2) and (z % 10 > 3): # dessus - devant - cote face(x,y,z,((1,0,0),(0,0,-1),(-1,0,0)),light(z,280)) face(x,y,z,((0,-1,0),(0,0,-1),(0,1,0)),light(z,60)) face(x2,y2,z2,((1,0,0),(0,-1,0),(-1,0,0)),light(z,140)) # Une face def face(x,y,z,dd,coul): coord = (pos2D(x,y,z),) for d in dd: x,y,z = x+d[0],y+d[1],z+d[2] coord += (pos2D(x, y, z),) remplir(coul, coord) # Coord 3D vers 2D def pos2D(x, y, z): t = x+z+2*y w = 450/(110+x+z) return (int(140+(x-z)*3*w), int(-70+t*w)) # Les etoiles for c in range(320): for _ in range(5): set_pixel(c
1.41 KB Public
Oscillateur Horloge dans le jeu de la vie
1.47 KB Public
921 Bytes Public
En cours de réalisation : création de code-barres “Code 39” https://fr.wikipedia.org/wiki/Code_39
982 Bytes Public
Saurez-vous atteindre le 💕 de votre élu.e avant le 14 février ?? Découvrez mon programme hautement scientifique (et complètement inutile 😂) qui vous donnera le nombre de jours 📅 nécessaires pour y arriver. ᴹᵃ ᶜʰᵃⁱⁿᵉ ʸᵒᵘᵗᵘᵇᵉ‧ᶜᵒᵐ/ˢᶜʰʳᵃᶠ
2.58 KB Public
Spécial Saint-Valentin
537 Bytes Public
457 Bytes Public
452 Bytes Public
Représentation binaire des coefficients binomiaux de 0 à 33. D’étranges créatures à imaginer (singe, guerrier, extra-terrestre, oiseau…) Visitez ma chaine YouTube Version avec la bibliothèque PIL : from PIL import Image, ImageDraw from math import comb source = Image.new("RGB", (1300, 50), color = "white") draw = ImageDraw.Draw(source) x = 0 for n in range(50): for i in range(n + 1): r = comb(n, i) j = 0 while r > 0: if 1 & r: y = 50 - j draw.point((x, y), fill = 'black') j += 1 r >>= 1 x += 1 source.show()
481 Bytes Public
Création d’une plaque de cuisson, de la crêpe et de sa cuisson. Bon appétit !
716 Bytes Public
442 Bytes Public
Chaque jour vous devez ramasser les crottes (c) de votre chien (:) dans votre jardin ! Pour cela vous avez le plan du jardin (une liste de chaines de caractères composées de “c” (crotte), “_” (rien) ou “:” (chien)), ainsi qu’un nombre de sacs identiques et la capacité d’un sac. Par exemple jardin(["__c__","___c_","_:___"],1,3) signifie : Que votre jardin fait 3x5, qu’il y a une crotte sur la première et la deuxième rangée et que le chien est dans le jardin (3e rangée) : __c__ ___c_ _:___ De plus vous n’avez qu’un seul sac qui peut contenir 3 crottes. Vous devez écrire une fonction jardin qui à partir de ces 3 paramètres affiche “CHIEN !!” si le chien est encore dans le jardin ou “Nickel” s’il est possible de le nettoyer ou “Crottes !” s’il n’y a pas assez de sacs.
623 Bytes Public
2.22 KB Public
Possibilité de réponse à une activité proposée par NumWorks message = "LOI SMPJOSMPQUWOI IGZP WZ OZIOSTLO HO AGZZMQIIMZAOI MTIPBMQPOI BOIWLPMZP HO BMQIGZZOSOZPI LGCQUWOI MNNLQUWOI M HOI GTXOPI HQDOBI OLI UWO LOI OZIOSTLOI SMPJOSMPQUWOI, LOI ZGSTBOI, LOI VGBSOI… SOBAQ KQEQNOHQM !" # Codes ASCII de 'A' à 'Z' alphabet = range(65, 91) def decode(txt): # Stats sur les lettres stats = [] for a in alphabet: stats.append(txt.count(chr(a))) # On garde les 2 meilleurs scores # qui devraient correspondre aux lettres 'E' et 'S' best = sorted(enumerate(stats), key=lambda x:x[1], reverse = True)[:2] # Substitutions probables pour 'E' et 'S' # 0 pour 'A', 1 pour 'B'... x,y = best[0][0], best[1][0] # On cherche les transformations affines a*x+b # qui envoient x vers 4 (lettre 'E') et y vers 18 (lettre 'S') for a in range(27): for b in range(27): if (a * x + b) % 26 == 4 and (a * y + b) % 26 == 18: # Si on trouve une transformation # on traduit le texte en effectuant # la même transformation pour les autres lettres s = '' for c in txt: l = chr(65 + (a * (ord(c)-65) + b) % 26) if ord(c) in alphabet else c s += l # Affichage du résultat print('y={}x+{} mod 26\n{}'.format(a,b,s))
738 Bytes Public
Quelques explications sur le programme Au démarrage la calculatrice mélange le cube puis voici les touches à utiliser : 4 flèches du haut : faire tourner le cube entier 1 et 4 : Face de Gauche (L = Left) 4 pour aller dans le sens 1 vers 4 et 1 pour sens inverse 8 et 9 : Face du Haut (U = Up) 9 pour aller dans le sens 8 vers 9 (horaire) 6 et 5 : Face Avant (F) x et + : Face de Droite (R = Right) . et x10^x : Face du Bas (B) et / : Face arrière
3.18 KB Public
2.31 KB Public
929 Bytes Public
On considère une suite xn+1=f(xn ) avec une valeur initiale x0. Lorsqu’il existe i≠j tels que xi=xj la suite est périodique. Par exemple dans la suite : 2, 0, 6, 3, 1, 6, 3, 1, 6, 3, 1, ... le cycle est 6, 3, 1 et se répétera forcément puisque f(1)=6, f(6)=3 et f(3)=1. Ecrire une fonction cycle qui admet en paramètre la liste des premiers éléments de la suite et donne en sortie la valeur du premier terme qui se répète ainsi que la longueur du cycle ou alors “Pas de cycle” si aucun cycle n’est apparent. >> cycle([2,3,4,2,3,4]) [2,3] # En effet 2,3,4 est le cycle qui se répète donc le 1er terme est 2 et la longueur du cycle = 3 >> cycle([1,2,3,4]) 'Pas de cycle' >> cycle([1,2,3,4,7,3,4,7,3]) [3,3] # 3,4,7 est le cycle de 1er terme 3 et de longueur 3
333 Bytes Public
Utilisation de classes pour animer 9 carrés Visuel final sur TikTok Ma chaine YouTube
962 Bytes Public
1.58 KB Public
Enoncé de l’exercice Visitez ma chaine YouTube from kandinsky import * from random import * from turtle import * BL, WH = (0, 0, 0), (255,) * 3 # Noir et Blanc def dot(x, y, c, fg, t, a, b): # Transfo d'un caractère en rectangles draw_string(c, 0, 0, BL, WH) # On affiche le caractere for v in range(18): # On parcourt les pixels de ce caractère for u in range(9): if get_pixel(u, v)[0] < 248: # Si ce n'est pas du blanc # rectangle avec effets de décalage 'a' et/ou 'b' fill_rect(x + u * t, y + v * t, t - a, t - b, fg) def aff(txt, x, y, t, a=1, b=1): for i, c in enumerate(txt): # On parcourt les lettres du mot dot(x + i * t * 9, y, c, BL, t, a, b) # ombre du caractere en noir dot(x + i * t * 9 - 3, y, c, WH, t, a, b) # texte en blanc def remplir(h): # fond degradé radial for l in range(h): for c in range(320): set_pixel(c, l, (150,) * 3 if 140000 * random() < l ** 2 + c ** 2 else (90,) * 3) remplir(222) aff("WANTED", 28, 15, 5) aff("NUMWORKS", 52, 100, 3, b=-5) # effet texte vertical aff("DEAD OR ALIVE", 45, 160, 2, a=4) # effet horizontal remplir(18) hideturtle() pensize(7) for _ in range(20): # les trous color(WH) x, y = randint(-160, 160), randint(-110, 110) penup(); goto(x, y);pendown() # point en blanc goto(x, y) color(BL) # et en noir avec léger décalage penup(); goto(x - 2, y - 2); pendown() goto(x - 2, y - 2)
957 Bytes Public
En réponse à un Tweet de Vincent
373 Bytes Public
Explications en vidéo ici 31 décembre : Décompte des secondes jusqu’à minuit. S’il est par exemple 17h29 à votre montre, tapez go(17.30) sur la Numworks et attendez qu’il soit exactement 17h30 sur votre montre pour appuyer sur EXE. Vous aurez alors le décompte des secondes jusqu’à minuit. Idées de variations : - Affichage plus sophistiqué : Montre Tokyoflash TEN ou STENCIL - Ajout de neige : Exemple ici. Il est possible que la mémoire de votre Numworks ne supporte pas les 200 flocons, dans ce cas diminuez le nombre.
1.14 KB Public
564 Bytes Public
1.36 KB Public
Visuel basé sur un tweet de Julien Gachadoat lui-même inspiré d’un code écrit en BASIC tiré du livre de J.-P. Delahaye “Dessins géométriques et artistiques avec votre micro-ordinateur”
473 Bytes Public
493 Bytes Public
230 Bytes Public
627 Bytes Public
Explications en vidéo Ce jeu ne fonctionnera que sur votre calculatrice, pas sur l’émulateur. Pour le lancer, tapez >>go() ou >>go(30) si vous voulez que la machine cache 30 mines au lieu de 20
1.29 KB Public
1.08 KB Public
900 Bytes Public
426 Bytes Public
Division synthétique d’un polynôme P par x-a Exemple : Diviser P(x) = x^2-5x+6 par x-2 Les coefficients de P sont 1,-5,6 et a=2 On lance le programme et on tape 1,-5,6 EXE puis 2 EXE Le quotient Q(x) s’affiche sous la forme 1,-3 qui signifie x - 3 ainsi que le reste R(x) = 0
133 Bytes Public
Voir la construction des 5 solides de Platon
2.5 KB Public
Molécule de dopamine. Il s’agit d’une image convertie en script Python par img2calc. Visuel final pour Twitter
12.5 KB Public
Écrire une fonction “double” qui admet 2 phrases en paramètres et affiche en sortie les lettres communes SANS répétition (y compris espace, ponctuation etc.). Les deux phrases devront automatiquement être converties en majuscules.
622 Bytes Public
Jeu des drapeaux Tapez sur la touche Ans pour répondre puis tapez le numéro du pays et Ans. Pour avoir un autre drapeau, tapez sur la touche +
2.04 KB Public
2 KB Public
On vous donne une rangée de lampes éteintes représentée par une série de “x” (Par exemple “xxxxxx” pour 6 lampes éteintes) ainsi que la trajectoire d’un drone “T” (Par exemple “===T” pour un drone se déplaçant vers la droite de 4 unités). Lorsque le drone passe au-dessus d’une lampe il l’allume (symbole “o”). >> drone("xxxxxx", "===T") "ooooxx" Ce qui signifie que le drone a allumé les 4 premières lampes. Voici 2 autres exemples : >> drone("xxx", "=========T") "ooo" # le drone a allumé toutes les lampes >> drone("xxxx", "T") "oxxx" Écrire la fonction drone qui admet en paramètres la rangée de lampes éteintes ainsi que la trajectoire du drone et qui en sortie affiche l’état des lampes.
632 Bytes Public
Vous devez écrire une fonction duplik admettant en paramètre une chaine de caractères. En sortie on doit obtenir une chaine où chaque caractère est soit “(“ (si le caractère n’apparait qu’une seule fois dans la chaine initiale), soit “)” (si le caractère apparait plusieurs fois). >> duplik("bacasable") '))()())((' Explications en vidéo
750 Bytes Public
178 Bytes Public
349 Bytes Public
Vidéo sur comment dessiner un ovale avec la tortue Python
553 Bytes Public
470 Bytes Public
514 Bytes Public
Spécial 8 ans de NUMWORKS
564 Bytes Public
337 Bytes Public
Pour envoyer visuellement un emoji, choisir le numéro voulu. Pour en envoyer un autre, tapez sur la touche “Retour” puis par exemple » emo(4) def nw(): lett="ABCDEFGHIJKLMNOP" img=gimp.image_list()[0] drw = pdb.gimp_image_active_drawable(img) if not(pdb.gimp_drawable_is_indexed(drw)): pdb.gimp_convert_indexed(img, 0, 0, 16, 0, 1, 0) im="" pal=[] c=0 for i in range(112*16): v=list(pdb.gimp_image_pick_color(img,drw,i%112,i//112,1,0,0))[:-1] if v not in pal: pal.append(v) cour = pal.index(v) if i==0 : prec = cour if prec != cour and i>0: im+=lett[prec] if c>1: im+=str(c) c=1 prec = cour else: c+=1 print "pal="+str(pal) print "im=\""+im+"\""
1.7 KB Public
1.1 KB Public
Traduction pour la NUMWORKS d’un programme BASIC trouvé p.41 dans le livre “Mathématiques et graphismes” (1985 - Edition PSI) à consulter ici. D’autres visuels ici.
1.81 KB Public
483 Bytes Public
Réponse à l’énigme proposée par NUMWORKS
234 Bytes Public
Écrire une fonction “etoile” qui admet en paramètre un mot . En retour, ce mot sera mis en majuscules puis une étoile “*” traversera toutes les lettres. Plus précisément, si un utilisateur tape par exemple le mot “soleil” alors l’affichage sera constitué des 7 lignes suivantes : *SOLEIL S*OLEIL SO*LEIL SOL*EIL SOLE*IL SOLEI*L SOLEIL*
123 Bytes Public
937 Bytes Public
3.9 KB Public
On fait varier a entre 2 et 4 par exemple avec un pas de 0.01 La première boucle permet d’arriver à un comportement limite (100 itérations) de u(n+1)=au(n)(1-u(n)) On trace ensuite les 20 points suivants (u(101) à u(120)) https://fr.wikipedia.org/wiki/Nombres_de_Feigenbaum
302 Bytes Public
On vous donne une liste nommée ferme avec des éléments (m : mouton, v : vache, l : lapin, p : poule, c : canard). Créez les fonctions suivantes : animaux : compte le nombre d’animaux suivant le paramètre donné. Par exemple animaux(ferme,'m') va compter le nombre de moutons dans la ferme, etc. deux : compte le nombre d’animaux à 2 pattes (p ou c). Écrire 2 versions. quatre : compte le nombre d’animaux à 4 pattes (m, v, l). Écrire au moins 2 versions.
1.17 KB Public
L’idée est de générer un dégradé entre 2 couleurs (Tweet de Vincent Robert) de façon plus organique. Ma première version est ce pinceau et la seconde cette sorte de feuille vue en transparence. Les scripts sont longs à s’exécuter !
490 Bytes Public
156 Bytes Public
487 Bytes Public
811 Bytes Public
211 Bytes Public
D’autres jeux pour la NUMWORKS sur ma chaine Youtube : Rubika, solitaire, Mission missile, démineur, carré magique, TRON, défis de blanche… Explications en vidéo
1.73 KB Public
1.43 KB Public
Vous devez écrire une fonction score qui calcule le score à un jeu de fléchettes sachant que l’on obtient : 0 point si la fléchette est à plus de 10cm du centre 5 points si la fléchette est entre 5 et 10cm (inclus) du centre 10 points si la fléchette est à moins de 5cm du centre De plus, si tous les lancers sont à moins de 5cm on gagne un bonus de 100 points. Les différents lancers sont enregistrés dans une liste que l’on passera en paramètre à la fonction. >> score([1, 5, 11]) 15 >> score([15, 20, 30]) 0 >> score([1, 2, 3, 4]) 140 Explications en vidéo
614 Bytes Public
98 Bytes Public
Dans un forum des utilisateurs peuvent poser des questions et d’autres y répondre. Lorsqu’une réponse à notre question est proposée, on peut cliquer sur ❤ pour dire que la réponse nous plait. Dans tous les cas, proposer une réponse (même mauvaise) rapporte 1 point et une réponse appréciée rapporte 10 points supplémentaires. Par exemple dans la liste ci-dessous : forum=[["Amaury",8,1],["Amelie",28,17],["Anne",35,17],["Anthonin",31,7],["Camille",5,3],["Carole",14,2]] Amaury a posté 8 réponses et 1 a été validée en ❤, elle a donc accumulé 8×1+1×10=18 pts On vous demande d’écrire une fonction best3 qui admet en paramètre les données du forum et donne en sortie les noms des 3 internautes qui ont les meilleurs scores (par ordre décroissant). Explications en vidéo >> best3(forum) Anne (205), Amelie (198), Anthonin (101)
337 Bytes Public
Fougère de Barnsley https://en.wikipedia.org/wiki/Barnsley_fern
545 Bytes Public
Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
536 Bytes Public
Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
547 Bytes Public
Explications en vidéo Petit programme permettant de convertir un nombre décimal en fraction. >> fr(1/3+2.5) 17 / 6 >> fr(1.71428571) 12 / 7 Attention cependant, si dans votre calcul il y avait des nombres irrationnels (racine carrée, pi, etc), le programme donnera en réponse une fraction qui ne sera qu’une approximation du vrai résultat. >> fr(3.14159265) 355 / 113 En effet 355/113 vaut environ 3.1415929203… Version optimisée pour la Numworks def fr(x): p,d,q,z=0,0,1,x while abs(p/q-x)>1e-6: z=1/(z%1) d,q=q,q*int(z)+d p=round(x*q,0) return "{} / {}".format(int(p),q) Version pour la Ti-83 Premium CE Le fichier à transférer sur votre machine ou alors tapez le programme ci-dessous : Version simpliste Si vous savez que le dénominateur n’est pas très grand (< 106), une solution très simple est de tester les dénominateurs les uns après les autres (1, puis 2, puis 3 etc.), le programme est alors extrêmement court : def fr(x, q = 1): while abs(round(x*q)/q-x)>1e-6: q = q+1 return "{} / {}".format(round(x*q),q)
208 Bytes Public
Suite à la publication de Numworks d’une carte de France dessinée par un élève, je me suis lancé le challenge de créer une carte avec le moins d’octets possible avec une résolution d’au moins 40*40 pixels
400 Bytes Public
Explications ici
500 Bytes Public
>> frise(f1) pour afficher la première frise, >> frise(f2,4) pour affiche la frise n°2 en petit, >> frise(f3,16) pour affiche la frise n°3 en grand, etc.
761 Bytes Public
4.17 KB Public
Adaptation d’un programme de Paul Malin pour la calculatrice Numworks. Ma chaine Youtube Maths-info
675 Bytes Public
Playlist YouTube sur la NUMWORKS Vous êtes de corvée pour découper la galette des rois ? Certaines personnes veulent despetites parts et d’autres des parts normales ? Pas de panique, votre NUMWORKS va vous aider ! Outils nécessaires Une galette des rois, une NUMWORKS et une règle graduée Exemple n°1 La galette fait 24cm de diamètre, 3 personnes veulent une part normale et 2 personnes des parts petites (c’est-à-dire la moitié d’une part normale) Exécutez le programme puis var et galette : >>> from galette import * >>> galette(24,3,2)) Mesurez 16.97 cm (disons 17 cm) trois fois, cela correspond aux 3 parts normales puis 9.18 cm (disons 9 cm) ce qui permet d’avoir les parts deux fois plus petites. Exemple n°2 La galette fait 20cm de diamètre, 5 personnes veulent une part normale et 1 personne veut une part petite Exécutez le programme puis var et galette : >>> from galette import * >>> galette(20,5,1)) Mesurez 10.81 cm (disons 11 cm) cinq fois, cela correspond aux 5 parts normales, la part restant sera la petite. Exemple n°3 La galette fait 18cm de diamètre, 3 personnes veulent une part normale Exécutez le programme puis var et galette : >>> from galette import * >>> galette(18,3,0))
875 Bytes Public
906 Bytes Public
884 Bytes Public
Ghee Beom Kim
1.15 KB Public
Explications en vidéo
4.98 KB Public
3.71 KB Public
5.62 KB Public
7.11 KB Public
18.7 KB Public
12.2 KB Public
19.6 KB Public
16.1 KB Public
Affiche une photo sur la calculatrice But : Afficher une image quelconque (80*60 pixels avec 16 couleurs) sur la calculatrice Attention : Depuis la dernière mise à jour proposée par Numwroks cette version peut poser des problèmes de mémoire, utilisez plutôt la version 2 Explications en vidéo Lancez l’éditeur d’image gratuit Gimp et ouvrir une image quelconque Utilisez l’outil de sélection rectangulaire et dans les options de cet outil choisir “Fixé proportions 320:240” pour sélectionner avec une forme semblable à celle de la calculatrice (vous pouvez aussi choisir le format 4:3). Comme me l’a fait remarquer un internaute, le format de l’écran est bien 4:3 mais le bandeau orange fait que dans la réalité on ne peut dessiner que sur une zone de 320x222 pixels. Si bien que dans vous pouvez choisir 320:220 ou 320:224 comme proportions dans Gimp et dans le programme principal vous remplacez le 60 par 55 (4x55=220) ou 56 (4x56=224). Sélectionnez la zone à conserver puis Image - Rogner selon la sélection Ouvrir la console Python de Gimp par Filtres - Python-Fu - Console Copiez le code ci-dessous et le coller dans la console def nw(): lett="0123456789ABCDEF" img=gimp.image_list()[0] pdb.gimp_image_scale(img, 80, 60) drw = pdb.gimp_image_active_drawable(img) if not(pdb.gimp_drawable_is_indexed(drw)): pdb.gimp_convert_indexed(img, 0, 0, 16, 0, 1, 0) im="" pal=[] for i in range(4800): v=list(pdb.gimp_image_pick_color(img,drw,i%80,i//80,1,0,0))[:-1] if v not in pal: pal.append(v) im+=lett[pal.index(v)] print "pal="+str(pal) print "im=\""+im+"\"" Faire Entrée - Entrée pour obtenir >> à l’affichage et pas ... Tapez
5.17 KB Public
510 Bytes Public
Script de Tell Urik @t3llurik
1.66 KB Public
Représentation isométrique de surfaces Exemple 1 f(x,y) = cos(x*x+y*y)*exp(-x*x-y*y) xmin,xmax,ymin,ymax=-2,2,-2,2 zmin,zmax=-0.5,0.8
526 Bytes Public
Vidéo d’explications Résumé de la vidéo On parcourt tous les pixels (i,j) de l'écran de la machine de la gauche vers la droite et de bas en haut On transforme les coordonnées du pixel (i,j) de l'écran en coordonnées (x,y)dans le plan qui est en vue isométrique Si le point (x,y) est dans le rectangle défini par les bornes Xmax et Ymax, on cherche le z = f(x,y) On regarde alors si le point doit être tracé ou s'il est caché, cela dépend des points qui ont été tracés précédemment pour la même abscisse i. Si le z est plus grand que le maximum déjà à l'écran ou s'il est plus petit que le minimum déjà à l'écran, on peut afficher le point (ce qui actualise le minimum et maximum), sinon on ne fait rien. Modifications possibles Une modification très sympathique du programme concerne la ligne : if abs(x) <= xmax and abs(y) <= ymax: qui permet de savoir si le point est dans le rectangle défini par Xmax et Ymax. On peut en effet ne garder que les points qui sont dans l'ellipse définie par Xmax et Ymax. Vous remplacez la ligne par : if (x / xmax)**2 + (y / ymax)**2 <= 1: Une autre modification simple et impressionnante est de mettre la partie inférieure de la surface en une couleur plus foncée (comme si l'éclairage provenait du dessus). Il suffit pour cela de mettre une couleur sombre (17000 par exemple) lorsque z <= n et une couleur claire (52831 par exemple) sinon. Le programme ci-dessous propose la version améliorée. Quelques idées Le plus amusant est bien entendu d'inventer les équations et de regarder ce que cela donne ! Attention, si vous faites des division
892 Bytes Public
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.
831 Bytes Public
Le but de cet exercice est de simuler des écrans à la MATRIX. L’idée du programme (Explications en vidéo) : Écrire une fonction mat qui affiche graphiquement 24 rangées de 32 chiffres aléatoires entre 0 et 9. On fera en sorte que les chiffres soient placés horizontalement tous les 10 pixels et verticalement tous les 12 pixels. Pour avoir l’effet MATRIX, il faudrait qu’il y ait de moins en moins de caractères au fur et à mesure que l’on arrive en bas de l’écran. Utiliser une variable maxi initialement égale à 1. Pour chaque caractère tirez au hasard un nombre entre 0 et 1 puis si ce nombre est inférieur à maxi alors afficher le chiffre sinon ne rien mettre. Lorsque vous passez à la ligne suivante, diminuez légèrement la valeur de maxi (par exemple de 0.05) de sorte que les nombres au hasard auront de moins en moins de chance d’être inférieurs à cette valeur. Et donc nous aurons de moins en moins de nombres à l’écran. Passons à la couleur : vous allez parcourir l’ensemble des 320*240 pixels, si la couleur du pixel est blanche vous mettrez le pixel en noir. Sinon, vous choisirez au hasard une couleur entre noire (0), vert foncé (color(16,88,38)) et vert clair (color(104,253,151)). Ainsi chaque chiffre sera un mélange de noir et de nuances de vert. Pour les forts en maths : Dans la version actuelle la valeur de maxi diminue de 0.05 soit environ 1/24 à chaque ligne. On peut donc représenter les variations de maxi en fonction du numéro de la li
990 Bytes Public
Programme qui permet de générer une “infinité” de tableaux aléatoires à la Piet Mondrian. Plusieurs améliorations sont envisageables comme : - Faire varier légèrement les couleurs des pixels pour donner un effet de texture - Lorsque 2 blocs contigus ont la même couleur, ne pas afficher de trait noir entre les 2 - Éviter qu’un même bloc puisse être choisi plusieurs fois ce qui est le cas dans le programme proposé Quelques exemples :
1.09 KB Public
Symboles utilisés pour chiffrer | Youtube channel La fonction phrase décompose la phrase en mots. La fonction mot décompose le mot en caractères. La fonction car trace le symbole de la lettre à la position (x,y) et de taille t. Codage de lettres : "-" correspond à 0, "|" à 1 et "+" à 2 Exemples : La lettre “A” a pour symbole “ | - - “ c’est-à-dire “100” et “B” a pour symbole “- | +” soit “012”. En parcourant les “chiffres” de gauche à droite (on peut bien sûr faire l’inverse), la chaine “100” correspond au nombre 1 + 0 * 3 + 0 * 9 = 1 en base 3. De même “012” correspond au nombre 0 + 1 * 3 + 2 * 9 = 21. Si l’alphabet “ABC…Z” commence à la position 0, les nombres 1 et 21 sont les lettres “B” et “V”. C’est la ligne alpha dans le code ci-dessous.
702 Bytes Public
225 Bytes Public
656 Bytes Public
Explications pour transformer un gif animé en animation pour ta NUMWORKS
6.74 KB Public
8.98 KB Public
Version sonore ;-)
14.3 KB Public
9.71 KB Public
514 Bytes Public
1021 Bytes Public
Explications en vidéo But : Essayez d’arriver à 15 parties gagnantes avant la machine ! Dans la vidéo je dis que s’il y a un blocage, c’est qu’il reste le même nombre de pions blancs et de pions noirs, ce n’est pas exact : X.X X.O O.. est une situation bloquée et pourtant les nombres de pions sont différents ;-) J’ai donc changé le test et mis tout simplement : if len(jouables(position)) == 0: return 1 En d’autres termes, s’il n’y a pas de déplacement possible, c’est que la situation est bloquée.
3.05 KB Public
580 Bytes Public
Les anneaux hongrois Explications en vidéos
1.85 KB Public
My YouTube channel : Python, NUMWORKS, JavaScript, Excel Macro (VBA, Office Script)
247 Bytes Public
165 Bytes Public
Exercice posté sur "Le coin boulot des profs de mathématiques" Rejoindre ce groupe Ma chaine Youtube consacrée aux maths et à l’informatique Explications du programme On fait 10000 simulations, soit 10000 files d’attente A chaque simulation on crée une file de personnes nommée pers, une personne ayant le virus (noté 1) avec une probabilité de 40% et saine sinon (noté 0) On duplique cette liste dans fin qui sera la file finale Pour chacune des personnes v de la file initiale, on regarde si elle a le virus : v == 1 Si c’est le cas, dans 20% des cas elle contamine la personne derrière elle : fin[i - 1] = 1 Et dans 20% des cas celle de devant On vérifie avec i > 0 et i < 99 que l’on ne sort pas de la file (la prochaine personne qui va être testée ne peut pas contaminée celle qui est devant elle puisque c’est la première…) En sortant de la boucle, on compte le nombre de personnes contaminées et on l’additionne aux valeurs trouvées dans les autres simulations On affiche la moyenne (ou mieux, un intervalle de confiance)
381 Bytes Public
191 Bytes Public
613 Bytes Public
Comme le prouve le script, les 2 rectangles vont à la même vitesse, c’est uniquement la couleur du fond qui change ! 🖥 Visiter ma chaine Youtube Maths-info ☕ M’offrir un café
409 Bytes Public
Illusion du mur du café : Il n’y a que des lignes horizontales et des carrés noirs ! 🖥 Visiter ma chaine Youtube Maths-info
570 Bytes Public
Comme vous pouvez le constater dans le script, tous les cercles ont la même couleur or ils paraissent de couleurs différentes une fois le dessin terminé ! 🖥 Visiter ma chaine Youtube Maths-info
732 Bytes Public
Posez votre calculatrice sur la table. Mettez-vous debout, regardez le point noir central puis approchez votre visage de la calculatrice, vous verrez les losanges tourner ! 🖥 Visiter ma chaine Youtube Maths-info ☕ M’offrir un café
531 Bytes Public
Illusion de Orbison : Le carré rouge parait déformé et ressemble à un losange, or il a bien 4 angles droits ! 🖥 Visiter ma chaine Youtube Maths-info ☕ M’offrir un café
346 Bytes Public
Constatez que le trait noir est bien dans le prolongement du trait rouge. Une fois que le rectangle gris est apparu, n’avez-vous pas l’impression que le trait noir est plutôt en face du bleu ?? 🖥 Visiter ma chaine Youtube Maths-info ☕ M’offrir un café
394 Bytes Public
570 Bytes Public
📺 Découvrez ma chaine Youtube
1.68 KB Public
21.7 KB Public
Écrire une fonction initiales qui admet en paramètre une phrase et affiche la première lettre de chacun de ses mots en majuscule. Les mots peuvent être séparés par un ou plusieurs espaces. Par exemple : “Rentre avec tes pieds” donnera RATP. Conseils On aura une première lettre si le caractère n’est pas un espace et si le précédent est un espace. Par exemple dans “ tes”, le “t” est bien une initiale, par contre le “e” non puisqu’il est précédé d’un “t”. On pourra mémoriser le caractère précédent dans une variable nommée preced On ne peut pas comparer le 1er caractère de la phrase avec le précédent puisqu’il n’y en a pas. L’idée est d’initialiser preced avec un espace, ce qui revient à dire que toutes nos phrases commencent par espace.
602 Bytes Public
Explications en vidéo
1.79 KB Public
Écrire une fonction “inverse” qui admet une phrase en paramètre (par exemple “Python For ever !”) et qui en sortie affiche cette même phrase où les minuscules sont devenues des majuscules et vice-versa. Les autres lettres (apostrophes, ponctuations, guillemets etc) ne changent pas. Pour notre exemple, le programme affichera donc “pYTHON fOR EVER !”
619 Bytes Public
568 Bytes Public
Le célèbre jeu 2048 sur votre calculatrice Numworks ! Ce programme nécessite l’utilisation du Firmware 13 officiel Explication en vidéo du programme ci-dessous.
1.42 KB Public
Explications en vidéo Utilisez les flèches de direction pour jouer.
1.42 KB Public
Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
11.6 KB Public
956 Bytes Public
Petit jeu inspiré d’un Tweet de NUMWORKS
2.32 KB Public
Le jeu Kibur (Rubik à l’envers) est apparu page 42 de la revue “L’ordinateur de poche” n°3 en 1981. La règle est la suivante : (Explications et corrigé en vidéo ici) - La machine vous affiche les chiffres de 0 à 9 de façon mélangée, par exemple 7328459061 - Vous devez remettre les chiffres dans l’ordre 0123456789 sachant que lorsque vous choisissez un chiffre entre 0 et 9, celui-ci est inversé avec le chiffre qui est en première position et les 2 chiffres à côté sont permutés également. Voici quelques exemples pour clarifier : 0748695312#8 # Le 8 à droite du "#" signifie que l'on veut inverser ce chiffre avec celui complètement à gauche, on obtient dans un premier temps : 8760495312 # C'est-à-dire que le 0 et le 8 ont été inversés # Dans un second temps on inverse également les 2 chiffres qui étaient à la position du 8 au départ (ici le 4 à gauche et le 6 à droite). On obtient alors : 8740695312 Voici 2 autres exemples : 0748695312#7 donne 4078695312 # en effet, on inverse le 7 et le chiffre de gauche (ici 0) 7048695312 # et les 2 chiffres qui étaient à côté de de la position du 7 au départ 4078695312 7328459061#1 donne 6328459017 # en effet on inverse le 1 et le 7 1328459067 # et également les 2 chiffres qui sont à la position initiale du 1 (le 6 à gauche et le 7 (on reprend le chiffre de l'autre extrémité) Écrire une fonction jouer qui admet en paramètres la liste des chiffres et le chiffre à permuter et qui en sortie donne la nouvelle liste.
569 Bytes Public
Le jeu de Nim (Marienbad) Une vidéo est en cours de réalisation. La machine connait la solution optimale pour gagner et donc il y a peu de chances de la battre à moins que vous ne connaissiez vous-même la stratégie. Dans cette version le vainqueur est celui qui tire la dernière allumette, il existe la variante inverse comme dans le film ci-dessous “L’année dernière à Marienbad”. Comme le dit l’acteur, “je peux perdre, mais je gagne toujours” http://people.math.harvard.edu/~knill/mathmovies/swf/marienbad.html
1.09 KB Public
Un article sur cet automate : https://www.miximum.fr/blog/jouons-avec-les-automates-cellulaires-en-javascript/ Descriptions des règles suivant le numéro : http://atlas.wolfram.com/01/01/rulelist.html Exemples de résultats : >> life(30) (on part d’un seul point central et on applique la règle n°30) >> life(90) >> life(184,1) (on met “1” en second paramètre si on veut un tirage aléatoire pour la première ligne)
465 Bytes Public
Explications en vidéo du jeu de la Vie et du programme. Touche 1 pour lancer un “planeur” Touche 2 pour un vaisseau “LWSS” Touche 3 pour l’oscillateur “pentadécathlon” Touche 0 pour effacer l’écran Touche “.” pour remplir aléatoirement l’écran J’ai mis (FO)ncé et (CL)air dans cet ordre pour que l’on voit les changements à l’écran, si vous voulez un affichage plus discret, il suffit d’inverser les valeurs de ces 2 variables à la ligne n°8 de sorte que CL = (8,)*3 et FO = (248,)*3 Vous pouvez aussi enlever la ligne alea() si vous ne voulez pas que le jeu débute par une grille remplie aléatoirement. Clignotant : ["0100","1001","1001","0010"]
1.77 KB Public
Ma playlist consacrée à la NUMWORKS
1.98 KB Public
776 Bytes Public
Comment trouver mentalement un jour de la semaine pour une date au 20e ou 21e siècle ? C’est en fait assez simple, il suffit de quelques additions et l’apprentissage de 12 chiffres. L’explication en vidéo est donnée ici, et je vous propose la transcription de la méthode sur la calculatrice Numworks. >> jour(6,10,2018) 'Sa' Le 6 octobre 2018 était donc un samedi. >> jour(6,6,1945) 'Me' Évidemment, l’idéal serait que le module time soit incorporé dans la calculatrice mais ce n’est hélas pas le cas pour le moment. Application de la fonction jour: Deux années sont identiques lorsque les 1er janvier et les 1er mars tombent les mêmes jours de la semaine. Ecrire une fonction idem qui admet en paramètre une année et donne en retour toutes les années strictement identiques entre 1901 et 2050 (1900 n’était pas une année bissextile, on l’a exclue pour simplifier le programme). Par exemple : >> idem(1968) 1912, 1940, 1968, 1996, 2024, Faire les calculs de tête Avec la version 2 du programme, vous avez exactement le cheminement à suivre pour faire les calculs de tête. La seule différence est que l’on fera les %7 (reste de la division par 7) au fur et à mesure et pas à la fin. Il faut bien entendu apprendre par cœur les 12 chiffres 144 025 036 146 def jour(j, m, a): return (j+int("144025036146"[m-1])+(a%100)//4+a%100-1-(a>=2000)-(a%4==0)*(m<3))%7 Exemple : 20 juillet 1969 (1er pas sur la lune) j=20, m=7, a=1969 Le reste de la division de 20 par 7 est 6 (il suffit de se dire que l’on soustrait 2*7 = 14 de 20) le 7e code de “144025036146” est 0, j’ai donc 6+0=6 a%100 vaut 69 (2 derniers chiffres), pour calculer (a%100)//4 on divise par 2 et encore par 2 sans tenir compte des virgules, ce qui donne 69 –> 34 –> 17. J’en
1.01 KB Public
Agent 008, vous avez une nouvelle mission ! Parmi les citoyens de la ville sont cachés 2 jumeaux très dangereux. Votre mission, si vous l’acceptez, est de les identifier et de les éliminer ! A partir d’une liste d’entiers, vous devez trouver les deux mêmes nombres et renvoyer l’un d’entre eux, par exemple dans le tableau [2, 3, 6, 34, 7, 8, 2] la réponse est 2. S’il n’y a pas de jumeaux dans la ville, renvoyez “RAS” (Rien à signaler). >> jumeaux([2, 3, 6, 34, 7, 8, 2]) 2 >> jumeaux([5, 12, 9, 7, 11]) 'RAS' On admettra qu’il y a au plus une paire de jumeaux dans la liste qui est donnée en paramètre. Explications en vidéo
232 Bytes Public
👉👉 Ma chaine YouTube
364 Bytes Public
D’après un Tweet de NUMWORKS
432 Bytes Public
2.3 KB Public
D’après ce tweet
523 Bytes Public
Vidéo d’explication ici Partie GIMP Création des 50 caractères def alpha(): img = gimp.image_list()[0] cal_txt = img.layers[0] alpha = "".join([chr(32+i) for i in range(59)]) pdb.gimp_text_layer_set_text(cal_txt, alpha) pdb.gimp_text_layer_resize(cal_txt, 295, 12) Conversion de votre police en code def nw(): img = gimp.image_list()[0] drw = pdb.gimp_image_active_drawable(img) code = "" for c in range(295): nb = 0 for l in range(8): v = list(pdb.gimp_image_pick_color(img,drw,c,l,1,0,0))[:-1] if sum(v) == 0: nb = nb + 2**l code += ("0"+(hex(nb)[2:]))[-2:] return code Exemples de codes Futurist Fixed '000000000000005e0000000404000000787c3400006cbc74000c2c386460205c7c600000000c00000000fc00000000fc0000000c0c000000007800000000c000000000200000004000000000601c0000007c443c0000007c00000044641c000044547c0000387c2000004c4c7000007854700000641c0400007c547c00000c741c00000000000000d00000000020505000003030300000505020000014740c003c7c6c7c1c60182c3040007c547c003844444400007c444438007c544000007c1414003844445434000010107c00007c000000407c0000007c284400007c4040007c3860107c7c0810207c3c4444443c007c140c00384444647c007c344c00004c54740000047c04003c4040403c0438601c0c70381c6038046c186400000c700c0000645c4400' Monaco 8 amélioré '000000000000005e00000006000600287e287e28004eff72004230084600764a5670000000060000007c8282000082827c0000281c280000207020000000c000000010101000000040000040300806003c42427e0000427e400000724a4600004a4a7600102c227e00004e4a72003c524a7a0000621a060000764a76000c52527e0000004800000000c8000000103844441010101010444438100000520a06003e5a5e621c4038263840007e52522c1866424200007e427e00007e524200007e1202001866427200007e107e0000427e42000040423e00007e1c6200007e4040007e1c300c7e7e04187e003c42427e00007e120e003c42627e80007e126e00004e4a700002027e0202007e407e000638601e001e7018701e0066186600020478060060524a46
1.33 KB Public
Voici une version simplifiée du langage Leet Speak On remplace les « A » par des « 4 », les « E » par des 3, les « I » par des 1 et les « O » par des « 0 ». La fonction leetspeak que vous devez créer admet une chaine de caractères en paramètre et en sortie le texte doit être en majuscules avec les changements voulus sur les 4 voyelles. >> leetspeak("Je parle en Leet Speak") "J3 P4RL3 3N L33T SP34K" Explications en vidéo
1007 Bytes Public
Sur une idée de Fabien Beyaert Tapez go() puis entrez les valeurs de AB, OA et f’ (par exemple 5, 25, 15 ou 7, 40, 10) La machine affiche OA’ et A’B’. Appuyez sur EXE pour voir le diagramme.
1.26 KB Public
Écrire une fonction maxi qui admet en paramètre des lettres (pas d’espace ni de ponctuation) et qui en retour affiche en majuscule la lettre la plus loin dans l’alphabet. Par exemple : >> maxi("BonjourATous") 'U' car la lettre ‘U’ est bien celle la plus proche de la fin de l’alphabet.
285 Bytes Public
319 Bytes Public
344 Bytes Public
303 Bytes Public
1.21 KB Public
8.46 KB Public
15.7 KB Public
Forever Louise Brooks Visitez ma chaine YouTube (bureautique, programmation, calculatrices…)
804 Bytes Public
Application de l’effet dégradé vu dans la vidéo Art génératif : Partie 2 - Le hasard
258 Bytes Public
Visiter ma chaine Youtube Maths-info
599 Bytes Public
244 Bytes Public
Sur une machine à sous d’un casino, on gagne 50€ dès que l’on a 3 valeurs identiques (3 Rois, 3 Dames ou 3 Valets) et chaque partie coute 2€. Voici les résultats que d’un joueur : var casino= ['DVR','VVR','RDV','VVV','RRV','DVD','VRV','RVD','DVD','VRV','VRV','DDD','DDV','VRR','DVV','DDR','RRR','DRR','DRR','DVR','DDD','VVD','DRR','RRD','RRV','RDD','VDV','VDV','VDR','DRV','RVV','VRV','RRD','DRR','DDD','DDV','RVV','VDD','DVR','DRD','VRD','VVV','VRR','DRV','RRV','VVR','DRR','DRV','DDR','VDD','VRD','VVV','RRR','RVR','VVD','RVD','DVD','RVD','VVD','DDR','VVD','RDR','VRD','RDD','VDV','DVR','RVV','RVV','RDV','RRV','RVD','DVD','DDD','RVV','DDR','VDV','VVD','VVD','RVR','VDD','DDD','RDV','RVD','DDR','VDD','RVV','VRV','DRR','RRD','RVV','RVD','VRR','VRV','DRR','DVV','DRV','VRD','VDV','VDV','DRV'] Écrire une fonction gain qui admet en paramètre la liste des résultats obtenus et donne en retour le montant gagné (ou perdu !). Explications en vidéo
1.14 KB Public
Vidéo d’explication Votre calculatrice peut-elle avoir plus de chance que vous à un jeu de hasard ? A priori non et pourtant vous allez découvrir que votre Numworks gagnera beaucoup plus souvent que vous ! Il vous faut un jeu de cartes (au minimum 32 cartes) Vous le mélangez et posez le tas sur la table Posez votre calculatrice dessus et appuyez sur EXE La Numworks se concentre et devine quelle combinaison il faut choisir ! Elle vous demande 3 couleurs, par exemple vous choisissez NOIR-NOIR-ROUGE Pour cela tapez 001 ( 0 pour Noir, 1 pour Rouge) La machine vous dit ensuite quelle combinaison elle choisit, par exemple ROUGE-NOIR-NOIR Ensuite, retournez une par une les cartes et entrez 0 lorsque la carte est noire et 1 lorsqu’elle est rouge Quand les 3 dernières cartes ont les mêmes couleurs que celles que la machine ou vous avez choisies, un point est donné et vous retirez ces 3 cartes Si vous vous trompez en entrant une couleur, tapez sur 2, la machine affiche alors toutes les couleurs du jeu et enlève la dernière carte Touche 9 pour quitter le jeu à n’importe quel moment Explication ? Je ne vous livre pas le secret mais en analysant le script Python, vous pourrez voir quel algorithme la machine utilise pour choisir les 3 couleurs. Sachez que la machine peut parfois perdre, dans ce cas c’est que vraiment vous avez de la chance !
1.16 KB Public
Explications en vidéo Ce programme très court permet de faire un tour de cartes plutôt sympathique qui réussit assez souvent. Faire mélanger un jeu de 52 cartes à un spectateur (on peut aussi n’utiliser que les cartes 1 à 5 par exemple) Le spectateur pose 3 rangées de 10 cartes (4 rangées c’est encore mieux) En parallèle vous tapez sur la calculatrice les codes des cartes (V=D=Roi=5, 10=0 et les autres gardent leurs valeurs) Vous demandez au spectateur de choisir dans sa tête une carte de la première ligne La calculatrice vous donne la ou les cartes les plus probables. Si elle indique 100%, vous pouvez dire une phrase comme “Ton esprit est vraiment simple à lire !” et dans le cas où il y a 2 choix (par exemple 80% - 20%), semez le doute chez le spectateur en lui disant que c’est de sa faute, il devait trop hésiter entre 2 cartes, etc. Il peut arriver plus rarement que la machine propose 3 ou 4 possibilités !! Dans ce cas, vous risquez hélas de louper le tour… Ensuite le spectateur dit quelle carte il avait choisie puis avance sur le jeu en regardant à chaque fois la valeur de la carte Statistiquement, il arrivera sur la ou une des cartes que la machine avait choisies Il s’agit du comptage de Kruskal
354 Bytes Public
Explications en vidéo Si vous utilisez plutôt un jeu de 52 cartes, remplacez le 32 par 52 directement dans le programme, cela évitera de le taper en paramètre.
286 Bytes Public
939 Bytes Public
Vidéo d’explication But : Créer des dessins dans le style de Manfred Mohr, pionner dans l’art et l’informatique dans les années 70. Visuels et explications : dans le catalogue de l’exposition de 1971 Le script pour la Numworks utilise le module Turtle de la version 10 donc pensez à mettre votre calculatrice à jour : https://workshop.numworks.com/devices/upgrade Art génératif Manfred Mohr Quelques visuels tirés du site de l’auteur (avec son aimable autorisation). P-10, “random walk” P-021/A + B, “band-structure” Projet P 142 P 142 Negative Field Syntax Inspiration n°1 from turtle import * from random import * TRANSI = {'m':'db','d':'mph','p':'mph','b':'mp','h':'d'} TRAITS = {'m':[1,30,10], 'd':[1,-30,10], 'p':[3,0,9], 'b':[1,-90,5], 'h':[1,90,5]} speed(1000) reset() def trait(t): pensize(t[0]) setheading(t[1]) forward(t[2]) for i in range(14): actuel = choice('mp') setheading(180) penup() goto(-160,100 - 15*i) pendown() while position()[0]<160: trait(TRAITS[actuel]) actuel = choice(TRANSI[actuel]) Inspiration n°2 En changeant la forme de la montée et en choisissant de mettre des traits épais pour le
321 Bytes Public
Vous avez 10 minutes à attendre avant un rendez-vous. Votre téléphone possède une application qui génère des chemins (par exemple “NOEESON” pour “Avancer 1 minute vers le Nord, puis 1 minute vers l’Ouest, 2 minutes vers l’Est, etc.) Créez une fonction valide qui admet une proposition de chemin en paramètre et qui en retour indique si celui-ci est compatible avec votre situation, à savoir qu’il doit durer 10 minutes et bien sûr vous ramener au point de départ (vu que vous avez rendez-vous) >> valide("NNSS") "Impossible" En effet le chemin NNSS vous ramène bien à votre point de départ mais il ne dure pas 10 minutes. >> valide("NSEONSEONS") "Parfait"
168 Bytes Public
Source : http://www.peda.com/grafeq/gallery.html Chrome : https://my.numworks.com/python/schraf/chrome Sphère : https://my.numworks.com/python/schraf/sphere Threesome : https://my.numworks.com/python/schraf/threesome
338 Bytes Public
Vidéo d’explication Le célèbre jeu du Mastermind est assez facile à programmer en Python comme nous allons le voir. Jouer Lancez le jeu en tapant mm(), par défaut il y aura 6 couleurs différentes (chiffres de 1 à 6) et la combinaison sera de taille 4 avec possibilité de répétitions (par exemple “2446”). Il s’affiche Coup 1 :, tapez alors votre proposition, par exemple 1234. La machine vous dit alors combien de chiffres sont bien placés et combien sont mal placés. Si vous voulez un niveau plus difficile avec une taille 4, tapez par exemple mm(4,8) pour qu’il y ait 8 couleurs, ou alors tapez mm(5) pour que la taille soit 5 (avec par défaut 6 couleurs) ou encore mm(6,9) pour une taille 6 avec 9 couleurs (bon courage !) Le programme Ligne 5 : on choisit les couleurs aléatoires jusqu'à obtenir la taille voulue. Remarquez l'utilisation de str pour avoir un code secret du type ["1","4","4","5"], la raison est que lorsque le joueur tapera sa proposition ce sera une chaine de caractères ainsi ce sera plus simple pour les comparaisons, de plus nous remplacerons plus bas certains éléments par des "#" ou des "*" donc autant travailler avec des caractères. Ligne 6 : on a aucune idée de la durée du jeu Lignes 7 et 8 : on mémorise le code secret et la proposition du joueur dans des listes Ligne 9 : si le joueur n'a rien proposé le jeu s'arrête Ligne 10 et 11 : Le nombre de coups joués augmente de 1 et on va compter les positions bien ou mal placées Ligne 12 : on commence par les bien placées en comparant une à une les valeurs Ligne 15 et 16 : pour ne pas recompter tout à l'heure les éléments, on les remplace par des caractères quelconques (ici # et *) Ligne 17 : si on a 4 bien placés la partie est finie Ligne 18 : on passe maintenant aux positions
598 Bytes Public
En réponse à Numworks
255 Bytes Public
Tenir la calculatrice en mode paysage
514 Bytes Public
564 Bytes Public
Un mélange parfait (mélange Faro) est un mélange parfaitement réussi dans le sens où l’on partage le paquet initial en deux paquets égaux et que le mélange est parfaitement alterné, une carte d’un paquet succédant à une carte de l’autre dans le paquet final. Par exemple, le mélange Faro de [0,1,2,3,4,5] sera : [0,3,1,4,2,5] En effet, on coupe le paquet en 2, soit [0,1,2] et [3,4,5] puis on prend alternativement un élément dans le premier paquet puis dans le second, etc. >> faro(range(6)) [0, 3, 1, 4, 2, 5] Écrire une fonction faro qui admet en paramètre une liste paire d’éléments (pour pouvoir couper le paquet en 2) et donne en retour le mélange. Écrire une fonction cycle qui admet en paramètre une pair d’éléments et donne le nombre de fois où il faut appliquer le mélange de Faro pour retomber sur l’ordre initial.
301 Bytes Public
Exemple tiré de Wikipédia
475 Bytes Public
Les dessins viennent de ce site / Explications pour créer vos propres dessins Derrière les 20 touches inférieures du clavier de la NUMWORKS ( de “0” à “)” ) se cachent des motifs (5 différents avec 2 couleurs possibles). A vous de trouver les paires ! Le programme ne fonctionne que sur votre machine, pas avec le simulateur. Quelques explications # toutes les touches du bas du clavier # codes 30 à 52 sauf les valeurs 35,41 et 47 clav=[v for v in range(30,53) if v not in [35,41,47]] # association aléatoire avec les figures # Au lieu de mélanger les figures+couleurs, on mélange les touches jeu=sorted(list(clav),key=lambda x:random()) trouve=[] score=0 tt.reset() # efface écran sleep(.5) while len(trouve) < 10: # choix figure gauche à partir touche clavier t1=jeu.index(key(clav)) tt.reset() # On recherche la valeur et couleur de cette touche v1,c1 = t1 // 4, t1 % 2 lettre(40,20,az[v1],2,c1) # Affichage figure t2=jeu.index(key(clav)) # Idem avec figure de droite score+=1 v2,c2 = t2 // 4, t2 % 2 lettre(170,20,az[v2],2,c2) # Si 2 touches différentes mais même motif+couleur et pas déjà trouvé if t1 != t2 and (v1,c1) == (v2,c2) and (v1,c1) not in trouve: trouve.append((v1,c1)) # Ajout de la paire trouvée for i,(v,c) in enumerate(trouve): # Affichage des cartes trouvées lettre(10+30*i,180,az[v],.5,c) tt.reset() # Affichage du score s=max(1,20-score) for i in range(10): lettre(20 + 55 * (i % 5), 60 + 60 * (i // 5), az[2],1,i<s)
2.12 KB Public
1.38 KB Public
Vidéo d’explication Prévisions météo Nous allons générer des journées ensoleillées, nuageuses ou pluvieuses sur 50 ans (365*50 jours) avec la règle suivante que nous tiendrons secrète (et que notre calculatrice devra découvrir toute seule) : Lorsqu’il y a du soleil (S) un jour, le lendemain il y a également du soleil dans 70% des cas. Dans 20% des autres cas le ciel sera nuageux (N) et dans 10% il sera pluvieux (P) Lorsqu’il y a des nuages un jour, le lendemain il y a également des nuages dans 30% des cas. Dans 30% des autres cas le ciel sera ensoleillé et dans 40% il sera pluvieux (P) Lorsqu’il y a de la pluie un jour, le lendemain il y a également de la pluie dans 50% des cas. Dans 20% des autres cas le ciel sera nuageux et dans 30% il sera ensoleillé Simuler des lois discrètes Pile ou face équilibré Il y a plusieurs façons de simuler un lancer de pièce équilibré, par exemple : >> from random import * >> choice([0,1]) 1 donnera 0 ou 1 dans environ 50% des cas. >> random()<0.5 True donnera True ou False également dans environ 50% des cas. Pièce truquée Comment simuler une pièce qui donne par exemple 60% de Pile et 40% de Face ? Une version très simple est : >> random()<0.6 False donnera True dans 60% des cas et False dans 40%. Pouvait-on utiliser choice ? Oui, par exemple en tapant : >> >> choice([1]*60+[0]*40) 0 C’est-à-dire en créant une liste de 100 termes (60 fois “1” et 40 fois “0”, la probabilité d’obtenir un “1” est donc bien de 60%). Avouons que ce n’est pas une technique très efficace ! On peut aussi voir que 60% = 3 / 5 et que 40% = 2 / 5, donc au lieu de 100 termes 5 suffisent : >> >> choice([1,1,1,0,0]) 1 Dé truqué Comment simuler le lancer d’un dé (4 faces pour simplifier) en ayant non pas 25% de chance par face mais par exemple 30% d’avoir le “
878 Bytes Public
Jeu “météorites” inspiré du jeu Game & Watch “Helmet”. But du jeu : Traverser le terrain en évitant la pluie de météorites ! Mais attention, la porte du côté droit n’est pas toujours ouverte, il faut attendre que le voyant soit vert ;-) Le programme a la même base que jeu “fire” pour la NUMWORKS, vous ne devriez donc pas avoir de difficultés à le comprendre.
1.69 KB Public
Explications en vidéo
1.93 KB Public
Vous souvenez-vous des anciens claviers des mobiles ? Vous souvenez-vous également de l’inconvénient pour écrire ? Ici, vous devez calculer le nombre de touches que vous devez taper pour écrire un mot spécifique. Voici la disposition : Exemples >> taper("123") 3 >> taper("abc") 9 (2+3+4) # Taper 2 fois pour obtenir "a", 3 fois pour obtenir "b", 4 fois pour "c" >> taper("baccalaureat") 35 On ne tiendra pas compte ici des touches spéciales * et #. Écrire une fonction taper qui admet en paramètre la le mot à afficher et qui en sortie donne le nombre de touches qu’il faudra taper.
442 Bytes Public
1.42 KB Public
Moiré : https://fr.wikipedia.org/wiki/Moir%C3%A9_(physique)
183 Bytes Public
2.33 KB Public
Version améliorée : Les blocs ne sont plus remplis plusieurs fois
1.18 KB Public
1.55 KB Public
1.51 KB Public
Le problème de Monty Hall ou les probabilités changent de porte | Voyages au pays des maths | ARTE Visitez ma chaine YouTube
593 Bytes Public
714 Bytes Public
Explications en vidéo Ce script permet de coder et de décoder des messages écrits en morse. Pratique pour envoyer un message à une personne à travers une pièce quand on n’a pas de téléphone sous la main ! L’idéal est que les 2 personnes aient une calculatrice Numworks pour pouvoir se répondre. Envoyer un message Il suffit de taper code("Votre texte ici") et d’orienter la calculatrice vers la personne. Le message tournera en boucle, attentez que la personne vous dise qu’elle l’a compris. Décoder un message Tapez dec(). Il y a plusieurs indications sur ce que vous voyez sur l’écran de l’autre personne : 2 barres bleues consécutives à droite, c'est le début d'un message pour vous, tenez vous prêt ! 1 barre rouge au milieu durant 1 seconde = trait long en morse. Tapez "0" au clavier. 1 barre jaune au milieu et brève = 1 point en morse. Tapez "." au clavier 1 barre violette à droite = fin d'une lettre. Tapez sur EXE. Si la machine comprend, elle déchiffre la lettre. Recommencez avec les autres lettres jusqu'à revoir les 2 barres bleues. Appuyez sur la touche Maison (en jaune) pour sortir du programme
1.27 KB Public
Vidéo d’explication Attention ! Depuis la dernière mise à jour de Numworks concernant la gestion des couleurs sous forme uniquement de tuples (par exemple (0,0,0) pour le noir et non plus un nombre), plusieurs programmes ne fonctionnent plus. Le programme ci-dessous fonctionnera sur votre calculatrice mais semble planter en ligne. Recherche d’une séquence d’ADN en utilisant l’algorithme naïf (case après case) Le motif du haut de taille 5 est trouvé sur le brin d’ADN à la 1511e case : La séquence de taille 7 est absente du brin: La séquence de taille 7 est présente à la 1870e place : Algorithmes plus sophistiqués : Utilisation d’une fonction de hachage : voir par ici pour la numworks Lien Wikipédia : voir par ici
890 Bytes Public
Utilisation d’une fonction de hachage simple : somme des couleurs
1016 Bytes Public
Il existe 31 mots de 5 lettres et plus dont les lettres sont en ordre croissant. Vous pourrez vérifier que la liste ci-dessous contient 32 mots, il y a donc un mot en trop ! Le retrouver en créant une fonction intrus, pour cela on pourra pour chacun des mots mettre réellement les lettres par ordre croissant et comparer si on a bien le mot d’origine. Par exemple avec le mot « sac » : « sac » trié donne « acs » qui est différent de « sac » mots = "abces,abdos,abers,adent,agios,ainou,alors,bijou,ceins,ceint,chiot,chips,chops,choux,defis,defit,delot,demos,dents,dentu,dhikr,filmo,films,filos,filou,flops,horst,bijoux,chintz,dehors,dhikrs,filmos"
626 Bytes Public
Le challenge est décrit ici
762 Bytes Public
134 Bytes Public
Lien vers l’énoncé de l’exercice
287 Bytes Public
Enoncé de l’exercice
205 Bytes Public
Enoncé du problème
975 Bytes Public
277 Bytes Public
507 Bytes Public
459 Bytes Public
213 Bytes Public
Découvrez ma chaine YouTube
740 Bytes Public
347 Bytes Public
Enoncé de l’exercice
616 Bytes Public
830 Bytes Public
1.02 KB Public
Multiplication russe. Comment multiplier 2 nombres sans utiliser l’opérateur * ? https://fr.wikipedia.org/wiki/Technique_de_multiplication_dite_russe
117 Bytes Public
Faites vos jeux et devinez qui finira premier de cette course de natation ! Vous pouvez vous servir de ce programme pour déterminer dans quel ordre des personnes devront participer à une activité. Explications en vidéo Si vous voulez mettre le rang du joueur à droite plutôt que l’ordre d’arrivée, il suffit de remplacer la ligne : draw_string(str(i+1),300,19+35*rg) par celle-ci : draw_string(str(rg+1),300,19+35*i)
997 Bytes Public
On part d’un nombre, par exemple 235, que l’on écrit en français chiffre par chiffre, ce qui donne “deuxtroiscinq”. Ce mot fait 13 lettres qui, transformé en français, fait “untrois”. Ce mot lui-même fait 7 lettres (“sept”) d’où 4 lettres (“quatre”) puis 6 lettres (“six”) puis “trois”, “cinq” et à nouveau “quatre”. On s’arrête lorsque l’on retombe sur un nombre que l’on a déjà obtenu. Donnons un autre exemple : >> nb(171) unseptun huit quatre six trois cinq 'quatre'
526 Bytes Public
184 Bytes Public
139 Bytes Public
Appuyez plusieurs fois sur la touche “Retour” à côté de “OK” pour arrêter le script.
666 Bytes Public
494 Bytes Public
Lancez le programme et attendez 15 à 20 minutes pour voir le résultat final (Pour les personnes pressées) Version sonore accélérée 80 fois sur ma chaine Youtube
459 Bytes Public
529 Bytes Public
Apprendre Python sur une Numworks
1.27 KB Public
Apprendre Python sur une Numworks
602 Bytes Public
Apprendre Python sur une Numworks
870 Bytes Public
Un ami veut trouver un nouveau nom pour son groupe de musique. Il aime les groupes qui utilisent la formule : ‘The’ + un nom avec la première lettre en majuscule. 'dauphin' doit donner 'The Dauphin' Cependant, lorsqu’un nom commence et se termine avec la même lettre, il aime répéter le nom deux fois en les reliant et sans le « The » devant. 'Alaska' doit donner 'Alaskalaska' 'europe' doit donner 'Europeurope' Pouvez-vous écrire une fonction groupe qui prend en paramètre un mot et renvoie le nom du groupe ? >> groupe('KniFE') 'The Knife' >> groupe('tart') 'Tartart' >> groupe('bed') 'The Bed'
159 Bytes Public
1.45 KB Public
Explications en vidéo Version avec kandinsky Ce programme permet de retrouver (approximativement) le Nord et le Sud à l’aide de la calculatrice. Il suffit pour de préciser l’heure actuelle, si nous sommes en heure d’été ou d’hiver puis d’orienter la machine horizontalement vers le soleil… Version avec turtle En rouge la direction du nord et en vert le sud from turtle import * def trait(a, c): pensize(8) color(c) penup() goto(0,0) pendown() setheading(a) forward(100) def nord(): hm = input("hh.mm ? ") he = input("Heure hiver (o/n) ? ") [h,m] = [int(v) for v in hm.split(".")] v = h + m / 60 - 1 if he.upper() == "N" or he == "8": v -= 1 angle = 15 * v - 90 trait(90, "black") trait(angle, "green") trait(angle + 180, "red") hideturtle()
542 Bytes Public
Version papier-peint des années 70 : from math import * from kandinsky import * for i in range(321*222): set_pixel(i%321,i//321,[(194,156,94),(255,255,0),(255,128,0),(77,40,4)][int(3*sin((i%321-160)/16)*cos((i//321-111)/16))])
766 Bytes Public
606 Bytes Public
Numworks City Des personnes ont signalé des voitures suspectes à Numworks City mais les plaques n’ont pas correctement été identifiées. Par exemples, “c’était une Renault et sa plaque se terminait par 15” ou “la plaque commençait par 28-AC mais je ne connais pas la marque”. Les différentes marques seront ici représentées par une lettre : B : BMW C : Citroën M : Mercedes P : Peugeot R : Renault V : Volvo Les plaques sont de la forme “2 chiffres - 2 lettres - 2 chiffres”, par exemple “20-AB-13” La police de la Numworks City a le fichier complet avec toutes les plaques et marques des véhicules. C’est une liste nommée NWC où chaque élément est une liste avec la plaque et la marque, par exemple : [‘20-AB-13’,’P’] qui correspond à une Peugeot immatriculée 20-AB-13 Questions Voici les questions auxquelles vous devez répondre en utilisant la console uniquement : 1) Combien y a-t-il de véhicules dans le fichier ? 2) Combien y a-t-il de Volvo ? 3) Donnez le nombre de véhicules dont la plaque se termine par 18 4) Combien de Mercedes ont une plaque se terminant par 18 ? 5) Affichez uniquement les marques des véhicule dont la plaque commence par “28-AC” ? 6) “J’ai vu un 18 sur la plaque mais je ne sais plus si c’était au début ou à la fin”. Combien de voitures vérifient ce critère ? 7) “J’ai vu la lettre “D” sur la plaque”. Quelle voiture était-ce ? 8) “J’ai vu une Volvo, je me souviens que les nombres du début et de la fin étaient identiques”. Pouvez-vous retrouver le véhicule ? Programme de recherche Ecrire une fonction recherche qui, à partir d’informations partielles, va rechercher les véhicules correspondants. Les éléments non renseignés seront remplacés par des *. Par exemple : >> recherche("28-*-11","R") devra renvoyer [ "28-AC-11", "R" ] Réponses 1) Combien y a-t-il de véhicules dans le fichier ? >>
3.42 KB Public
Version plus générale : import turtle from random import * t = turtle.Turtle() t.speed(0) t.hideturtle() p = 3 w, h = 400, 300 wn = turtle.Screen() wn.setup(2 * w, 2 * h) wn.colormode(255) wn.tracer(0) c = -w c1, c2 = (60,200,230), (30,) *3 rvb = [0,0,0] t.speed(0) def T(u,a1,a2,b1,b2): return int((b2-b1)/(a2-a1)*(u-a1)+b1) while c < w: l = -h t.pensize(1) for i in range(3): rvb[i] = T(c,-w,w,c1[i],c2[i]) t.pencolor((rvb[0],rvb[1],rvb[2])) while l < 1.1 * h: t.penup() t.goto(c,l) t.pendown() t.setheading(choice((randint(-60,-30),randint(-150,-120)))) t.fd(p*1.414) l += 3 p += 1 c += 5 wn.update()
492 Bytes Public
Écrire une fonction ola qui admet un mot en paramètre et le transforme en ola (Wikipédia : Une ola, ou vague, est un mouvement de foule, semblable à la houle, qui se manifeste principalement dans les stades lors de rencontres sportives, mais aussi dans des rassemblements importants.) Plus précisément, supposons que le mot soit foule, on devra obtenir les lignes : >> ola("foule") Foule fOuLe foUle fouLe foulE donnant l’impression que les lettres se lèvent les unes après les autres de la gauche vers la droite.
112 Bytes Public
992 Bytes Public
6.03 KB Public
355 Bytes Public
Explications en vidéo
381 Bytes Public
148 Bytes Public
On vous donne une chaine de mots (séparés par des virgules) palindromes qui sont valides au Scrabble. Combien y en a-t-il ? Un intrus s’est caché parmi eux, le retrouver en créant une fonction intrus et en utilisant cette chaine en paramètre. Quelle est la vraie écriture de ce mot ? Faire la correction et vérifiez qu’il n’y a plus d’erreur. Bien entendu, il est conseillé de créer à part une fonction palindrome qui permettra de vérifier si un mot est un palindrome ou non.
912 Bytes Public
2.05 KB Public
Traduction en Python de la formule Excel =FLOOR(DATE(year,3,MOD(18.37*MOD(year,19)-6,29)),7)+29 permettant de trouver la date du dimanche de Pâques pour une année quelconque entre 1900 et 2099. >>> easter(2025) (20, 4, 2025) # 20 avril 2025
108 Bytes Public
Un parc d’attraction est accessible aux enfants de 13 ans et plus. Il est également accessible aux enfants de moins de 13 ans s’ils sont accompagnés par un adulte. Écrire une fonction parc qui admet 2 paramètres, l’âge du visiteur et s’il est accompagné ou non d’un adulte (False ou True). En sortie on obtient : >> parc(15,False) "Bienvenue" >> parc(17,True) "Bienvenue" >> parc(7,True) "Bienvenue" >> parc(9,False) "Interdit"
457 Bytes Public
Exercice proposé sur le groupe Facebook "Casse-tête, énigmes et paradoxes" 3 particules apparaissent de manière aléatoire sur un disque. Quelle est la probabilité que les 3 soient sur un même demi-disque ? (Le demi disque en question peut être tracé après coup) Ma chaine Youtube consacrée aux maths et à l’informatique L’idée est assez simple : Choisir au hasard 3 angles entre 0 et 360 (par ex : 320, 10, 290) Trier par ordre croissant : 10, 290, 320 Tester si l’intervalle a une largeur <= 180, si c’est le cas, les 3 points peuvent être mis dans un demi-disque. Ici 320 - 10 = 310 > 180 On ajoute 360 au plus petit, soit maintenant 370, 290, 320. En fait le 10° est proche du 320° car 10+360 = 370° est proche de 320. Trier par ordre croissant : 290, 320, 370 Cette fois-ci 370 - 290 = 80 <= 180 donc ils peuvent être mis dans un demi-disque
395 Bytes Public
Explications en vidéo Voici le célèbre jeu du pendu. Pour cela vous aurez besoin d’une autre personne qui tapera le mot ou la phrase secrète puis ce sera à vous de jouer. Modifications possibles : Ajouter une liste de mots prédéfinis pour ne pas avoir besoin d’un autre joueur : from random import * mot=["CHIEN","CHAT","CRAYON","FEUILLE"] secret = choice(mot) Modifier le visuel du pendu pour avoir plus de coups, par exemple en 10 coups : | o /-+-/ | | / \
1.31 KB Public
160 Bytes Public
191 Bytes Public
Version en couleurs ici
692 Bytes Public
1.64 KB Public
852 Bytes Public
Vidéo d’explication D’autres exemples
1.83 KB Public
Goûteur de plats chez Cléopâtre Le jeu d'origine provient de la revue "L'ordinateur de poche n°22 (1984) page 42" que vous pourrez télécharger ici Programmation du jeu Explications en vidéo L'organigramme du jeu est le suivant (PL = Points de Liberté) : Le programme final est disponible ci-dessous. Probabilités de gagner (par simulation) Quelles sont les probabilités de gagner à ce jeu lorsqu'au départ nous avons un seul point de liberté ? 2 points ? 3 points ? Pour le savoir, nous allons demander à la machine de jouer toute seule et nous calculerons les fréquences de succès dans les différents cas. from random import * def go(PL = 1): # un seul PL par defaut gagne = 0 # nb de parties gagnees nbsimul = 10000 # nb de simulations for k in range(nbsimul): if jeu(PL): gagne += 1 # +1 si on gagne return gagne / nbsimul # frequence observee def jeu(PL): while True: # boucle principale plats = ["1","2","3","4"] # Liste des plats poison = choice(plats) # Ordi choisit plat avec poison choix = choice(plats) # Joueur choisit un plat pr ennemi plats.remove(choix) # On enleve le plat if choix == poison: PL += 1 # Ennemi meurt donc +1 pour nous if PL == 4: return True # On gagne la partie else: choix = choice(plats) # Joueur choisir un plat pr lui if choix == poison: # oups, plat avec poison if PL > 1: PL -= 1 # -1 si on a encore des PL else: return False # Sinon on perd la partie En lançant le programme avec différents paramètres on obtient : go() 0.2491 # 25% de chance de gagner avec un seul PL au départ > go(2) 0.5044 # 50% de chance de gagner avec un 2 PL au départ > go(3) 0.7527 # 75% de chance de gagner avec un 3 PL au départ Probabilités de gagner
625 Bytes Public
358 Bytes Public
2 exercices, un facile et un plus délicat : Exercice 1 Lorsque l’on photocopie un document il perd toujours un peu en qualité. Voici ce que cela peut donner avec une cassette VHS . Imaginons le cas où une lettre peut “muter” en une autre à chaque fois qu’on la photocopie. Par exemple un “A” devient un “a” puis un “#” puis un “+” etc. jusqu’à éventuellement disparaitre (“espace”) Plus précisément, voilà ce qui pourra se passer dans notre cas : C’est-à-dire qu’une lettre peut ne pas être modifiée (un “A” reste un “A” après photocopie) ou être dégradée (Une majuscule devient une minuscule, un “#” devient un “+” etc.) Écrire une fonction scan(txt, n, erreur) qui à partir d’un texte écrit normalement avec des lettres dans A-Z, a-z et/ou les caractères #,+,:,. et espace ainsi que du nombre n de photocopies que l’on fait et du taux d’erreur (par exemple 0.01 pour 1% d’erreur) renvoie le texte final. Ainsi, dans le pire des cas, en 6 photocopies le texte aura entièrement disparu. >> scan("BONJOUR A TOUS",10,0.5) BONJOUR A TOUS bOnJour A toUS bo#jour a ##Us #o+jo#r a ++us +o+jo+r a +:u# +o:jo+# a ::#+ :o.#o:+ a ..#+ .o #o.+ # . #+ o ## + + #: # #+ : + +. + #+ : + + Exercice 2 On vous donne un texte original et un texte qui provient d’une série de photocopies. On vous demande d’écrire un programme qui permet d’affirmer que la photocopie peut provenir de l’original ou non. Par exemple, si on vous donne Bonjour A Tous comme texte original et #o:+++r a t:u# comme photocopie, il est tout à fait possible de passer de l’initial au final, par exemple en faisant : Bonjour A Tous bo####r A T#us bo++##r A t+us #o:+++r a t:u# Par contre, si on vous donne le même texte initial mais #O:+++r a t:u# comme photoc
1.61 KB Public
Vous pouvez tester le script dans l’émulateur en tapant >> dess() Version améliorée du script gimpnumworks.py dans le sens où l’on compresse les données de l’image. Par exemple im="A7B3CD3" signifie 7 fois le caractère “A”, 3 fois le “B”, 1 fois le “C” et 3 fois le “D” ce qui est plus court en mémoire que im="AAAAAAABBBCDDD" def nw(): lett="ABCDEFGHIJKLMNOP" img=gimp.image_list()[0] pdb.gimp_image_scale(img, 80, 55) drw = pdb.gimp_image_active_drawable(img) if not(pdb.gimp_drawable_is_indexed(drw)): pdb.gimp_convert_indexed(img, 0, 0, 16, 0, 1, 0) im="" pal=[] c=0 for i in range(4400): v=list(pdb.gimp_image_pick_color(img,drw,i%80,i//80,1,0,0))[:-1] if v not in pal: pal.append(v) cour = pal.index(v) if i==0 : prec = cour if prec != cour and i>0: im+=lett[prec] if c>1: im+=str(c) c=1 prec = cour else: c+=1 print "pal="+str(pal) print "im=\""+im+"\""
3.02 KB Public
Calculer 1860 décimales exactes en moins de 35 secondes sur une NUMWORKS (N110), c’est possible Pour la NUMWORKS ancienne génération (N100), remplacez 6525 par 2227 et 6524 par 2226, ce qui vous donnera 635 décimales exactes. Mes vidéos autour des décimales de pi : En route vers les décimales de Pi : partie 1 - découvrons les formules de MACHIN En route vers les décimales de Pi : partie 2 - programme Python
450 Bytes Public
Voici les 88 touches d’un piano : La touche n°1 complètement à gauche est blanche, la 2e noire, la 3e et 4e blanches, la 5e noire etc. La touche n°88 complètement à droite est blanche et la 89e sera pour nous à nouveau comme la touche n°1. Vous jouez en tapant successivement sur les touches 1 puis 2 puis 3 etc. Compte tenu du numéro sur lequel vous vous êtes arrêté, serez-vous sur une touche noire ou sur une touche blanche ? Par exemple, si vous vous êtes arrêté à 92, vous êtes allé au bout des touches 1 à 88, puis vous avez continuez sur la n°1, de sorte que vous serez sur la quatrième touche qui est blanche. Écrire une fonction couleur qui admet en paramètre un nombre entier quelconque et qui devra renvoyer la chaîne “noire” ou “blanche”. >> couleur(1) 'blanche' >> couleur(12) 'noire' >> couleur(100) 'noire' >> couleur(1000) 'blanche'
202 Bytes Public
Explications en vidéo Le programme ne fonctionne pas dans l’émulateur mais devrait fonctionner sur votre machine.
786 Bytes Public
Petit script en 314 octets pour célébrer le 14 mars, journée de π
314 Bytes Public
472 Bytes Public
73 Bytes Public
D’autres jeux pour la NUMWORKS sur ma chaine Youtube : Rubika, solitaire, Mission missile, démineur, carré magique, TRON, défis de blanche… Explications en vidéo Le célèbre jeu Pipe Mania (Pipe Dream) pour votre Numworks. Pour jouer Evitez la fuite en plaçant des tuyaux et formez un parcours Flèches de directions Touche EXE pour placer un tuyau Pour passer au niveau suivant, dist doit être égal à zéro OK pour passer au tour suivant
4.35 KB Public
703 Bytes Public
Explications en vidéo ici Dans la vidéo j’utilise monotonic pour temporiser le jeu, dans la version ci-dessous j’ai simplifié en ne mettant que sleep. Pixel Art Restez appuyé sur une des touches 7, 8 ou 9 en vous déplaçant pour obtenir une frise colorée Appuyez sur 2 flèches de direction pour vous déplacer en diagonal Changez la valeur de d = 8 par une autre valeur pour obtenir un quadrillage plus gros ou plus petit. Essayez par exemple avec d = 2 ! N’oubliez pas de prendre en photo vos oeuvres avant de sortir du programme ;-)
1.4 KB Public
Une pizzéria applique la règle suivante : Si un client a commandé un certain nombre de pizzas ayant un certain prix minimum, on lui offre une pizza gratuite. Voici quelques exemples pour fixer les idées : La pizzéria décide qu’il faut au moins 5 pizzas à 20€ pour en avoir une gratuite Commandes du client n°1 : [22, 30, 11, 17, 15, 52, 27, 12]. Il n’a que 3 pizzas à plus de 20€ et donc il n’aura pas de pizza gratuite Commandes du client n°2 : [5, 17, 30, 33, 40, 22, 26, 10, 11, 45]. Il a commandé 6 pizzas à plus de 20€ et donc il aura une pizza gratuite Écrire une fonction pizza qui admet en paramètres la liste des commandes ainsi que le nombre et prix minimal pour en avoir une gratuite. >> pizza([22, 30, 11, 17, 15, 52, 27, 12], 5, 20) 0 >> pizza([5, 17, 30, 33, 40, 22, 26, 10, 11, 45], 5, 20) '1 GRATUITE' >> pizza([22, 30, 11, 17, 15, 52, 27, 12], 2, 30) '1 GRATUITE'
213 Bytes Public
Ma chaine Youtube consacrée aux maths, à la programmation en Python, aux calculatrices, Excel, etc. Découpage d'une pizza xc,yc sont les coordonnées de la pointe de la part de pizza, réparties sur un cercle de rayon 20 et centré en (0,0). Il ne faut pas oublier d’orienter la tortue avant de tracer les arcs de cercles (en partant à 90° pour le premier) Testez par exemple pizza(3) ou pizza(17)
363 Bytes Public
(L) contente 1er service [0.2132 ; 0.2195] (A) content 1er service [0.4265 ; 0.4328] (A) content si (L) contente [0.4629 ; 0.4692] (A) pleure si (L) pleure [0.5781 ; 0.5844]
1.47 KB Public
Ma chaine Youtube consacrée aux maths, à la programmation en Python, aux calculatrices, Excel, etc. Version simple avec des cercles import turtle t = turtle for [x,y] in [[-160,-97],[160,-97],[0,-207],[0,13]]: t.penup() t.goto(x,y) t.pendown() t.circle(97) t.hideturtle() Version avec de vrais demi-cercles Voir programme ci-dessous
217 Bytes Public
1.3 KB Public
Vidéo et explications en cours de réalisation
1.32 KB Public
Réponse à l’énigme proposée par NumWorks. La tortue trace un carré (polygone régulier à 4 côtés) avec toutes les arêtes, ce qui fait un total de 6. Appuyez sur la Flèche du haut pour passer au dessin suivant qui sera un polygone régulier à 6 côtés avec toutes les arêtes, ce qui fait un total de 15. Appuyez sur la Flèche du haut pour continuer le processus… Bon courage 😅
537 Bytes Public
257 Bytes Public
545 Bytes Public
Playlist NUMWORKS de ma chaine Youtube Put your your score in comment / Mets ton score en commentaire !
1.13 KB Public
Le but est d’amener votre avion à la position (200,200,0) La difficulté est que nous sommes dans un espace à 3 dimensions et qu’un missile vous poursuit… Touche 7 et 1 pour augmenter ou diminuer la vitesse sur l’axe des “X” Touche 8 et 2 pour augmenter ou diminuer la vitesse sur l’axe des “Y” Touche 9 et 3 pour augmenter ou diminuer la vitesse sur l’axe des “Z” Au début du jeu votre avion est en X=0, Y=0, Z=255 (point blanc en haut à gauche de l’écran) Le missile est noir et à la position X=200, Y=200 et Z=0 (là où vous devez aller) Attention à ne pas sortir de l’écran ou de vous faire rattraper par le missile sinon votre avion explose ! Vous pouvez régler la difficulté en modifiant la valeur de diff. Mettre par exemple 0.4 Notre avion a explosé ! Remarquez que la couleur de l’avion passe du blanc (loin, par exemple Z = 255) au magenta (proche, par exemple Z = 0)
1.61 KB Public
Visitez ma chaine YouTube (NUMWORKS, fx92…) Persistence of vision / Persistance de la vision Vous avez l’impression de voir une ligne ?? Restez appuyé sur la touche EXE (ou Entrée si vous êtes sur ordinateur) pour stopper l’animation et… la ligne disparait ! Do you feel like you’re seeing a line? Keep pressing the EXE or ENTER key to stop the animation, and… the line disappears!
1.24 KB Public
Vidéo d’explication D’autres exemples
1.26 KB Public
D’après une idée de Sébastien REB
813 Bytes Public
405 Bytes Public
414 Bytes Public
Explications en vidéo BTS = [42,43,44,36,37,38,30] correspond aux codes des touches de 1 à 7 sur la machine.
1.48 KB Public
1.1 KB Public
Jeu Pyramide proposé pour le Grand Concours 2024-2025 - Programmation Python !
5.93 KB Public
1.08 KB Public
Enoncé / Explications Les différentes parties du programme Définir les mots et leurs séries de chiffres correspondants : Nous avons une liste de mots associés à une série de chiffres. Série à décoder : La série de chiffres pour laquelle nous devons trouver le mot. Fonction possibles : Recherche des lettres possibles par chiffre : Pour chaque chiffre unique, nous trouvons les lettres possibles en intersectant les lettres des mots contenant ce chiffre. Nettoyage des correspondances : Nous réduisons les correspondances en éliminant les lettres déjà assignées. Décodage de la série : Nous utilisons les correspondances résolues pour décoder la série de chiffres.
1.39 KB Public
1.96 KB Public
Voici la liste de tous les mots autorisés au Scrabble qui contiennent un Q mais pas de U. Hélas des erreurs se sont glissées, à vous de les retrouver en créant une fonction intrus. Proposez 2 versions. mots = coq#faq#qat#qin#cinq#coqs#faqs#fiqh#qats#qing#qins#fiqhs#maqam#niqab#qibla#qings#maqams#uasdaq#niqabs#paqson#qasida#qatari#qiblas#qwerty#qwertz#tariqa#iraqien#nasdaqs#paqsons#qaddich#qaraite#qasidas#qatarie#qataris#qawwali#tariqas#iraqiens#qaddichs#qaraites#katarien#qataries#qawwalis#tamacheq#iraqienne#qatariens#qatariote#tamacheqs#iraqiennes#qatarienne#qatariotes#qatariennes"
796 Bytes Public
Explications en vidéo
3.14 KB Public
Sur une idée de Vincent Pantaloni But : Trouver des valeurs approchées de √2 sous forme de fractions. Vous devriez trouver successivement 4 / 3, 7 / 5, 10 / 7, 17 / 12… √2 étant irrationnel, aucun des coins des carreaux supérieurs ne tombera exactement sur un des coins des carreaux inférieurs.
260 Bytes Public
Suite au Tweet de nsi.xyz, voici un petit programme qui recherche les nombres n se terminant par l’année voulue et tels que rac(n + rac(n + rac( n + …))) donne un entier. Par exemple n = 1722 correspond au 1er juillet 2022 (1.7.22) et rac(1722 + rac(1722 + rac(1722 + …))) = 42 qui est un entier. Lancez le programme et tapez 22 pour l’année 2022. Remarquez que certaines solutions ne sont pas de vraies dates En quelle année aurons-nous à nouveau des dates donnant des entiers en appliquant la succession infinie de racines carrées ?
176 Bytes Public
Explications en vidéo ici
554 Bytes Public
Calculer plusieurs milliers de décimales exactes des racines carrées avec cet algorithme. Explications en vidéo ici
703 Bytes Public
Version TikTok avec son
415 Bytes Public
423 Bytes Public
Visitez ma chaine YouTube (jeux pour la NUMWORKS, CASIO fx-92…) Image d’origine
2.32 KB Public
Un joueur de flûte a proposé à la ville de Hamelin de la débarrasser de ses rats. Malheureusement certains de ces rats sont sourds et vont dans la mauvaise direction ! Voici les notations : P : joueur de flûte O- ou o- : rat allant vers la gauche (O pour un gros rat et o pour un petit) -O ou -o : rat allant vers la droite Exemples : -O-O -o -O P : Aucun rat sourd (ils vont bien tous vers le joueur de flûte) P o- O- -O O- : 1 rat sourd (il va dans la mauvaise direction) -O-O -o -o P -O -O o- 2 rats sourds (remarquez aussi qu’il peut y avoir plusieurs espaces entre les rats) Écrire une fonction sourds qui admet en paramètre la chaine contenant les rats et le joueur de flûte et renvoie le nombre de rats sourds.
150 Bytes Public
969 Bytes Public
Il s’agit ici d’adapter pour la NUMWORKS le programme écrit initialement en BASIC dans la revue MICR’ORIC de 1983 pour l’ordinateur Oric. Observez le temps d’exécution sur votre calculatrice par rapport à celui annoncé dans la revue… Exemple de graphique (avec une version légèrement améliorée) pour f(z) = 70*cos(z*z/100)*exp(-z*z/1000) : f(z) = 20*sqrt(exp(-sin(z/3))) : f(z) = 110*cos(z/30)*sqrt(exp(-sin(z/3))) : Le chapeau : Ce que vous pouvez modifier dans le script : - la valeur de m initialement mise à 30 comme dans la revue peut être augmentée. - au lieu de r=y1 vous pouvez aussi mettre r=60 (et -60 plus loin) pour que la base du graphique ne soit plus un disque mais un carré (mais le visuel est alors moins fun !) - Le .7 de la ligne 31 permet d’avoir une vue plus ou moins plongeante (testez avec 0.1 et 1 par exemple) - L’astuce pour ne pas voir les parties cachées de la surface est, pour un x donné, de n’afficher le pixel que si la valeur du y est supérieur au max des valeurs précédentes (par exemple si les valeurs de y sont 3, 5, 9, 6, 15, 11, 13, 18 et 2, les valeurs réellement affichées seront 3,5,9,15 (car le 6 est <9), 18 (car 11 et 13<15) et 18.
653 Bytes Public
Anaglyphes Vidéo d’explication. Remarques : Certaines personnes ne voient pas les images en relief donc pas d’inquiétude… Regardez la calculatrice en vous éloignant d’au moins 50 cm et bien la tenir à la verticale (pas sur la table) Il faut une paire de lunettes rouge-cyan pour voir les images ci-dessous en 3D. Collection personnelle Fabriquer des lunettes (avec des marqueurs rouge+bleu et un boitier de CD). En acheter sur Amazon >> go1() >> go2() (remplacer r//10 par r*r//1600 pour obtenir une paraboloïde) >> go3() >> go4() >> go5() (courbes de Lissajou, regardez-là se construire en 3D sur l’écran de votre machine. Testez go5(2) puis go5(3) puis go5(5) etc et observez les différences) >> go6() (Pyramide vue du dessus et 4 points) >> go7() (Plantes grimpantes)
1.89 KB Public
1.07 KB Public
886 Bytes Public
1.42 KB Public
Visitez ma chaine YouTube
496 Bytes Public
364 Bytes Public
Tapez par exemple convertir(2022) Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
253 Bytes Public
rot13 est un système de codage utilisé sur Internet par exemple pour révéler la fin d’un film ou … insulter une personne ! YR UREBF ZRHEG N YN SVA ! Le système consiste à décaler les lettres de 13 rangs, le A devient un N, le B un O…, le M un Z, le N un A jusqu’au Z qui devient un M. Si la lettre est entre A et M, ajoutez 13 pour obtenir lettre entre N et Z Si la lettre est entre N et Z à Soustraire 13 pour obtenir lettre entre A et M Appliquer rot13 permet de coder et de décoder un message puisqu’il y a 26 lettres dans l’alphabet. Écrire une fonction code qui admet en paramètre une phrase écrite en majuscules et décale toutes les lettres de 13 rangs. Les ponctuations ne devront pas bouger.
702 Bytes Public
Script original ici
2.23 KB Public
Vidéo d’explication J’ai également fait une version visuelle dans le cas du cube 2x2x2 Le programme calcule l’ordre d’un mouvement, c’est-à-dire combien de fois il faut le répéter pour revenir au point de départ. Il est suffisamment général pour pouvoir s’appliquer au Rubik’s cube classique, au pocket ou à d’autres jeux comme les anneaux Hongrois. >> ordre("FR") donnera 15 (Le mouvement est face avant + droite) Utilisez des minuscules pour tourner une face en sens inverse. Pour passer d’un objet à un autre, faire un copier-coller des constantes ci-dessous. Rubik 2x2x2 U=[(8,9,11,10),(2,12,17,7),(3,14,16,5)] R=[(12,13,15,14),(23,19,11,3),(21,17,9,1)] L=[(4,5,7,6),(0,8,16,20),(2,10,18,22)] F=[(16,17,19,18),(6,10,14,21),(7,11,15,20)] D=[(20,21,23,22),(18,15,1,4),(19,13,0,6)] B=[(3,2,0,1),(13,9,5,22),(12,8,4,23)] CUBES=4 COUL="RBWVOJ" Rubik 3x3x3 F=[(0,6,8,2),(1,3,7,5),(9,45,44,35),(29,11,51,38),(10,48,41,32)] B=[(18,24,26,20),(19,21,25,23),(15,33,42,47),(27,36,53,17),(16,30,39,50)] U=[(9,15,17,11),(10,12,16,14),(6,27,20,45),(29,18,47,8),(28,19,46,7)] D=[(42,36,38,44),(43,39,37,41),(0,51,20,33),(35,2,53,24),(1,52,25,34)] R=[(45,47,53,51),(46,50,52,48),(2,11,20,42),(44,8,17,26),(5,14,23,43)] L=[(27,29,35,33),(28,32,34,30),(0,36,18,9),(38,24,15,6),(12,3,37,21)] CUBES=9 COUL="RBWVOJ" Anneaux Hongrois L=[(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 23)] R=[(19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 4)] COUL="RBNJ" cube="R"*10+"B"*9+"N"*10+"J"*9
1.1 KB Public
Amélioration du programme Rubik avec visualisation éclatée du cube 2x2x2 Vous pouvez tester par exemple avec >> ordre("FR")
1.41 KB Public
Explications en vidéo Pour lancer le jeu, faire go() tout seul ou go avec un paramètre pour augmenter ou diminuer la difficulté, par exemple go(2) pour avoir un jeu dont la solution est possible en 2 coups. Le jeu d’origine pour la HP 41
1.48 KB Public
Explications en vidéo ici
1.75 KB Public
Renne dessiné avec des morceaux de paraboles. La fonction coeff permet de trouver les coefficients a,b,c de la parabole passant par le sommet S(xs,ys) et le point A(x1,y1). La fonction parab trace la parabole passant par S et A pour les abscisses entre x1 et x1 + d (d pouvant être négatif) Il suffit donc de repérer (avec un logiciel comme Gimp) les coordonnées de S et A ainsi que la distance d, en faisant attention au fait que le centre de l’écran a pour coordonnées (0,0). Si l’image Gimp fait 320x220 pixels, il faudra effectuer les translations X - 160 et 110 - Y pour passer aux coordonnées de la tortue. Ci-dessous le visuel expliquant d’où vient par exemple le parabole(0,-100,-45,-12,90) dans le script : Ma chaine Youtube Schraf - Maths info
977 Bytes Public
YouTube Channel - Post Facebook
491 Bytes Public
Automate cellulaire à une dimension https://mathworld.wolfram.com/Rule182.html Page Wikipedia consacrée aux automates cellulaires Tapez par exemple >>> go() ou go(30), le nombre devant être entre 0 et 255
415 Bytes Public
from math import * from kandinsky import set_pixel, fill_rect, get_pixel # Rayon (au carré) des 3 disques R = 180*180 # Précision du tracé (mettre 1 par exemple) pas = 4 def synthese(sous = 1): # Fond blanc si synthèse soustrative sinon noir fill_rect(0,0,320,222,(255 * sous,) * 3) # On dessine les 3 disques centrés en (0,50), etc. for i, m in enumerate([[0,50],[320,50],[160,290]]): # On parcourt tous les pixels de l'écran for c in range(0,320,pas): for l in range(0,222,pas): # Distance au carré entre le point (c,l) et le centre du disque d = (m[0] - c) ** 2 + (m[1] - l) ** 2 # On est dans le disque ? if d < R: # Couleur actuelle du pixel en (c,l) # On transforme en liste car un tuple n'est pas modifiable p = list(get_pixel(c,l)) # Synthèse soustractive if sous: p[i] = int(max(p[i] - 255 * sqrt(d / R), 0)) # Synthèse additive else: p[i] = int(min(p[i] + 255 * sqrt(d / R), 255)) # On dessine le rectangle avec la précision voulue fill_rect(c,l,pas,pas,tuple(p))
597 Bytes Public
Vidéo TikTok de ce script | En savoir plus (En anglais) Le script plante parfois avec le simulateur mais devrait bien tourner sur votre NUMWORKS N110 ou N120 Ma chaine Youtube
572 Bytes Public
665 Bytes Public
Poids idéal et récupération de la fréquence cardiaque. Enoncé Poids Idéal T : Taille en cm TP : Tour du poignet en cm Age : Age en années Programmez les formules de Lorentz, Creff et Monnerot suivantes pour le calcul du poids idéal : Lorentz : T - 100 - (T - 150) / 4 pour les Hommes et T - 100 - (T - 150)/2.5 pour les Femmes Creff : (T - 100 + Age / 10) * 0.9 Monnerot : (T - 100 + 4 * TP) / 2 On pourra donner 3 valeurs à chaque fois, la valeur idéale puis le poids minimum (90% de la valeur idéale) et le poids maximum (110% de la valeur idéale) Enoncé fréquence cardiaque La machine doit demander le nombre de pulsation au repos pendant 15 secondes. Multipliez par 4 pour avoir le nombre de pulsations par minute -> FC1 Ensuite “faire 30 flexions pendant 45 secondes” puis à nouveau on demande le nombre de pulsations pendant 15 secondes. Multipliez par 4 -> FC2 Ensuite “Se reposer 1 minute” puis à nouveau le nombre de pulsations pendant 15 secondes. Multipliez par 4 -> FC3 Indice de Ruffier : (FC1 + FC2 + FC3 - 200) / 10 Plus l’indice est faible, meilleure est l’adaptation à l’effort Faire en sorte d’avoir à l’affichage ‘Très bon’, ‘Bon’, ‘Moyen’, ‘Insuffisant’ ou ‘Mauvais’ suivant la valeur de l’indice : indice = 0 : très bonne adaptation à l’effort ; indice compris entre 0 et 5 : bonne adaptation à l’effort ; indice compris entre 5 et 10 : adaptation à l’effort moyenne ; indice compris entre 10 et 15 : adaptation à l’effort insuffisante ; indice supérieur à 15 : mauvaise adaptation à l’effort
1.2 KB Public
Quelques explications : la variable boules contient toutes les boules lumineuses du sapin chaque boule a sa propre vie, à savoir une position x,y, une taille t, une couleur c et un angle a Toutes les 0,01 seconde on met à jour l’ensemble des boules la position x,y suit une ellipse, l’angle augmentant de façon aléatoire (dit autrement, les boules ne tournent pas à la même vitesse) et lorsqu’un tour complet est effectué (2*pi), la couleur change (en suivant les valeurs qu’il y a dans la variable couleurs) A chaque fois on dessine un rectangle noir pour nettoyer un peu le dessin, on pourrait également mémoriser la position précédente de la boule pour l’effacer plus proprement.
1.06 KB Public
Image originale
1.14 KB Public
1.58 KB Public
Voir l’oeuvre “Schotter” de Georg Nees L’oeuvre commence avec une rangée standard de carrés et augmente progressivement l’ampleur du caractère aléatoire de la rotation à mesure que l’on descend dans les rangées.
341 Bytes Public
429 Bytes Public
Sécurité routière Les « 0 » ci-dessous représentent des éléments de véhicules, par exemple « 000 » est un véhicule de longueur 3 (un camion) et « 0 » une petite voiture. route = "==000==0==00=000==00=0000===00=====000===00=000====0=0====00====" Les « = » représentent la route et on imagine que les véhicules se déplacent vers la droite. Donc sur la route ci-dessus on a à gauche un camion et devant lui une petite voiture etc. Créez une fonction vehic qui admet une route en paramètre et donne en retour le nombre total de véhicules (camions et voitures) Créez une fonction voit qui donne uniquement le nombre de voitures (C’est-dire un véhicule de longueur inférieure à 3) Un véhicule est en infraction lorsque sa distance avec celui qui le précède est de seulement 1 « = ». Créez une fonction radar qui compte combien il y a d’infractions sur la route. Créez une fonction simple qui simplifie l’écriture de la route sous la forme : “cvvcvcvcvcvvv” qui signifie camion – voiture – voiture… ? Explications en vidéo
1.21 KB Public
Bon 7e anniversaire à la NUMWORKS
436 Bytes Public
7.21 KB Public
628 Bytes Public
Petit jeu type “simon” : Touche 0 pour lancer un tour et touches de 1 à 9 pour répéter le motif. En cas d’erreur la partie est terminée et votre score s’affiche. Ma chaine Youtube consacrée aux maths, à la programmation en Python, aux calculatrices, Excel, etc. Description du programme from random import randint from ion import * from kandinsky import fill_rect,draw_string from time import sleep VE, RO, BL, NR = (0,255,0), (255,0,0), 3 * (255,), (0,0,0) # couleurs def eff_ecran(): # efface écran et dessin de la grille fill_rect(0,0,320,222,BL) for i in range(4): fill_rect(130 + 60 * i, 20, 1, 180, NR) fill_rect(130, 20 + 60 * i, 180, 1, NR) def wait(*dg): # Attente d'une touche numérique while True: for k in dg: # on parcourt les codes attendus if keydown(k): # si touche enfoncée while keydown(k): continue # on attend qu'elle soit relâchée return (1 + (k + 3) % 9) * (k < 48) # retour de la valeur correspondante def aff(txt, attend = 0): # affichage d'un texte fill_rect(0,0,129,222,BL) draw_string(txt, 60 - 5 * len(txt), 100) if attend: wait(48) # Attente appui touche "0" def rect(v,coul = NR): # rectangle dans la grille x, y = 135 + 60 * ((v - 1) % 3), 25 + 60 * (2 - (v - 1) // 3) fill_rect(x, y, 50, 50, coul) # en couleur sleep(.3) fill_rect(x, y, 50, 50, BL) # on l'efface sleep(.3) def go(): while True: simon = [] # contenu du simon tour = 1 eff_ecran() while tour > 0: aff('Tour '+str(tour), 1) simon.append(randint(1, 9)) # ajout d'une valeur à simon for v in simon: rect(v) # animation aff('A toi !') correct = True # Pour le moment le joueur a bon i = 0 while correct: t = wait(42,43,44,36,37,38,30,31,32) # on attend un chiffre entre 1 et 9 if t == simon[i]: # si correct rect(t, VE) # rectangle vert
1.1 KB Public
Un fumeur a 2 boites de 40 allumettes dans ses poches. A chaque fois qu’il fume il prend une allumette au hasard dans une des 2 boites. Combien en moyenne restera t-il d’allumettes dans ses poches lorsqu’il aura vidé une des boites ? Répéter un certain nombre de fois l’expérience (𝑛 = 5000 par exemple) Chaque expérience donnera un résultat (Temps d’attente en minutes, nombre d’allumettes etc.) Faire la moyenne de ces résultats (Somme des résultats divisé par le nombre de simulations) On obtient une estimation ponctuelle de la moyenne (notée 𝑚𝑒) Explications du programme en vidéo : https://youtu.be/YOBwrrTIHe0?t=12m28s La valeur théorique est 7.
337 Bytes Public
A une soirée, 50 personnes déposent leur chapeau à un vestiaire. En repartant la dame du vestiaire donne à chacun un chapeau au hasard. Quelle est la probabilité qu’au moins une des personnes reparte avec son bon chapeau ? Répéter un certain nombre de fois l’expérience (𝑛 = 5000 par exemple) Chaque expérience donnera un résultat (Temps d’attente en minutes, nombre d’allumettes etc.) Faire la moyenne de ces résultats (Somme des résultats divisé par le nombre de simulations) On obtient une estimation ponctuelle de la moyenne (notée 𝑚𝑒) Explications du programme en vidéo : https://youtu.be/YOBwrrTIHe0?t=26m55s La valeur théorique est 𝑝 = 1−𝑒−1 ≃ 0,6321
451 Bytes Public
On lance 5 dés. A chaque lancer on met de côté ceux qui ont fait « As » et on relance les autres jusqu’à obtenir 5 « As ». Combien en moyenne faut-il lancer les dés ? Répéter un certain nombre de fois l’expérience (𝑛 = 5000 par exemple) Chaque expérience donnera un résultat (Temps d’attente en minutes, nombre d’allumettes etc.) Faire la moyenne de ces résultats (Somme des résultats divisé par le nombre de simulations) On obtient une estimation ponctuelle de la moyenne (notée 𝑚𝑒) Explications du programme en vidéo : https://youtu.be/YOBwrrTIHe0?t=19m22s La valeur théorique est :
325 Bytes Public
Deux personnes se donnent rendez-vous entre 12h et 13h. Quel sera en moyenne le temps d’attente de la première personne arrivée ? Répéter un certain nombre de fois l’expérience (𝑛 = 5000 par exemple) Chaque expérience donnera un résultat (Temps d’attente en minutes, nombre d’allumettes etc.) Faire la moyenne de ces résultats (Somme des résultats divisé par le nombre de simulations) On obtient une estimation ponctuelle de la moyenne (notée 𝑚𝑒) Explications du programme en vidéo : https://youtu.be/YOBwrrTIHe0 La valeur théorique que l’on peut trouver après calculs est de 20 minutes. Modifiez le programme pour savoir quel sera le temps d’attente de la première personne lorsque le rendez-vous est prévu entre 16h et 16h30. Explications en vidéo des exercices de simulation Aller plus loin et trouver un intervalle de confiance : La moyenne est dans l’intervalle [mini ; maxi] avec 95% de chance 𝐼=[ 𝑚𝑒 − (1,96 𝜎𝑒) / √𝑛 ; 𝑚𝑒 + (1,96 𝜎𝑒) / √𝑛 ] où 𝜎𝑒 est l’écart-type observé
255 Bytes Public
Adaptation en Python Turtle d’un script écrit à l’origine en Smalltalk (Revue Micro Systèmes de février 1984 - pages 116 et suivantes)
593 Bytes Public
Explication en vidéo ici
1.04 KB Public
En réponse à un Tweet de @NumWorksFR
978 Bytes Public
Enigme proposée par NUMWORKS
399 Bytes Public
593 Bytes Public
Explications en vidéo Vous pouvez jouer avec l’émulateur en utilisant les flèches du clavier, la touche Entrée et la touche Retour (Backspace).
1.99 KB Public
Source : http://www.peda.com/grafeq/gallery.html Chrome : https://my.numworks.com/python/schraf/chrome Margarita : https://my.numworks.com/python/schraf/margarita Threesome : https://my.numworks.com/python/schraf/threesome The Big Swim : https://my.numworks.com/python/schraf/bigswim Arachnid : https://my.numworks.com/python/schraf/arachnid
350 Bytes Public
Facebook ZX Spectrum
632 Bytes Public
1.2 KB Public
286 Bytes Public
540 Bytes Public
354 Bytes Public
Un point A parcourt un cercle de rayon R1 (repéré avec un angle t). Sur un second cercle de rayon R2 centré en A, on place le point M à l’angle t*v où v est fixé dès le départ. Le programme ci-dessous affiche la trajectoire du point M Il ne s’agit donc pas du cas d’un cercle roulant à l’intérieur (hypocycloïde) ou à l’extérieur (épicycloïde) d’un autre cercle comme on l’a sur les jeux pour enfants : >> go(5,1,10) pour un grand cercle R1=5, un petit cercle R2=1 et une vitesse = 10 (le point M tourne 10 fois plus vite autour du petit cercle que le point A autour du grand) >> go(1,3,10,1000) pour un petit cercle R1=1, un grand cercle R2=3, une vitesse = 10 et 1000 points >> go(4,2,2) Le point M sur le petit cercle va 2 fois plus vite que le A sur le grand cercle >> go(1,10,2) >> go(10,1,40,1000) La ligne while random()>.001: t=0 est juste là pour ralentir la machine qui va trop vite pour afficher le déroulement…
391 Bytes Public
Construction d'une hypocycloïde Trajectoire d’un point fixé à un cercle qui roule sans glisser sur un autre cercle dit directeur et à l’intérieur de celui-ci. Autres courbes ici >> go(7,2) (un tour ne suffit pas à tout afficher) >> go(7,2,2) (on fait faire 2 tour au petit cercle. Mathématiquement, il faut chercher le plus petit multiple commun entre 7 et 2, à savoir 14, et diviser ce nombre par le premier paramètre (7) d’où 14/7 = 2 tours)
428 Bytes Public
Tuto détaillé sur la création de ce jeu (utile si vous suivez la filière NSI au lycée) But Obtenir le plus grand territoire possible en lançant de la peinture. Comment jouer ? A la ligne n°79 il y a un 0 après le -100, cela signifie qu’il s’agit d’un joueur humain A la ligne n°80 il y a un 1 après le 100, cela signifie que c’est la calculatrice qui joue. Donc mettez des 0 ou des 1 pour avoir 2 joueurs humains ou pour que la calculatrice joue toute seule. Les touches sont les flèches gauche et droite et pour lancer la peinture, restez appuyé plus ou moins longtemps sur la flèche vers le bas (Flèche vers le haut pour le 2e joueur humain) pour définir la distance du jet.
1.93 KB Public
27.5 KB Public
700 Bytes Public
Explications en vidéo ici Simulation de l’économiseur d’écran “Starfield” bien connu sous les anciennes versions de Windows. Autres versions Effet 1 Modifiez uniquement la ligne qui génère les positions initiales des points (on les met tous très loin entre 50 et 55) : def point(): return [randrange(-40,40),randrange(-40,40),randrange(50,55)] Testez avec >>go() Effet 2 Modifiez alors les lignes : px = min(320, max(-1,st[i][0] * (1 - z / 10)**2 + 160)) py = min(240, max(-1, 5 * st[i][1] / z + 120)) Effet 3 On peut aussi changer les lignes px = et py = du programme ci-dessous pour obtenir de nombreux autres effets, par exemples : px = min(320, max(-1,st[i][0] * sqrt(z/5) + 160)) py = min(240, max(-1,st[i][1] / z + 120)) Effet 4 px = min(320, max(-1,st[i][0] * (10 - z) / 10 + 160)) py = min(240, max(-1,st[i][1] * cos(z / 2) + 120)) Sans oublier de mettre from math import sqrt, cos au début du programme. Version "Neige" from random import * from kandinsky import * from time import sleep nb = 120 st = [0]*nb pr = [0]*nb NR = (0,0,0) def point(): return [randrange(320),0,randrange(1,10)] def init(): fill_rect(0,0,320,222,NR) for i in range(nb): st[i] = point() def go(): init() while True: sleep(.05) for i in range(nb): st[i][1] += randrange(1,int(50/st[i][2])) z = st[i][2] px = st[i][0] py = min(240,st[i][1]) if py >= 240: st[i] = point() if pr[i] != 0: set_pixel(pr[i][0],pr[i][1],NR) pr[i] = [int(px),int(py)] c = int((1 - z/10) * 255) set_pixel(pr[i][0],pr[i][1],color(c,c,c))
673 Bytes Public
Réalisation de la montre suivante sur la NumWorks : https://www.tokyoflash.com/en/watches/kisai-stencil On peut aussi remplacer le changement des heures - minutes - secondes par : s+=1 m+=s//60 s%=60 h=(h+m//60)%24 m%=60 Autre présentation aff(20,20,h//10,3) aff(80,20,h%10,3) aff(20,110,m//10,3) aff(80,110,m%10,3) aff(180,80,s//10,2) aff(220,80,s%10,2)
901 Bytes Public
414 Bytes Public
Des jeux pour la NUMWORKS sur ma chaine Youtube : Rubika, solitaire, Mission missile, démineur, carré magique, TRON, défis de blanche…
9.07 KB Public
Vidéo d’explication ici String Art (Tableaux de fils) Tapez >> art0(), >> art1() etc pour voir les différents tableaux. La vidéo explique comment trouver les coordonnées des points (sur le cercle, les rayons, les arcs et les cordes) pour générer une infinité de tableaux.
2.21 KB Public
1005 Bytes Public
On vous donne un mot en minuscules et vous devez supprimer k caractères en respectant les règles suivantes : Supprimer les lettres “a” puis “b” puis “c”, etc. Supprimer les lettres en partant de la gauche Exemples : >> suppr("abracadabra", 1) 'bracadabra' # on supprime le 'a' le plus à gauche >> suppr('abracadabra', 2) 'brcadabra' # suppr des 2 'a' à gauche >> suppr('abracadabra', 6) 'rcdbr' # 5 'a' puis 1 'b' >> suppr('abracadabra', 8) 'rdr' >> suppr('abracadabra',50) '' Explications en vidéo
271 Bytes Public
A court d’idée pour la Saint-Valentin ? Offrez-lui ce script pour sa Numworks ! 💝💗💖 Version TikTok 📺 Découvrez ma chaine Youtube
674 Bytes Public
Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…) Le principe est très simple, en une minute vous devez réaliser le score le plus élevé possible. Pour cela appuyez sur les touches 0, ., x10^x,Ans ou EXE en fonction des rectangles bleus qui apparaissent en bas de l’écran. OK = Nombre d’appuis réussis et KO = Nombre d’appuis ratés.
1.08 KB Public
Suite au tweet de @nsi.xyz proposant à ces élèves le thème “Ecrire un script python qui produit une image”, avec différents sujets possibles et imposant l’usage de la tortue, voici ci-dessous ma proposition. Attention, il faut plusieurs minutes avant de voir le résultat final… Je suis resté dans l’esprit Synthwave
1.73 KB Public
358 Bytes Public
Sur une idée de Jean-Yves Labouche
243 Bytes Public
Version récursive du script de : https://my.numworks.com/python/eloidrai1/sierpinski Mⷨᴀͣ ᴄͨʜͪᴀͣɪͥɴᴇͤ ʸᵒᵘᵗᵘᵇᵉ‧ᶜᵒᵐ/ˢᶜʰʳᵃᶠ
350 Bytes Public
614 Bytes Public
Animation TikTok En savoir plus (Learn more)
806 Bytes Public
Une version simple du célèbre télécran. Utilisation Tapez >> tel(), un point apparaît alors au milieu de l’écran. Tapez sur les touches 2, 4, 6 ou 8 pour vous déplacer vers le bas, à gauche, en haut ou à droite. De même avec 1, 3, 7 et 9 pour partir en diagonal. Validez ensuite par EXE (tout cela sans voir ce que vous tapez…) Vous pouvez bien entendu taper des séries comme 2486 pour obtenir un carré ou 12369874 pour un pseudo cercle. Pour effacer appuyez sur la touche 0 suivi d’un chemin (par exemple 0999) et la touche . pour abaisser à nouveau le crayon. Exemple de 2 triangles côte à côte : 4493066.9344 2 traits vers la gauche (44), haut-droit (9), bas-droit (3), on lève le crayon (0), 2 pas vers la droite (66), on repose le crayon (.) et on dessine l’autre triangle (9344). Dès le lancement du programme vous pouvez déjà taper un chemin, par exemple >> tel("7931") Si vous êtes en manque d’inspiration, tapez >> tel(alea) Réalisations un peu plus complexes Améliorations possibles Les traits ont une longueur de 5 pixels ce qui peut être embêtant pour faire des dessins plus précis Dans cette version, si on passe 2 fois au même endroit la couleur reste noire, on peut imaginer faire des traits en gris (couleur = 31727 (moitié de 65535)) et lorsque l’on repasse sur du gris le pixel devient alors noir (couleur = 0)
695 Bytes Public
Explications en vidéo Réalisation de la montre suivante sur la NumWorks : https://www.tokyoflash.com/en/kisai-tenmetsu >> go(17,29,30) pour lancer la montre avec l’heure 17h29m30s
643 Bytes Public
Une vidéo est en cours de réalisation pour expliquer comment obtenir des résultats analogues en partant de Geogebra
2 KB Public
1.67 KB Public
Source : http://www.peda.com/grafeq/gallery.html Chrome : https://my.numworks.com/python/schraf/chrome Sphère : https://my.numworks.com/python/schraf/sphere Margarita : https://my.numworks.com/python/schraf/margarita The Big Swim : https://my.numworks.com/python/schraf/bigswim Arachnid : https://my.numworks.com/python/schraf/arachnid
349 Bytes Public
1.14 KB Public
Sur une idée d’Andrew Wulf
773 Bytes Public
841 Bytes Public
488 Bytes Public
Quelques exemples : def f(t, i, x, y): return sin(y/8+t) def f(t, i, x, y): return random() def f(t, i, x, y): return sin(t) def f(t, i, x, y): return i / 256 def f(t, i, x, y): return x / 16 def f(t, i, x, y): return y - 7.5 def f(t, i, x, y): return y - t def f(t, i, x, y): return [1, 0, -1][i%3] def f(t, i, x, y): return sin(t-sqrt((x-7.5)**2+(y-6)**2)) def f(t, i, x, y): return (y > x) and (14-x < y) def f(t, i, x, y): return (int(t*10)) & (1<<x) and y==8 def f(t, i, x, y): return random() * 2 - 1 def f(t, i, x, y): return cos(t + i + x * y) def f(t, i, x, y): return sin(x/2) - sin(x-t) - y+6 def f(t, i, x, y): return -.4/(.01+hypot(x-t%10,y-t%8)-t%2*9) def f(t, i, x, y): return .02/sin(3**(x+1)-atan2(x+1,(x+1)*y)*3-t) def f(t, i, x, y): return sin(atan2(x-8,y+5)*8+sin(y)+t*4) def f(t, i, x, y): return x & 1 if cos((i|17)**2+t)>0 else y & 1 def f(t, i, x, y): return (16*(1+sin(t+x))<(x+y))*sin(x-t) def f(t, i, x, y): return sin((x & y)/(.01 + sin((t/3)%3)*38-y-x))
618 Bytes Public
604 Bytes Public
4.9 KB Public
Ma playlist de jeux et de tutos pour la NUMWORKS Vidéo TikTok sur une vraie machine
857 Bytes Public
450 Bytes Public
732 Bytes Public
Au pied d’un arbre, dans un petit coffre enterré, vous trouvez un parchemin avec le texte suivant : “Pirate, pour arriver au trésor, tu devras faire 100 pas dans chacune de ces directions : ONNESEE” Mais en faisant un schéma on se rend vite compte que pour arriver au trésor nous ne sommes pas obligés de faire tout le parcours indiqué mais seulement de faire 200 pas vers l’Est et 100 pas vers le Nord, soit EEN. On vous demande d’écrire une fonction nommée tresor qui admet en paramètre le chemin indiqué sur le parchemin et qui en sortie vous donne le chemin le plus court pour y accéder.
838 Bytes Public
Ecrire une fonction tresse ayant en paramètres le nombre de colonnes et de lignes voulues (par exemple tresse(5,7) pour 5 colonnes et 7 lignes) et qui en sortie affiche un motif dont la partie en gauche est répétée symétriquement à droite et la partie haute est répétée symétriquement en bas. Exemples : >> tresse(5,4) -o-o- ooooo ooooo -o-o- >>tresse(8,5) o------o o-oooo-o ooo--ooo o-oooo-o o------o La version ci-dessous utilise les nombres binaires mais on peut imaginer plusieurs autres solutions.
1.01 KB Public
Explications en vidéo
3.34 KB Public
Dans le script ci-dessous je n’utilise que “lt” (left) pour orienter la tortue et “fd” pour la faire avancer. La lettre “m” permet d’indiquer qu’il faut mémoriser la position actuelle et “r” qu’il faut retourner à cette position.
311 Bytes Public
Explications en vidéo Pour lancer le programme avec 2 joueurs, tapez >> go() et pour 3 joueurs tapez >> go(3)
1.31 KB Public
914 Bytes Public
Simulation d'une machine de Turing Explications du principe de la machine ici m1 : Ajouter un 1 à droite d’une séquence m2 : Compter en binaire m3 : Addition unaire 11(2) + 111(3) = 11111(5) m4 : Doubler les éléments 111 –> 111111 m5 : Remplacer les 0 par des 1 m6 : Parité du nombre de 1 dans une chaîne (0=pair, 1=impair) m7 : Conjecture de Syracuse (voir Programme) m8 : Castor affairé (voir Wikipédia) Dans cette machine simplifiée il n’y a que 6 états possibles (A à F), l’état F étant l’état final. On peut lire ou écrire sur le ruban les caractères b (blanc), 0 , 1 et s Vous pouvez tester le programme dans l’émulateur de cette page ou sur https://repl.it/languages/python3 en copiant/collant le code. >> turing(m5) EXE # Appuyez sur la touche EXE pour passer à l'étape suivante A bbb001101 0 d # Etat = A, tête de lecture = 0, action = déplacement à droite A bbb001101 1 d # La tête est maintenant en 1, action = déplacement à droite A bbb001101 2 d # La tête en 2 A bbb001101 3 B # Mettre l'état à B B bbb001101 3 1d # Ecrire un "1" et se déplacer à droite B bbb101101 4 1d # Ecrire un "1" et se déplacer à droite B bbb111101 5 d B bbb111101 6 d B bbb111101 7 1d B bbb111111 8 d B bbb111111b 9 F # Fin du programme Explications rapides du programme prgm = {c[:2]:c[2:] for c in code.split(',') } : On récupère les données du programme sous la forme “état+caractère” : “choses à faire”, par exemples "Ab" : "1F" try: c = rub[pos] : On tente de lire ce qu’il y a sur le ruban (problème si pos est négatif ou plus grand
1 KB Public
Lancez ce script sur une vraie machine. La calculatrice attend un appui sur un chiffre impair (1,3,5,7 ou 9) puis sur 2 ou 8 et à nouveau un nombre impair, etc. La formule (1 + (k + 3) % 9) * (k < 48) permet de transformer les codes des touches en chiffres : 42 -> 1, 44 -> 3 etc
310 Bytes Public
357 Bytes Public
389 Bytes Public
530 Bytes Public
txt("Bonjour",10,20,color(255,0,0)) met le texte “Bonjour” en rouge à la position (10,20) L’idée est de récupérer les valeurs Rouge-Vert-Bleu des pixels du texte écrit en noir et gris et de les convertir dans la couleur voulue. Chaque lettre fait 10*18 pixels
540 Bytes Public
259 Bytes Public
Adaptation d’un programme de Paul Malin pour la calculatrice Numworks. Ma chaine Youtube Maths-info
1.03 KB Public
Animation et script d’origine Ma chaine YouTube
538 Bytes Public
2.67 KB Public
5.93 KB Public
835 Bytes Public
652 Bytes Public
Comment utiliser ces 2 scripts Python : Vidéo d’explication Comprendre en 10 minutes les mathématiques cachées derrière : Les courbes de Bézier - Elles sont partout ! Gimp def conv(s): try: return int(float(s)) except: return s def nw(): img = gimp.image_list()[0] svg = pdb.gimp_vectors_export_to_string(img, img.vectors[0]) svg = svg.split(" d=\"")[1].split("\"")[0].replace(" ",",").replace("\n",",").replace("M",",M") svg = [conv(v) for v in svg.split(",") if len(v)>0] return svg Ce script permet de récupérer dans une chaine de caractères nommée svg les coordonnées des points et des poignées. Un petit nettoyage est fait sur les espace et les retours à la ligne et on ne prend que des coordonnées entières afin de gagner en espace mémoire. Quelques visuels Lunettes en coeur et téléphone svg = ['M',166,119,'C',166,119,149,71,149,71,148,68,146,65,142,64,138,63,134,62,130,63,130,63,111,68,111,68,108,68,107,70,107,72,108,74,111,75,114,74,114,74,133,70,133,70,134,69,136,70,137,70,138,71,139,71,139,72,139,72,152,109,152,109,150,109,148,109,146,109,140,109,134,111,130,114,126,111,121,109,115,109,109,109,103,110,99,113,97,115,95,117,94,120,94,120,87,120,87,120,86,117,84,115,82,113,78,110,73,109,67,109,60,109,55,111,51,114,47,111,41,109,35,109,33,109,31,109,29,109,29,109,41,72,41,72,42,71,43,70,44,70,45,70,47,69,48,70,48,70,67,74,67,74,70,75,73,74,74,72,74,70,73,68,70,68,70,68,51,63,51,63,47,62,43,63,39,64,35,65,33,68,32,71,32,71,15,120,15,120,15,121,15,123,15,124,15,132,24,137,37,145,40,147,44,149,48,151,49,151,50,152,51,152,52,152,53,151,54,151,58,149,62,147,65,145,76,138,85,134,87,127,87,127,94,127,94,127,96,134,105,138,116,145,120,147,123,149,127,151,128,151,129,152,130,152,131,152,133,151,133,151,137,149,141,147,144,145,157,137,167,132,167,124,167,122,166,121,166,119,'Z','M',59,139,'C',56,141,54,142,51,144,48,142,46,141,43,1
2.76 KB Public
Suite à une publication de Numworks concernant les vendredis 13, voici un petit programme qui permet de compter combien de fois, sur une période de 400 ans, il y a eu de lundi 13, mardi 13 etc. On constate qu’il y a effectivement eu plus de vendredis 13 ! J’ai utilisé la formule de Schwerdtfeger pour le calcul. Quelques unes de mes vidéos Youtube sur des sujets similaires : Théorie des calendriers perpétuels portatifs Astuce pour retrouver le jour de la semaine d’une date quelconque
364 Bytes Public
Enoncé des 4 exercices et Corrigé Utilisation Lancez le script puis molnar(1) pour l’exercice 1, molnar(2) pour l’exercice 2 etc.
1.78 KB Public
2.2 KB Public
908 Bytes Public
Des personnes forment une file d’attente devant un distributeur de billets. Certaines doivent retirer de l’argent, ceux sont des gens ordinaires; d’autres veulent voler de l’argent, ceux sont des voleurs et enfin les autres sont des policiers, ils cherchent les voleurs. Étant donnée une file d’attente au format chaîne, comme celle-ci : V1VT2VTVV Où T représente une personne ordinaire; V un voleur et un chiffre un policier. La valeur numérique représente la zone de surveillance. Par exemple, 1 signifie qu’il peut voir 1 personne devant lui et 1 personne à l’arrière. Tous les voleurs dans la ligne de vue de la police seront capturés ! Votre tâche consiste à créer une fonction pris admettant en paramètre la file d’attente et qui donne le nombre de voleurs pris par les policiers. >> pris("V1VT2VTVV") 3 # En effet le policier "1" prend les 2 voleurs à côté de lui # Le policier "2" prend celui à droite (l'autre a déjà été attrapé) >> pris("V5VT3VTTTVVVVTT1TV1V") 5 # Le policier "5" prend 3 voleurs et le dernier policier "1" en prend 2
226 Bytes Public
593 Bytes Public
Autre version ici
755 Bytes Public
Autre version ici
699 Bytes Public
L’idée m’est venue en regardant la vidéo de Nicolas Decoster - Art génératif avec adacraft - JAIME 2022
363 Bytes Public
549 Bytes Public
335 Bytes Public
Enchevêtrements Actualisez la page pour obtenir un autre motif ! Explications du code from kandinsky import * from math import sqrt from random import randint # nb d'anneaux (couleurs alternées) et largeur anneau (nb, r) = (randint(3,40), randint(2,10)) p = nb * r COUL = (70, 75, 75) fill_rect(0, 0, 320, 222, (255, 210, 0)) def cercles(u,v,du,dv): # Bord opposé (en diagonale) au point de départ (u,v) (u2, v2) = (u + du * nb * r, v + dv * nb * r) # Pour chaque pixel du carré p * p for x in range(p): for y in range(p): # Recherche du n° de l'anneau d = int(sqrt(x ** 2 + y ** 2) / r) # Si c'est un nb impair et qu'il est inférieur au nb d'anneaux total if d & 1 and d < nb: # On le dessine (gris foncé) set_pixel(u + du * x, v + dv * y, COUL) # Distance point par rapport à l'autre extrémité # et calcul du n° de l'anneau d2 = int(sqrt((x - p) ** 2 + (y - p) ** 2) / r) # On dessine pixel si en dehors des anneaux précédents if d2 > nb - 2: set_pixel(u2 - du * x, v2 - dv * y, COUL) def motif(x,y): # (a,b) = position départ du motif et (c,d) = directions du remplissage en x et y # Faire varier (c,d) avec d'autres combinaisons de 1 et -1 for (a,b,c,d) in ((1,1,-1,-1),(2,0,-1,1),(0,2,1,-1),(1,1,1,1)): cercles(x + a * p, y + b * p, c, d) for c in range(1+ 160 // p): for l in range(1 + 110 // p): motif(2 * c * p,2 * l * p)
760 Bytes Public
Script d’origine en BASIC pour Apple Adaptation pour la Numworks avec une compression type RLE (Run-Length Encoding)
1.1 KB Public
1.44 KB Public
Il existe plusieurs versions du jeu des allumettes : Celle où il n’y a qu’une ligne et chaque joueur peut enlever 1, 2 ou 3 allumettes. Le perdant est celui qui prend la dernière allumette Celle appelée Jeu de Nim qui utilise plusieurs rangées et dont la stratégie gagnante utilise le “ou exclusif, j’ai fait une vidéo à ce sujet La version proposée ici n’utilise que 2 rangées. Vous pouvez enlever autant d’allumettes que vous voulez sur UNE des 2 rangées, ou alors enlever le même nombre d’allumettes sur les DEUX rangées en même temps. Le gagnant est celui qui enlève la (ou les) dernière(s) allumette(s). Utilisation avec la NUMWORKS : Flèche du haut pour enlever des allumettes sur la rangée du haut, flèche du bas pour la rangée du bas, flèche de gauche pour les 2 rangées à la fois, OK pour valider et touche Backspace pour annuler votre coup. L’intervention du nombre d’Or dans la redoutable stratégie de la calculatrice parait tout à fait étonnante ! Si vous voulez en savoir plus, regardez par ici. Ma chaine Youtube
2.59 KB Public
Ma playlist consacrée à la NUMWORKS
1.39 KB Public
682 Bytes Public

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.