FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Hier à 23:55

» KGF_dll - nouvelles versions
par pascal10000 Hier à 17:27

» Mah-Jong européen new-look
par Minibug Mar 12 Déc 2017 - 22:31

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Chercher un algorithme

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Chercher un algorithme   Jeu 4 Juil 2013 - 21:32

Comme j’aime joindre l’inutile à l’agréable, je vous propose un programme inutile qui ne sert à rien, sauf ...
Ah, non : tous mes programmes servent à quelque chose : même à RIEN !, si on peut qualifier « il ne sert à rien »,  le fait de trouver un algorithme élégant à un problème non moins élégant !

Pour les débutants en programmation (comme moi-même), mais aussi pour les programmeurs confirmés (comme vous l'êtes) : Comment trouver un algorithme pour résoudre le  problème suivant ?

Voici le problème :
Il s'agit de remplir un tableau avec les entiers consécutifs, en partant de la case en haut à gauche occupée par 1, et en tournant dans le sens de l'horloge, tout en longeant les bords déjà occupés, et en finissant au centre du tableau (pas nécessairement le centre géométrique) sur la dernière case vide.

Le problème peut être décrit autrement :
Soit un tableau A de N lignes et P colonnes et X=1 placé dans la première case. On remplit alors, tant qu'elles sont vides, les cases de la première ligne (de gauche à droite),  de la dernière colonne (de haut en bas), de la dernière ligne (de droite à gauche), et enfin de la première colonne (de bas en haut), avec X incrémenté à chaque fois. Puis on recommence avec le sous-tableau de N-2 lignes et P-2 colonnes encore  libre et le X suivant la dernière valeur qui a été placée.

Remarque :
L'idée suivant laquelle on peut chercher une formulation du terme  d'indice i et j dans A, constitue un autre algorithme qui, non seulement, risque d'être assez laborieux à analyser, mais encore n'apporterait pas d'amélioration au programme : il y aura toujours N*P "affectations".
Il est beaucoup plus élégant de construire quatre tâches se succédant:
Ligne_haute() ;  Colonne_Gauche();  Ligne_Basse();  Colonne_Droite()

Qui dit mieux ?

Spoiler:
 


Dernière édition par papydall le Ven 5 Juil 2013 - 0:56, édité 1 fois (Raison : Pour incorporer des WAIT 50 sur une idée de Mindstorm)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
mindstorm

avatar

Nombre de messages : 542
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Chercher un algorithme   Jeu 4 Juil 2013 - 22:04

bonsoir papydall
peut on conciderer que les cases sont toute vides ou faut il sauter les cases pleines
en attendant j'ai rajouté des pause 200 a chaque sub ça permet de visualiser l'escargot pirat 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 0:57

@mindstorm

Au départ, toutes les case sont vides bien sûr ! Puis on ne revient plus sur les cases déjà traitées.
L’idée d’incorporer des pauses dans l’affichage est une bonne idée, pour visualiser le déroulement de l’algorithme.
J’ai modifié mon code, en conséquence.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
bignono

avatar

Nombre de messages : 1104
Age : 60
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 17:08

Bonjour à tous, Smile 
Bonjour Papydall Very Happy 
Ton code est intéressant mais pourquoi commencer en haut à gauche et faire tout le tour?
C'est l'algorithme de l'escargot. Moi je me suis dit qu'il est peut-être possible de commencer par le milieu ou plutôt la dernière case et de s'enrouler autour; on peut même construire un tableau. Seule contrainte, connaître la case de départ et avoir un tableau aux mêmes dimensions horizontales et verticales.
Je ne sais pas si mes tests sont bons, j'ai fait le programme à la va vite!
Je n'ai pas le temps, mais je pense que l'on peut l'améliorer sensiblement.
Bon je retourne à mes recherches généalogiques. A plus tard et bon courage à tous!
Code:
dim C,L,q,i,j,k,el,ec
C=14:L=14:q=(C-1)*(L-1)
dim a(C,L)
full_space 0:font_bold 0:font_size 0,12
for i=0 to C:for j=0 to L:a(i,j)=0:next j:next i
i=7:j=7:a(i,j)=q:print_locate 200+(i*36),100+(j*20):print q
for k=(q-1) to 1 step -1
   if a(i-1,j)=0 then el=j:ec=i-1
   if a(i-1,j)=0 and a(i+1,j)<>0 then el=j+1:ec=i
   if a(i+1,j)=0 and a(i,j-1)<>0 then el=j:ec=i+1
   if a(i,j-1)=0 and a(i-1,j)<>0 then el=j-1:ec=i
   if a(i+1,j)<>0 and a(i,j+1)<>0 then el=j:ec=i-1
   j=el:i=ec:a(i,j)=k
   print_locate 200+(i*36),100+(j*20):print k:pause 200
next k
Wink  Wink  Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Juil 2013 - 17:48


Voilà ce que çà donne quand deux panoramiciens se rencontrent....

lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 17:52

lol! 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 17:59

lol! lol! lol! lol! lol! lol! lol!
Je pense que ce sera une image qui ressortira de temps en temps celle là ...
lol! lol! lol! lol! lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 19:17

Merci  à tous ceux qui ont pris la peine d’intervenir.
Quand une grande idée germe dans la tête de deux plus grands Panoramiciens de tous les temps (Bignono et Papydall), un Ygeronimi se fera découvrir son don de caricaturiste, un Jean Claude résumera ses sentiments dans un LOL, et un Jicehel prédira l’avenir !

Maintenant, les choses sérieuses !
L’algorithme de l’escargot, je l’ai trouvé dans un cours de Turbo Pascal qui parle d’algorithmique. Moi je ne sais rien inventer, mais (faute de mieux) j’essaye d’adapter certaines idées et algorithmes en les codant en PANORAMIC pour prévenir que mes rouages ne deviennent rouillés !
 


!!! VIVE LA TECHNOLOGIE !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
bignono

avatar

Nombre de messages : 1104
Age : 60
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Chercher un algorithme   Ven 5 Juil 2013 - 21:01

L'algorithme de l'escargot ça peut servir à plein de choses. Entre autre je pense à faire un plateau de jeu de société avec le départ et l'arrivée un peu comme le jeu de l'oie par exemple. D'autres applications sont certainement possible, il suffit d'un peu d'imagination. Moi je trouve super que Papydall tu aies ouvert le débat là dessus.
Maintenant, yen a qui ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Juil 2013 - 22:17

lol! lol! lol! lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Ven 5 Juil 2013 - 23:38

En modifiant deux ou trois lignes au code de Papydall, j'ai obtenu quelque chose qui ressemble déjà un peu plus à un plateau de jeu...

Code:
dim n, p, x, C,L,b

et

Code:

SUB ecrire(L, C)
    x = x + 1 : b=x:alpha b:left b,12*(5*C-4)
    width b,48:top b,24*L :caption b,string$(4-len(str$(x))," ")+str$(x)+" "
    color b,int(1+rnd(255)),int(1+rnd(255)),int(1+rnd(255))
END_SUB

Le tout fait :

Code:

' *****************************************************************************
' Escargot.bas  par Papydall
' --------------------------
' Il s'agit de remplir un tableau avec les entiers consécutifs, en partant de la
' case en haut à gauche occupée par 1, et en tournant dans le sens de l'horloge,
' tout en longeant les bords déjà occupés, et en finissant au centre du tableau
' sur la dernière case vide.
' QUESTION : Comment trouver un algorithme pour resoudre ce problème ?
' ------------------------------------------------------------------------------
' Le problème peut être décrit autrement :
' Soit un tableau A de N lignes et P colonnes et X=1 placé dans la première case.
' On remplit alors, tant qu'elles sont vides, les cases de la première ligne (de gauche à droite),
' de la dernière colonne (de haut en bas), de la dernière ligne (de droite à gauche), et enfin de
' la première colonne (de bas en haut), avec X incrémenté à chaque fois.
' Puis on recommence avec le sous-tableau de N-2 lignes et P-2 colonnes encore
' libre et le X suivant la dernière valeur qui a été placée.
' -----------------------------------------------------------------------------
' Remarque : l'idée suivant laquelle on peut chercher une formulation du terme
' d'indice i et j dans A, constitue un autre algorithme qui, non seulement, risque
' d'être assez laborieux à analyser, mais encore n'apporterait pas d'amélioration
' au programme : il y aura toujours N*P "affectations".
' Il est beaucoup plus élégant de construire quatre tâches se succédant:
' Ligne_haute() ; Colonne_Gauche(); Ligne_Basse(); Colonne_Droite()

' *****************************************************************************

dim n, p, x, C,L,b
n = 24 : p = 16 : ' 24 lignes et 16 colonnes
full_space 0 : font_bold 0 : font_size 0,12
escargot(n, p) : caption 0,"Terminé"
end
' ****************************************************************************
SUB Escargot(n, p)
    x = 0 : Ligne_Haute(1, n, 1, p)
END_SUB
' ***************************************************************************
SUB ecrire(L, C)
    x = x + 1 : b=x:alpha b:left b,12*(5*C-4)
    width b,48:top b,24*L :caption b,string$(4-len(str$(x))," ")+str$(x)+" "
    color b,int(1+rnd(255)),int(1+rnd(255)),int(1+rnd(255))
END_SUB
' ****************************************************************************
SUB Ligne_Haute(L0, L1, C0, C1)
    for C = C0 to C1 : ecrire(L0, C) : next C
    if L0 < L1 then Colonne_Droite(L0 + 1, L1, C0, C1)
END_SUB
' ****************************************************************************
SUB Colonne_Gauche(L0, L1, C0, C1)
    for L = L1 to L0 step -1 :  ecrire(L, C0) : next L
    if C0 < C1 then Ligne_Haute(L0, L1, C0 + 1, C1)
END_SUB
' ****************************************************************************
SUB Ligne_Basse(L0, L1, C0, C1)
    for C = C1 to C0 step -1 : ecrire(L1, C) : next C
    if L0 < L1 then Colonne_Gauche(L0, L1 - 1, C0, C1)

END_SUB
' ****************************************************************************
SUB Colonne_Droite(L0, L1, C0, C1)
    for L = L0 to L1 : ecrire(L, c1): next L
    if C0 < C1 then Ligne_Basse(L0, L1, C0, C1 - 1)
END_SUB
' ***************************************************************************




Sleep Vanné, dodo !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Chercher un algorithme   Sam 6 Juil 2013 - 10:39

Merci Froggy One
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
mindstorm

avatar

Nombre de messages : 542
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Chercher un algorithme   Sam 6 Juil 2013 - 23:20

bonsoir a tous
seul un panoramicien peut avoir l'idée de commancer un escargot par le centre drunken 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Chercher un algorithme   Dim 7 Juil 2013 - 12:11

Excellente constatation !
J’aime et je partage.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
mindstorm

avatar

Nombre de messages : 542
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Chercher un algorithme   Lun 8 Juil 2013 - 19:41

bonsoir a tous
il me vient une idée PANORAMICIENNE
si si j'ai des idees
pourquoi ne pas faire un vrai (rond) escargot en partant du centre est qui s'arrete quand il detecte un bord
si quelqu un est en vacance, pas les retraité ils n'ont jamais le temps Razz 
bonne soirée
Mindstorm
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 8 Juil 2013 - 20:00

Ca y est ! encore un de perverti !!!
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Mar 9 Juil 2013 - 17:48

un truc comme ça ?

Code:

2d_target_is 0:color 0,60,144,151
dim n,pas,mgbas,mght,mgg,mgd : ' pas et marges
dim x,y,xc,yc:xc=width(0)/2:yc=height(0)/2
dim fgstop
x=xc:y=yc:n=1:pas=3
mgbas=100:mght=mgbas:mgg=mght:mgd=mgg
2d_point x,y : 2d_poly_from x,y
repeat
       x=x+pas
       if x>width(0)-mgd then fgstop=1
       2d_poly_to x,y
       y=y+pas
       if y>height(0)-mght then fgstop=1
       2d_poly_to x,y
       pas=pas*(n+1)
       x=x-pas
       if x<mgg then fgstop=1
       2d_poly_to x,y
       y=y-pas
       if y<mgbas then fgstop=1
       pas=pas*(n+1)
       2d_poly_to x,y
until fgstop=1
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Chercher un algorithme   Mar 9 Juil 2013 - 18:57

OK, mais tu n’as pas besoin de 2d_point x,y ligne 7 puisque juste après tu fais 2d_poly_from x,y.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Mar 9 Juil 2013 - 19:22

Très juste !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Contenu sponsorisé




MessageSujet: Re: Chercher un algorithme   

Revenir en haut Aller en bas
 
Chercher un algorithme
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» algorithme de classement
» Petite réflexion personnelle
» Je suis étourdie de chercher hi hi hi
» — Lullaby Scenario's --- Selena Gomez
» Créé un installeur...pérféctionné !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: