Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour « challenge » dans sujets.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Fonctionnement de ce site
    • Nouvelle règle pour les invités : plus d'écriture possible sans inscription
    • CADxp, comment ça marche?
    • CADxp, vos souhaits
    • Forum test
  • Emploi
    • Emploi, monde du travail
  • AutoCAD
    • AutoCAD 3D
    • AutoCAD 2020-2024
    • AutoCAD LT 2024
    • AutoCAD LT 2020-2023
    • AutoCAD 2019
    • AutoCAD LT 2019
    • AutoCAD 2018
    • AutoCAD LT 2018
    • AutoCAD 2017
    • AutoCAD LT 2017
    • AutoCAD avant 2017
    • AutoCAD LT avant 2017
    • Tutoriaux AutoCAD
    • AutoCAD, liste de souhaits
  • Autres logiciels de CAO
    • Microstation
    • IntelliPlus, IntelliCAD, CadIdesk
    • ZWCAD
  • Architecture, Bâtiment
    • Revit
    • AutoCAD Architecture
    • AutoCAD MEP
    • BIM
  • Mécanique
    • Inventor
    • SolidWorks
    • Creo (ex. Pro/Engineer)
    • Catia
  • SIG, Génie civil, Cartographie, VRD
    • Autodesk Map
    • VRD
    • Covadis
    • Infraworks 360
    • Mensura
    • AutoCAD Civil
    • Autopiste
    • SIG internet
  • Imagerie, animation, PAO, modélisation 3D
    • 3DSMAX
    • Création et retouche d'images
    • Sketchup
    • Autres logiciels d'infographie
    • Lumion 3D
  • Programmation
    • LISP et Visual LISP
    • VBA et VB
    • Personnalisation, macros, DIESEL
    • ObjectARX/DBX, C++, .NET, RealDWG
    • Programmer en s'amusant
    • Suggestions de développements
  • Trucs et astuces
    • AutoCAD trucs et astuces
    • Windows trucs et astuces
  • Matériel CAO
    • Ordinateurs
    • Périphériques d'entrée
    • Périphériques de sortie, impression
  • Divers
    • CAO, généralités
    • Echanges de fichiers
    • Organisation du travail
    • Visualisateurs, annotation
    • Pause café
    • Bibliothèques de composants
    • Formation
  • Logiciels connexes
    • Devis, métré, estimation, quantitatif
    • Calculs et simulation
  • Forums métier
    • Bâtiment
    • Infrastructures

Calendriers

Il n’y a aucun résultat à afficher.

Blogs

Il n’y a aucun résultat à afficher.


Rechercher les résultats dans…

