La Question du Dimanche IV
Modérateur : Politburo
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
La Question du Dimanche IV
Comme j'avais un peu de temps hier, j'ai testé le fonctionnement de mon Commodore C128D et installé une petite télé THOMSON pour lui servir d'écran 40 col. tout en profitant simultanément de l'affichage 80 col. sur mon moniteur original.
Tout va bien, il fonctionne toujours aussi bien et j'ai pu le faire fonctionner en profitant des deux affichages, ce qui est une vraie révolution :
En 30 ans c'est la première fois que je n'ai pas à appuyer sur la touche du moniteur pour swapper entre les deux écrans !
Ce qui m'amène à la question de ce dimanche, jour de mémoire doublement férié
A quoi correspond cette capture d'écran (graphique) ?
Cette question en amènera certainement d'autres et je ne fournirai la réponse qu'à partir de la fin de semaine prochaine.
Ou bien plus tard, si aucune de vos propositions ne s'avère exacte.
Par contre, quelques indices pourraient être diffusé d'ici là en réponse à d'éventuelle sollicitations.
Tout va bien, il fonctionne toujours aussi bien et j'ai pu le faire fonctionner en profitant des deux affichages, ce qui est une vraie révolution :
En 30 ans c'est la première fois que je n'ai pas à appuyer sur la touche du moniteur pour swapper entre les deux écrans !
Ce qui m'amène à la question de ce dimanche, jour de mémoire doublement férié
A quoi correspond cette capture d'écran (graphique) ?
Cette question en amènera certainement d'autres et je ne fournirai la réponse qu'à partir de la fin de semaine prochaine.
Ou bien plus tard, si aucune de vos propositions ne s'avère exacte.
Par contre, quelques indices pourraient être diffusé d'ici là en réponse à d'éventuelle sollicitations.
Modifié en dernier par C.Ret le 11 nov. 2018 14:39, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5259
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: La Question du Dimanche IV
Un représentation des nombres premiers affichés en spirale en partant du milieu.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Re: La Question du Dimanche IV
Un jeu de la vie
Commodore (64/128/Amiga), HP (28/41/48/50/71/75/200/Prime) et autres (Ti, Canon X07, Psion, Casio, Palm, Thomson, Exl, Amstrad)
- Marge
- Fonctionne à 14400 bauds
- Messages : 6186
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: La Question du Dimanche IV
Oui, je dirais la même chose, la "spirale" de Ulam (orthographe approximative).bernouilli92 a écrit : ↑11 nov. 2018 14:25 Un représentation des nombres premiers affichés en spirale en partant du milieu.
Mais enfin, ça pourrait être autre chose, venant de toi...
C'est une vue inspirante en tout cas.
3 hommes, 3 demis, un 3a... Magnéto, Serge !
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
- babaorhum
- Fonctionne à 1200 bauds
- Messages : 454
- Enregistré le : 13 janv. 2013 19:44
- Localisation : Marseille-est
Re: La Question du Dimanche IV
Hello,
C'est avant ou après le passage en vitesse lumière ?
C'est avant ou après le passage en vitesse lumière ?
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: La Question du Dimanche IV
Ah! Ah!
Je vois que certains ont déjà trouvé.
D'autres sont encore à des années lumière. Remarquons que cela n'est pas un problème, le mode C64 de mon appareil me permet d'explorer un univers infini de possibilités.
En guise d'aide, je voulais donner le code qui génère cet écran:
Mais je ne suis pas sûr que cela soit d'un grand secours !
Je vois que certains ont déjà trouvé.
D'autres sont encore à des années lumière. Remarquons que cela n'est pas un problème, le mode C64 de mon appareil me permet d'explorer un univers infini de possibilités.
En guise d'aide, je voulais donner le code qui génère cet écran:
Code : Tout sélectionner
list
10 color 0,rclr(5):color 1,rclr(6):color 4,rclr(0):graphic 1,1:dim h(56),x%(3),y%(3)
20 h(1)=257:x%(0)=1:y%(1)=-1:x%(2)=-1:y%(3)=1:e=2^-7:n=1:x%=100:y%=x%
30 do until y%<0:if p% then draw 1,1.6*x%,y%:if k%<56 then k%=k%+1:h(k%)=n*(n+.001)
40 n=n+1:p%=1:s%=s%+1:x%=x%+x%(d%):y%=y%+y%(d%):if s%>l% then s%=0:l%=l%+(d%and1):d%=(d%+1)and3
50 do while int(h(1))<=n:p%=0:i=1:h=h(1)+int(1e3*(h(1)-int(h(1)))+e)
60 do:h(i)=h:i=i+i:if i>k% then exit:else if i<k% then if h(i+1)<h(i) then i=i+1
70 if h(i)<h then h(i/2)=h(i): else exit
80 loop:loop:loop:end
ready.
Mais je ne suis pas sûr que cela soit d'un grand secours !
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: La Question du Dimanche IV
Comme je trouvais le code-ci dessus peu visible, je vous ai préparé une version colorée et commentée.
Il s'agit donc bien d'une spirale d'Ulam.
Elle est identique à celle illustrant l'article sur Wikipédia :
Il y a d'autres "spirales" que je trouve très bien. En particulier celle avec le nombre de diviseurs. mais je ne sais pas comment la représenter correctement avec un CBM.
Par ailleurs, il m'a fallu plus de 6 heures pour l'obtenir. La question qui en découle est, y -t- il un algorithme plus efficace ?
Il s'agit donc bien d'une spirale d'Ulam.
Elle est identique à celle illustrant l'article sur Wikipédia :
Il y a d'autres "spirales" que je trouve très bien. En particulier celle avec le nombre de diviseurs. mais je ne sais pas comment la représenter correctement avec un CBM.
Par ailleurs, il m'a fallu plus de 6 heures pour l'obtenir. La question qui en découle est, y -t- il un algorithme plus efficace ?
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5259
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: La Question du Dimanche IV
Je ne sais pas trop comment tu as fait pour dessiner ta spirale.
Mais si tu testes les nombres un à un pour déterminer s’ils sont premiers ou pas, tu irais certainement plus vite en programmant un crible de Eratosthene.
Mais si tu testes les nombres un à un pour déterminer s’ils sont premiers ou pas, tu irais certainement plus vite en programmant un crible de Eratosthene.
Modifié en dernier par bernouilli92 le 15 nov. 2018 11:56, modifié 1 fois.
HP, Casio, Sharp, Psion, quelques TI et divers autres
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: La Question du Dimanche IV
C'est effectivement l'idée, utiliser un crible pour profiter pleinement de l'énumération et déterminer les nombres premiers au fur et à mesure de la progression.
Je n'ai pas utilisé un crible d'Eratosthène, mais quelque chose de très semblable, un crible de Sudaram comme je l'ai fait pour imprimer comme Jürgen Keller.
A la différence qu'ici je parcours les nombres un par un pour dessiner en même temps la "spirale".
Le crible de Sudaram est donc un peu modifié car je considère tous les multiples de chaque facteur au lieu d'un multiple sur deux (astuce qui permet de ne parcourir que les nombres impairs).
Mais le principe reste le même, au fur et à mesure de l'avancement, chaque nombre premier p devient le facteur générateur d'une suite de multiples commençant à p²:
Comme on parcourt dans l'ordre, rien ne sert de mémoriser tous les multiples, simplement le prochain pour chaque facteur.
C'est là qu'intervient le min-Heap qui permet en un minimum d'efforts de toujours pointer sur le plus petit des multiples tous facteurs confondus.
C'est à cela que sert le tableau R() dans lequel est organisé le min-Heap sous forme d'un tas binaire. La partie fractionnaire des nombres permet de mémoriser le facteur correspondant.
Par exemple, si on regarde le contenu de la mémoire lorsque n atteint 19 on a :
Comme 19 est inférieur à 20, 19 est premier et une nouvelle chaine de multiple est initiée en ajoutant 361.019 en R(8), fin du tableau. qui est alors prêt pour la valeur suivante n=20. 20 est composé car égal à INT R(1). La racine du tableau est alors incrémentée de 2 et descendue (PUSH DOWN) ce qui fait remonté le multiple attendu suivant. (21 issue du facteur 3).
Qui est composée
Pour aller jusqu'à 40'000 (spirale de 200x200 pixels) il faut tenir compte d'une cinquantaine de facteurs premiers.
Quand à la spirale, elle est dessinée selon le schéma ci-dessous:
Pour chaque entier n, j'avance d'une case ma "tortue graphique" comme je le faisait en LOGO.
Au bout d'une certaine longueur, je tourne la tortue d'un quart de tour à gauche est je recommence sur une longueur que j'augmente d'une unité deux fois par révolution complète. C'est à dire une fois sur deux après un virage à gauche de façon à ne laisser aucune "case vide" entre les nombres
Je n'ai pas utilisé un crible d'Eratosthène, mais quelque chose de très semblable, un crible de Sudaram comme je l'ai fait pour imprimer comme Jürgen Keller.
A la différence qu'ici je parcours les nombres un par un pour dessiner en même temps la "spirale".
Le crible de Sudaram est donc un peu modifié car je considère tous les multiples de chaque facteur au lieu d'un multiple sur deux (astuce qui permet de ne parcourir que les nombres impairs).
Mais le principe reste le même, au fur et à mesure de l'avancement, chaque nombre premier p devient le facteur générateur d'une suite de multiples commençant à p²:
Code : Tout sélectionner
p : p² p+p² 2p+p² 3p+p² 4p+p² ...
2: 4 6 8 10 12 ...
3: 9 12 15 18 21 ...
5: 25 30 35 40 45 ...
...
C'est là qu'intervient le min-Heap qui permet en un minimum d'efforts de toujours pointer sur le plus petit des multiples tous facteurs confondus.
C'est à cela que sert le tableau R() dans lequel est organisé le min-Heap sous forme d'un tas binaire. La partie fractionnaire des nombres permet de mémoriser le facteur correspondant.
Par exemple, si on regarde le contenu de la mémoire lorsque n atteint 19 on a :
Code : Tout sélectionner
n=19
R(1..7)= ┌───────────20.002──────────┐
┌────21.003───┐ ┌────25.005───┐
49.007 121.011 169.013 289.017
R(8)=361.019
Comme 19 est inférieur à 20, 19 est premier et une nouvelle chaine de multiple est initiée en ajoutant 361.019 en R(8), fin du tableau. qui est alors prêt pour la valeur suivante n=20. 20 est composé car égal à INT R(1). La racine du tableau est alors incrémentée de 2 et descendue (PUSH DOWN) ce qui fait remonté le multiple attendu suivant. (21 issue du facteur 3).
Code : Tout sélectionner
n=20
R(1..8)= ┌───────────21.003──────────┐
┌────22.002───┐ ┌────25.005───┐
┌────49.007 121.011 169.013 289.017
361.019
Pour aller jusqu'à 40'000 (spirale de 200x200 pixels) il faut tenir compte d'une cinquantaine de facteurs premiers.
Quand à la spirale, elle est dessinée selon le schéma ci-dessous:
Pour chaque entier n, j'avance d'une case ma "tortue graphique" comme je le faisait en LOGO.
Au bout d'une certaine longueur, je tourne la tortue d'un quart de tour à gauche est je recommence sur une longueur que j'augmente d'une unité deux fois par révolution complète. C'est à dire une fois sur deux après un virage à gauche de façon à ne laisser aucune "case vide" entre les nombres
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Re: La Question du Dimanche IV
Je n'ai pas beaucoup de temps à consacrer à la programmation pour le moment, mais voici mon petit programme
La spirale se dessine sur le 40col pendant qu'on voit la progression sur le 80col. Il y a encore pas mal de boulot pour optimiser un peu le tout!
La spirale se dessine sur le 40col pendant qu'on voit la progression sur le 80col. Il y a encore pas mal de boulot pour optimiser un peu le tout!
Code : Tout sélectionner
10 graphic 1,1
20 x=0:y=0:q=1:a=1:b=0:p=1
30 gosub 150
40 for i=1 to q
50 x=x+a
60 gosub 150
70 next i
80 for i=1 to q
90 y=y+a
100 gosub 150
110 next i
120 q=q+1
130 a=a*-1
140 goto 40
150 b=b+1
160 print b;"=";x;y;
165 if b/2=int(b/2) then 230
170 for j=2 to sqr(b)
180 if b/j=int(b/j) then p=0
190 next j
200 if p=0 then 220
205 print "premier"
210 draw 1,x+160,y+100
220 p=1
230 return
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: La Question du Dimanche IV
Cela aurait pu faire l'objet dimanche soir d'une nouvelle question du dimanche. Mais comme il s'agit de la même spirale, je préfère poster dans ce même fil.
Il y d'autres alignements et diagonales sur ces spirale, je ne pensait pas pouvoir les tracer sur l'écran graphique de mon C128D. Surtout que l'instruction CIRCLE ne sait pas tracer des rayons autre qu'entier.
Je mets ici deux captures (obtenue sur émulateur car les image sont plus faciles à poster que des photos)
A vous de trouver quelle est la propriété représentée sur ces spirales !
(Question du dimanche postée un mardi - n'importe quoi ce forum ! )
Il y d'autres alignements et diagonales sur ces spirale, je ne pensait pas pouvoir les tracer sur l'écran graphique de mon C128D. Surtout que l'instruction CIRCLE ne sait pas tracer des rayons autre qu'entier.
Je mets ici deux captures (obtenue sur émulateur car les image sont plus faciles à poster que des photos)
A vous de trouver quelle est la propriété représentée sur ces spirales !
(Question du dimanche postée un mardi - n'importe quoi ce forum ! )
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6186
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: La Question du Dimanche IV
Bonsoir,
Vraiment a priori, les amas lumineux ne pouvant représenter des entiers premiers consécutifs dans N, je suppose que tu as étudié, a maxima, les impairs.
Juste une piste...
Vraiment a priori, les amas lumineux ne pouvant représenter des entiers premiers consécutifs dans N, je suppose que tu as étudié, a maxima, les impairs.
Juste une piste...
3 hommes, 3 demis, un 3a... Magnéto, Serge !
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