Rechercher les résultats qui contiennent…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. (gile)

    La Vérité sur le LISP

    Salut, Oui cet article parle du LISP en général. Ce qui m'a beaucoup amusé, c'est la dérision basée sur ce qu'a de génial le LISP (sa simplicité et sa puissance), ce qui permet d'en faire les louanges tout en en montrant les travers "narcissiques". AutoLISP n'est certainement pas le dialecte LISP le plus puissant, c'est juste un langage basé sur le LISP qui est spécialement dédié à AutoCAD (ssget en est un exemple parmi tant d'autres). Mais en conservant la simplicité et la souplesse des langages LISP, il permet (assez) facilement d'implémenter des fonctions qui n'existe pas nativement. Voir ce challenge, sur TheSwamp où des solutions pour porter la fonction let dans AutoLISP sont proposées.
  2. Salut Cela me rappel ce Challenge @+
  3. Bonjour, Je revisite ce challenge étant bien incapable à l’époque d’écrire la fonction réciproque bv:lst2tree ( même si j’avais l’intuition qu’une autre voie bien plus simple était possible…) Je publie donc aujourd’hui ma solution, elle utilise deux fonctions mutuellement récursives afin d’économiser des allers et retours inutiles dans le traitement de la liste fourni en argument ( au benchmark le traitement est 2 fois plus rapide). (defun bv:lst2tree (lst / tree etete) (defun tree (lst) (cond ((null lst) nil) ((= (caar lst) (caadr lst)) ((lambda (x) (cons (cons (caar lst) (tree (car x))) (cdr x))) (etete lst) ) ) (T (cons (car lst) (tree (cdr lst)))) ) ) (defun etete (lst) (if (= (caar lst) (caadr lst)) ((lambda (acc) (cons (cons (cdar lst) (car acc)) (cdr acc))) (etete (cdr lst)) ) (cons (list (cdar lst)) (tree (cdr lst))) ) ) (tree lst) ) Pour le fun, je donne également une version plus «fonctionnelle» de bv:tree2lst que celle donné précédemment ( au passage j’ai corrigé cette version), contrairement à la version précédent la liste lst ne se construit plus à la descente mais à la remonté des appels.. (defun bv:tree2lst (tree) (cond ((null tree) nil) ((atom tree) tree) (T ((lambda (a d) (cond ((and (atom a) d)(mapcar '(lambda (x) (cons a x)) d)) ((or (atom a) (atom (car a))) (cons a d)) (T (append a d)) ) ) (bv:tree2lst (car tree)) (bv:tree2lst (cdr tree)) ) ) ) )
  4. Bonsoir, Tout d’abord, je n’ai pas pris assez de recul avec mon teste au benchmark, tel qu’il était formulé j’effectuais la comparaison entre une fonction lambda et une fonction member à chaque répétion et pas l’évaluation de l’optimisation réalisé dans mon code. Le bon teste ressemblerai plus à une comparaison de ce type, désolé pour l’étourderie. Oui (gile), on pouvait faire différemment, d’ailleurs j’avais déjà la structure de base dans une fonction quasi similaire bv:l=npe (il ne restait qu’à la retoucher un peu). ;; --------------------------------------------------------------- ;; (bv:l=npe n lst) ;; --------------------------------------------------------------- ;; Renvoie une Liste égal aux N Premiers Eléments. ;; Exemple : ;; (bv:l=npe 0 '(a b c d e)) renvoie nil ;; (bv:l=npe 2 '(a b c d e)) renvoie (A B) ;; (bv:l=npe 8 '(a b c d e)) renvoie (A B C D E) (defun bv:l=npe (n lst / fun) (defun fun (n lst) (if (< 0 n) (cons (car lst) (bv:l=npe (1- n) (cdr lst))) ) ;_ Fin de if ) ;_ Fin de defun (if (< n (length lst)) (fun n lst) lst ) ;_ Fin de if ) ;_ Fin de defun Que j’avais écrit en même temps que la fonction bv:l-npe. ;; --------------------------------------------------------------- ;; (bv:l-npe n lst) ;; --------------------------------------------------------------- ;; Renvoie une Liste des privés de ses N Premiers Eléments, ;; Exemple : ;; (bv:l-npe 0 '(a b c d e)) renvoie (A B C D E) ;; (bv:l-npe 2 '(a b c d e)) renvoie (C D E) ;; (bv:l-npe 8 '(a b c d e)) renvoie nil (defun bv:l-npe (n lst) (cond ((< 3 n) (bv:l-npe (- n 4) (cddddr lst))) ((< 2 n) (bv:l-npe (- n 3) (cdddr lst))) ((< 1 n) (bv:l-npe (- n 2) (cddr lst))) ((< 0 n) (bv:l-npe (- n 1) (cdr lst))) (T lst) ) ;_ Fin de cond ) ;_ Fin de defun Pour écrire une fonction sublist qui travaille directement sur la tête de liste et non sur l’indice (ou position) des élèments comme tu l’a fait dans la tienne. Mais pour en revenir à c-member, j’ai voulu tenter une approche différente surtout depuis hier lorsque je me suis aperçu que ces fonctions avaient déjà été évoqué dans le challenge n° 22 ( Au passage dure dure de passer après vous mais cela doit être un peu normal, je n’ai que 10 ans de retard à rattraper). Mais j’avoue que ta fonction trunc à l’avantage d’être linéaire dans sa performance contrairement à la mienne qui dépend de l’âge du capitaine (c.a.d. du nombre d’éléments identique constituant lst). Merci pour le retour, convaincu par ta reflexion sur la lisibilité. Patrick_35, non pas forcément d’ailleurs en général en tant qu’apprenant, je m’efforce de coder les deux histoires de ne pas m’enfermer complément dans un style plus que dans un autre. Mais j’avoue avoir un gros penchant pour le côté fonctionnelle que je privilégie toujours en première approche et effectivement comme l’a dit (gile) des qu’il est question de prédicat dans un processus répétitif difficile en programmation fonctionnelle d’éviter de faire une récursive. Au passage je trouve ce type de fonctions beaucoup plus souple pour le traitement et le travail sur les listes (qui sont d’ailleurs elles-mêmes des structures récursives), prenons en exemple la fonction pa:c-member et la fonction gc:trunc pour moi c’est le même traitement à la différence prés qu’avec une boucle while tu ne peux conser ta liste que dans un sens ce qui t’oblige à un reverse. Alors qu’en récursif tu peux conser en descendant dans tes appels (avec un argument suplémentaire en guise d’accumulateur) cas de la recursion terminal et la tu devrais également employer un reverse, ou alors tu peux conser en remontant tes appels récursif (ce que fait la fonction trunc) cas de la recursion enveloppante et la plus besoin de reverse. Il est également très difficile d’explorer avec while des listes de profondeur inconnue, alors qu’avec la récursion multiple rien de plus facile : ;; --------------------------------------------------------------- ;; (bv:profondeur lst) ;; --------------------------------------------------------------- ;; Renvoie la profondeur maxi d'une liste. ;; Exemples : ;; (bv:profondeur '(a b c d e)) renvoie 1 ;; (bv:profondeur '((a b) c (((d e))))) renvoie 4 ;; (bv:profondeur '()) renvoie 0 (defun bv:profondeur (lst) (if (atom lst) 0 (max (1+ (bv:profondeur (car lst))) (bv:profondeur (cdr lst)) ) ;_ Fin de max ) ;_ Fin de if ) ;_ Fin de defun De plus les fonctions de boucle tel que repeat while me semble limiter aux imbriquations de répétition, alors que la récursion permet de les croiser voir ici pour la dernière publication en date de ce type de boucle. Pour finir j’ai jamais réussie à me servir correctement des outils de débogage de Visual Lisp, alors que en récursif il y a la fonction trace. Je crois que l’on reste fortement influencé par le style de ses débuts et quant j’ai commencé l’aventure Lisp, je me suis très vite intéressé à cette aspect de la programmation (le côté fonctionnelle), au début par défit, maintenant c’est plus par « jeux ». A+ VDH
  5. Invité

    Get WOW Gold in Many Different Ways

    Get WOW Gold in Many Different Ways PMWorld of Warcraft gold is the standard currency of World of Warcraft. Farming world of warcraft gold WOW gold isn't easy, but you can buy cheap WoW gold, guides, items on sale. We guarantee the World of Warcraft gold, the cheapest WoW gold will be sent to you within 12 hours after your payment was received. WOWGOLDSTUDIO provides World of Warcraft cheap wow gold players with fast transactions, 24/7 customer online service and transactional security wow account guaranteed. The World of Warcraft Gold(WoW Gold) that we provide are farmed in legal. Cheapest Price, Fastest Delivery, Best Service! In any fight where your group is fighting multiple mobs, you’re going to want to have some version of crowd control. For those that play tanking classes the challenge comes not when the fight begins and the mobs are tied up with freezing traps or polymorph, it comes afterward, when the time comes to break said methods of control. Buy WOW gold As Karthis mentions in a recent post on Of Teeth and Claws, breaking runescape gold crowd control successfully is more of an art form than you might think. WOW Gold is a shiny yellow metal, that for some reason everyone seems to WOW gold want. This is just as true in the real world, as it is in the virtual WOW gold of online games. Games such as World of Warcraft. Here, while it is much less shiny then the real thing, it is much more useful custom wedding dress as it is needed to buy pretty well everything. There are many ways to buy WoW Gold, from killing things to finding it, but the easiest way is just to buy it. When you kill a creature in World of Warcraft, it will usually drop an item or some best ladies watches gold for you to pick up. This is beside the usual experience points awarded cheap jerseys for victory in combat. Experience is good as well, as it allows you to level up more quickly, and so become stronger and more easily able to defeat your next combat challenge or quest. Of course, killing is not easy or fast, and so you really need to focus on it to gain a reasonable amount of gold. This may not be what you want, as it is a lot of effort, and so you also need to talk to the non-player characters scattered around the world. They will often give you cheapest wholesale handbags WOW gold, which when completed will reward you with experience and sometimes gold as well. [Edité le 6/5/2011 par sun159159]
  6. Pour les boucles et tout le reste, j'ai bien compris. C'est pas un problème. C'est tout simplement (vl-some 'entget (massoc 331 (entget b))) et ce code 331 qui m'échappait totalement, A lire la référence DXF, je croyais qu'on parlait d'attributs dont je pense savoir qu'ils sont juste dérrière le BlockBegin. Je vais me repencher sur ces 330 et 331. C'est vraiment ce 331 que j'interprétais maL En tous cas le résultat est excellent :) J'ai vu le Challenge 30. Je me souviens maintenant... j'avais oublié que je l'avais lu et y avais fait une intervention fort importante sur les moteurs à plat (notre musée déménage, j'ai passé toute la journée d'aujourd'hui à déplacer des épaves de 2CV, c'était marrant je suis impliqué dans mon assoc et fustige ceux qui veulent comparer cette merveille avec des Porshce et des Ferrari). Quand je vois la qualité des interventions, je préfère me servir de vos travaux (et les comprendre, question pas de fierté mais disons d'honneur) que de m'essayer à des solutions bancales. Chapeau pour tout. Et mystère intriguant voire fascinant sur la routine de la réponse n°1 compatible uniquement 2011...
  7. Salut, Il y avait eu ce challenge sur CADxp et ce sujet sur exmateria. Mais c'est vrai que tout ce que j'ai pu lire utilise toujours la méthode consistant à faire n purges successives, n étant arbitrairement choisi dans l'espoir d'être suffisant pour purger tous les éléments imbriqués sans faire trop de purges inutiles... De mon côté, avec .NET j'avais trouvé un moyen fiable utilisant la méthode Database.Purge qui supprime d'une collection d'ObjectId tous ceux qui correspondent à des objets non purgeables (référencés). J'ai implémenté cette méthode pour définir une fonction LISP (voir ici). Tu parles de la routine réponse #1 ? Celle qui semble ne fonctionner que sur 2011 ? Effectivement, tu n'as pas tout compris (voire pas compris du tout) mais après une bonne nuit, tu as peut-être, aujourd'hui, les idées plus claires. ;) En complément des explications données réponse #14, je vais essayer d'expliquer avec un exemple simple. Soit un bloc A0 inséré dans un bloc A1 lui même inséré dans un bloc A2. Les espaces objet et papier du dessin ne contienent aucune référence des blocs A1 et A2, pour A0 on envisagera les deux cas. Je lance (gc:purgeblock "A#") : (while (setq blk (tblnext "BLOCK" (not blk))) (if (wcmatch (strcase (setq name (cdr (assoc 2 blk)))) (strcase pat)) (setq blst (cons (cdr (assoc 330 (entget (tblobjname "BLOCK" name)))) blst)) ) ) Cette boucle while parcourt la table des blocs, et pour chaque définition de bloc dont le nom correspond au modèle (A + un chiffre), le BLOCK_RECORD est ajouté à la liste blst. Pour notre exemple, elle contient donc les BLOCK_RECORD de A0, A1 et A2. La seconde boucle while traite cette liste avec comme condition d'arrêt que la liste soit vide ou que le "drapeau" loop soit nil. On assigne T à loop avant de lancer la boucle et au début de chaque itération on remettra loop à nil. Chaque itération parcourt la liste blst (foreach ...) et pour chaque BLOCK_RECORD on fait le test qui nous dit le bloc est référencé : (or (vl-some 'entget (massoc 331 (entget B))) ...) (massoc 331 (entget B)) retourne la liste des ENAMEs de toutes les références du bloc insérées dans le dessin (espace ou définition de bloc). Mais comme explique réponse #14, certaines de ces références peuvent avoir été effacées et être toujours présentes dans la base de donnée. Dans ce cas, entget retourne nil. Donc, (vl-some 'entget (massoc 331 (entget B)) retourne T s'il existe au moins une référence non effacée du bloc b. Dans notre exemple, cette expression retourne T pour A0 (inséré dans A1) et A1 (inséré dans A2) et nil pour A2. A2 est donc traité : (progn (setq blk (vlax-ename->vla-object B)) (vlax-for o blk (if (= (vla-get-ObjectName o) "AcDbBlockReference") (vla-Delete o) ) ) (vla-delete blk) (setq blst (vl-remove b blst)) (setq loop T) ) On supprime toutes les références de bloc insérées dans A2 (référence à A1). On supprime la définition de bloc (BLOCK_RECORD) de A2 de la table On supprime A2 de blst On remet loop à T pour relancer une boucle. Lors de la seconde boucle, il n'y a plus que A1 et A0 dans la liste blst. A1 est non référencé => la référence à A0 dans A1 est supprimée => A1 est supprimé de la table et de la liste => loop = T Troisième boucle A0 est traité : - s'il n'est pas référencé (dans un espace) il est supprimé => loop = T mais blst est vide => la boucle s'arrête. - s'il est référencé, il n'est pas supprimé => loop = nil => la boucle s'arrête.
  8. Bonsoir à toutes et tous, Allez, pour changer, un p'tit challenge mathématique appliqué aux raccordements routiers. C'est un des 5 exercices du concours d'entrée à l'ESGT (Ecole Supérieur des Géomètres Topographe) de la dernière session (Juin 2010). En proportion, moins de 25 minutes à accorder à ce problème avec la rédaction. 800x900http://img.ahst.fr/data/images/extraitesg.jpg[/img] Le fichier Amusez-vous bien, :D
  9. Salut, On peut utiliser un autre algorithme pour calculer la rangée suivant, ce qui va permettre un code plus concis. Si, pour une rangée (liste), on crée deux nouvelles listes, la première en lui ajoutant un 0 au début et la seconde en lui ajoutant un 0 à la fin, la somme de ces deux listes est la rangée suivante, exemple : (mapcar '+ '(0 1 1) '(1 1 0)) retourne (1 2 1) (defun nthPascal (n / f) (defun f (l) (mapcar '+ (cons 0 l) (append l '(0)))) (if (< 0 n) (f (nthPascal (1- n))) '(1) ) ) J'ai lancé un challenge sur TheSwamp, même si tu ne lis pas l'anglais tu y trouveras des codes brillants
  10. Bonjour, à toutes et à tous. Je suis dessinateur en BE. J'utilise pas mal de logiciel tel que catia, solidworks, autocad, I-deas, etc.... parmi ces logiciels, il y a Inventor. Actuellement ,je suis en prestation chez un client sur le logiciel Autocad (2D), pour une implantation complète d'usine. Mais arrivant à terme sur le 2D, voici que l'on me demande de réaliser l'implantation en 3D sous Inventor. Hors j'ai eu une mini formation sur Inventor... j'arrive à modéliser tout ce que je veux sans problème par rapport à ma maitrise de Catia V5 et Solidworks qui ont la même philosophie de conception. Cependant il y a une fonction que je n'arrive pas à reproduire sur Inventor. J'ai cherché pendant 1h cette après midi en vain.... Cette fonction est de permettre de modéliser une course utile de mon Ensemble. Exemple si je prends un vérin sous Solidworks, je l'insère dans mon mécanisme, je mets toutes les contraintes qui vont bien pour le positionné, mais je peux aussi définir à la tige du vérin une butée (contrainte).Quand le vérin est en position rentrée au max ( la tige 3D du vérin ne passant pas au travers tout l'ensemble ,quand je la fait bouger avec la main). mais aussi lui donner une course de 200mm par exemple une fois la tige sortie, faisant au final des va et vient avec la tige sans qu'elle ne parte n'importe ou dans mon ensemble. Le problème que je rencontre aujourd'hui pour mon implantation, est de savoir ou trouver cette fonction similaire sur Inventor. Car contrairement, je n'implante pas un vérin, mais je voudrais donner une butée, ainsi qu'une course à un pont roulant présent dans le bâtiment. Je pense pas que cela soit sorcier, ni même impossible, mais je fait appelle à vous, car mon temps pour réaliser le 3D (complet de l'usine) est un véritable challenge que j'ai accepter de faire pour le client..... alors mon temps est plus que compter ;) merci d'avance Hudson59640
  11. Je l'accorde, ce challenge n'est pas facile. Peut-être est un peu moins compliqué dans l'autre sens (tree -> lst), je ne saurais dire... En tout cas je suis content que certains participent, j'attends encore pour poster mes réponses.
  12. Bon pour une fois, j'essaye de participer au challenge. Puiff ! pas facile. Je suis bien arrivé a quelque chose, mais mon arbre est imbriqué à l'envers. Je livre quand même mon bout de code bien qu'il ne réponde pas à la demande, je me suis bien grillé les neurones... (defun lst2tree (lst / tmp_l lx l_t) (while (setq lx (mapcar 'car lst)) (while (car lx) (setq l_t (cons (car lx) (vl-remove nil l_t)) lx (vl-remove (car lx) lx) ) ) (if (setq lst (vl-remove nil (mapcar 'cdr lst))) (setq l_t (cons (list l_t) (lst2tree lx))) (setq lst nil) ) ) (vl-remove nil l_t) )
  13. Salut, Effectivement, une solution itérative est possible puisqu'on connait le niveau maximum d'imbrication (3, dans le code de Patrick_35 mais on aurait pu choisir le nombre total de colonnes). Ce sujet m'a donné une idée pour un challenge.
  14. Salut, Ce sujet m'a donné une idée de challenge. Pour représenter une arborescence, on peut, soit utiliser une liste constituée des "chemins complets" de toutes les entrées : (setq lst '(("1" "1.1" "1.1.1") ("1" "1.1" "1.1.2") ("1" "1.2") ("1" "1.3" "1.3.1" "1.3.1.1") ("1" "1.3" "1.3.1" "1.3.1.2") ("2") ("3" "3.1") ("3" "3.2" "3.2.1") ("3" "3.2" "3.2.2") ("3" "3.2" "3.2.3") ) ) soit utiliser une liste de sous-listes dont chaque premier élément représente un nœud dans l'arborescence: (setq tree '(("1" ("1.1" ("1.1.1") ("1.1.2") ) ("1.2") ("1.3" ("1.3.1" ("1.3.1.1") ("1.3.1.2") ) ) ) ("2") ("3" ("3.1") ("3.2" ("3.2.1") ("3.2.2") ("3.2.3") ) ) ) ) Ce challenge consiste donc à créer deux routines : une qui transformerait lst en tree et une autre qui ferait la transformation inverse : (lst2tree lst) => tree (tree2lst tree) => lst
  15. Bonjour, (vl-string-trim "," ",0,0,0,,,") me permet d'obtenir "0,0,0". C'est un préalable utile. Dans ce vieux sujet, j'ai demandé de l'aide pour traiter le problème suivant : Soit une chaine de caractères, je veux en retirer tout ce qui n'est pas chiffre entier ou virgules qui les séparent. Le but étant, à terme, de transformer le tout en liste d'entiers. "1" renvoie "1" "1,2" renvoie "1,2" "_\oi-_,90,ut5," renvoie ",90,5," -> (vl-string-trim "," ",90,5,") à la fin rend facilement "90,5" "123,,,51,2" renvoie "123,51,2" J'y arrive bien (et encore !) avec des routines lourdingues mais je me demande s'il n'y a pas de solutions récursives. Comme j'ai un peu le sujet en tête... On y parle de mécanique mais j'ai l'impression parfois de n'être qu'un chauffeur (si le lisp est le moteur) et ni ingénieur, ni même mécanicien :cool: Alors pourl'instant, j'essaie déjà un bon traitement non récursif : (defun test(nom / lettre compt) (setq compt 1) (while(and(>(strlen nom)0)( (if (wcmatch(setq lettre(substr nom compt 1)) "[0-9],[`,]") (setq compt(1+ compt)) (setq nom(vl-string-subst "" lettre nom)) )) nom) (test "3") (test "3,2") (test "3,2.") (test "..|_3,2.") (test "3,2,,,1") Seulement voilà, comme le montre le dernier test, je n'ai pas pu traiter efficacement les virgules en trop ! Serait-ce un challenge intéressant d'aller plus loin, et avec une fonction récursive ? ou cela devient-il superflu ? Autre question, très liée je pense, si je devais éclater cette chaine d'entrée en autant d'éléments d'une liste constituée de caractères simples. La récursivité est mieux adaptée aux listes (!?), non ? Hop
  16. Re, Je ne sais pas si on peut vraiment parler de récursion croisée pour les fonctions de tri des réponses 11, 20 et 21 de ce challenge.
  17. Salut, J'avais fait (ou j'avais récupéré ici) une routine qui permettait de ranger les coordonnées 3D contenus dans une liste, par ordre croissant, à partir d'un point (contenu dans cette liste)... plus moyen de mettre la main dessus.... Je crois que c'était sortis d'un challenge d'ordre de sommet de polyligne, ou un truc dans le genre... Si vous aviez ça ça m'aiderais grandement au lieu de me le retaper.... Merci.
  18. Avec le génie d'Eugène et la patience et le gout de la précision de (gile), te voilà bien entouré ! Pour les smileys et la desactivation du BBCode, j'ai un peu la honte car je n'avais pas pensé à cette solution que j'applique parfois,...quand j'y pense :cool: (setq LstLong '(4.0 7.5 5.0 9.0 9.0 7.5 7.5 5.0 8.25 9.0 5.0)) (setq trie(vl-sort LstLong '(setq lisorti nil) (setq valeurencours nil cont 0) (setq trie(append(list(car trie))trie)) (mapcar '(lambda (x y)(if(= x y) (setq cont(1+ cont)valeurencours x) (setq lisorti(append lisorti(list(cons cont valeurencours))) cont 1 valeurencours y))) trie(cdr trie) ) (setq lisorti(append lisorti(list(cons cont valeurencours)))) lisorti Voivi un modeste code qui a l'air de fonctionner. Il est sur le principe de ma précédente proposition mais évite le WHILE ou un REPEAT grâce à MAPCAR et se trouve un peu amélioré. Un peu d'explications : (setq trie(append... est une astuce qui allonge la liste au début afin de comparer le n°1 avec lui même, en quelque sorte (c'est l'amélioration sus-citée). Dans le lambda, je déclare 2 listes : l'une complète, l'autre vidée du 1er élément. et je fais un if tout bête. Ex au 2ème tour du mapcar : x=4.0 et y=7.5 alors(= x y) est nul. Donc 2ème SETQ qui en finit avec le comptage des 4.0 en agrandissant lisorti et en remettant le compteur (cont) à 1 et la valeur en cours à 7.5. Et ainsi de suite. A la fin, on n'oublie pas d'ajouter le résultat de la dernière valeur en cours. Je n'ai pas beaucoup participé aux challenges de CADxp, il s'agissait de périodes pendant lesquelles j'étais sans doute indisponible ou occupé. Mais il est vrai que si tu tapes déjà du mapcar et compagnie en débutant, tu vas aller loin. Pas comme certains (que ceux qui se sentent visés me pardonnent, je ne pense pas à beaucoup de monde) ! Mais ne profitons pas de ce message pour faire de la politique ou enfoncer des clous, mes excuses VHD-Bruno. Voilà, il y a certainement d'autres solutions encore et je suis resté un peu bloqué. D'autres préférerons des codes plus "esthétiques", plus puissant et c'est tout à leur immense honneur ! Je préfère d'ailleurs le code proposé par (gile). Un nouveau Challenge peut-être ? Ou est-il inutile d'aller plus loin ? Je crois que c'est inutile. Je teste un peu plus en avant mon code avant de manger ! [Edité le 2/10/2010 par Tramber]
  19. Salut, Une réponse basée sur quelques challenges LISP. Pour dénombrer le nombre d'éléments identiques dans une liste : Challenge 3 On avait noté le fonctionnement bizarre de vl-sort dans le challenge 13 et bien joué avec des routines de tri qui ne suppriment pas les doublons dans le challenge 20. Pour répondre au problème en utilisant la routine test3 du challenge 3 (modifiée pour inverser l'ordre des paires pointées) et la routine tri d'Evgeniy Elpanov dans le challenge 20 ;; tri (Evgeniy Elpanov) ;; comme vl-sort mais sans supprimer les doublons (defun tri (lst fun) (mapcar (function (lambda (x) (nth x lst))) (vl-sort-i lst fun) ) ) (defun Tri&Comp (lst / sub) (defun sub (lst n) (if (cadr lst) (if (equal (car lst) (cadr lst)) (sub (cdr lst) (1+ n)) (cons (cons n (car lst)) (sub (cdr lst) 1)) ) (list (cons n (car lst))) ) ) (sub (tri lst ') PS : pour les smileys, il suffit de cocher la case "Désactiver les smileys?"
  20. Fraid

    Challenge 3D N°1

    Mais tu ne propose pas de l'imaginaire, mais un batiment existant. Et max je ne l'utilise jamais pour modéliser, mais pour texturer, animer, rendre... Et meme quand tu modélise un projet c'est a partir d'un plan. Donc si tu nous propose un plan vectorisé d'un batiment, la le challenge est réalisable. Certe, c'est mon avis, et il ne vaut pas grand chose.... Je ne vois pas en quoi mon ouverture d'esprit est en cause. C'est seulement mon experience de modélisation du construit qui me permet de m'exprimer. La 3D sans 2D je ne sais pas faire.
  21. RhymOne

    Challenge 3D N°1

    Bonjour à tous et toutes, Tramber, le On s'en xxxx.... était peut être mal placé, mais en relisant ton premier message sa donne vraiment pas enve de rester ZEN... BREF !!! Moi je dit vive la communauté, je vois de plus en plus s'éparpillé des messages du types 3D sur n'importe quel forum c'est pour cela que je voulais centralisé.... Sa je pense que tous le monde est d'accord... même si sa fait pas 5 ans ou X ans qu'on y participe.... C'est trés interressant..... Maintenant pour le challenge: Fraid je te pensais plus ouvert..... Et tu bosse sur 3D's max !!##'&"((, mais une grande partie des travaux réalisés sous max sont de l'imaginaire... (3Dvia OU 3dvf en est la preuve) C'est sur il tiendrait deux minutes..... Tu me décoit, je lai fait mainte et mainte fois... Par hasard tu bosse jamais avec l'étrangers ? Ou sinon je comprend plus...
  22. Fraid

    Challenge 3D N°1

    Bonjour, De toute façon, bien reflechi, ce challenge est impossible a réaliser. 1 - Pas de 3D sans 2D Je n'ai jamais reussi a monter une 3D digne de ce nom sans des plans en 2D, ni meme sans prendre des mesures. (hors de question de poser un tachiometre atonome tout seul dans cette région, il faut etre 2 pour pas ce le faire tirer) 2 - A moins qu'il y a beaucoup de parisien participant a ce Foum, ce dont je doute fort, je ne vois pas pourquoi j'irai modéliser le trou du q de la france.... (je sais, on aime tous cela....) 3 - Je ne vois pas pourquoi j'irai me prendre la tete a texturer dans Autocad pour avoir une qualité de rendu plus que mediocre. (en plus c'est une usine a gaz...). Sous Max, si il est mis en place (scene + bibiotheque de materiaux), il faut 5 mn pour texturer un batiment. (a moins de devoir créer une texture particuliere). 4 - En fait tu réagi comme beaucoup de gent, la 3D ce n'est que quelque clics dans un logiciel. NONONONON, Pour de l'existant on est loin, mais tres loin de cela. Tu ne peux pas modéliser un batiment seulement a partir de photos (sinon y a longtemps que cela se ferais). La photogrametrie n'est possible qu'avec des réferences. Je ne voudrai pas te décourager, mais seulement des parisiens ne connaissant pas ce metier partipirons...... Bonne chance
  23. RhymOne

    Challenge 3D N°1

    Bonjour thierry, Merci... Le bon fonctionnement de ce challenge ne peut qu'être envisagé que par les utilisateur du forum...
  24. RhymOne

    Challenge 3D N°1

    Bonjour à tous et toutes, Comme promis je désire tous les trimestres, lancer dans le cadre du forum un challenge 3D. Je veux pour cela établir des règles simples et lancé de sujets ouverts à tous. Ayant pour but final d'acquérir de multiples avis et critiques sur son travail final afin de s'améliorer. Trois parties seront notées sur 10: 1. La modélisation 2. Le texturage, la qualité d’adaptation du modèle à son environnement. 3. Le rendu (lumière et qualité de sortie) [surligneur] Les règles : [/surligneur] Soft autorisés pour la modélisation et le rendu (Toutes version d’AutoCAD). Les applicatifs sont autorisés du moment qu’ils sont à l’intérieur d’AutoCAD. Tous types de logiciel image pour la modification du rendu est interdite. Par contre elle est autorisée pour les textures et pour l’environnement. Le but est de progresser, ne l’oublier pas…… [surligneur] Les liens utiles pour poster : [/surligneur] Image : http:// http://imageshack.us/ http:// http://www.upload-perso.net/index.php Model 3D : http://dl.free.fr/ Sujet N°1 (Délais 3mois - Fin 01/01/2011) A paris trouver un monument de son choix, Le modéliser (aucun import ou modèle télécharge n’est accepté). L’intégrer dans un environnement de votre choix : -photographie d’arrière plan -Modélisation -Dessin ou création d’image Précisions : cet environnement ne doit être en aucun cas celui d’origine… retirée du forum car apparement trop compliquée pour certains.... Sujet N°1: Crée un modèle ouvert à la critique ..... A vos modèles, et j’espère que plusieurs d’entre vous ce lancerons ce challenge !!! A bientôt
  25. Mon dieu, c'est vraiment tentant sauf que j'ai déjà tellement à faire ! Je ne sais même pas où je trouve le temps de communiquer sur le Forum :( Boulot, Commune, pompiers, amicale des pompiers, au comité de quatre sociétés diverses, une femme, deux gosses, un chien, un chat et ma Harley que j'aimerais rouler un peu plus... Pffff... D'autant plus que pour ton Challenge, il faudrait une limite de temps, sinon c'est trop facile. Pour comparaison, une de mes maison, j'y passe environ 10 à 16 heures jusqu'au rendu. Non franchement, je préfère m'avouer vaincu pour l'instant... ;) Amitiés. Ah, au fait, je fais tout sous AutoCad, je ne passe pas par d'autres Soft, même pas photoshop... [Edité le 10/9/2010 par Dinosor]
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité