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. Ça faisait longtemps. Le but de ce challenge est d'écrire une routine qui prend en argument une chaîne de caractères et renvoie la liste des nombres contenus dans cette chaîne. Exemple : (extraireNombres "Longueur = 25.4mm Largeur = 12.7mm Quantité = -42") renvoie : (25.4 12.7 -42)
  2. Bonjour à la communauté. Je suis tombé par hazard sur le codage Vigenère dans Wikipédia et j'ai tout de suite pensé à un petit chalenge pour les membres du Lisp/VLisp. Le but est simple, grace à une seule commande, coder ou décoder une chaine. Exemple : ;;Codage (setq ChaineACoder (Vigenere "C" Chaine$)) ;;Décodage (setq ChaineDecodee (Vigenere "D" Chaine$)) Je pense aux 255 caractères usuels (sauf les 32 premiers, qui ne sont pas réellement des caractères). Le résultat du codage pourra se faire avec une ou deux clefs. Amusez-vous bien, si vous le désirez... Bien à toi, la communauté. Denis...
  3. En se basant sur cette image qui représente un labyrinthe avec une forme en "P", pensez-vous qu'il soit possible de dessiner le chemin de sortie en une ligne (ou plutôt polyligne) ? 🤔 Contrainte pour la représentation du labyrinthe : - pas de polyligne donc que des lignes et des arcs - un calque "Mur" pour les traits épais en noir et un calque "Cloison" pour les traits fins en gris Langage autorisé : - Lisp - mais VBA et autres sont les bienvenus 😉
  4. Salut, Je propose un challenge pour l'été (profiter des vacances pour apprendre ou se perfectionner en LISP). Tout le monde a entendu parler de la suite de Fibonacci. Une spirale de Fibonacci est une succession d'arcs de cercle de 90° connectés tangentiellement dont les rayons sont les termes de la suite de Fibonacci. Un exemple de spirale de Finonacci composée de 7 arcs : Challenge Il s'agit d'écrire une routine qui prend en argument le point de départ de la spirale et le nombre d'arcs pour dessiner la spirale dans AutoCAD (plusieurs arcs ou une polyligne). La routine (ici nommée spiralFib) devra pouvoir être appelée depuis une commande LISP (ici nommée c:TEST) pour pouvoir être testée dans AutoCAD pour dessiner des spirales ayant au minimum 4 arcs. (defun c:test (/ p i) (and (setq p (getpoint "\nPoint de départ: ")) (setq i (getint "\nNombre d'arcs [4-32]: ")) (< 3 i) (spiralFib p i) ) (princ) ) Un screencast montrant un exemple. Variante On peut, sur le même principe faire une routine pour une "Spirale d'or".
  5. Montrez nous vos talents en AutoLISP ! Votre programme, le plus court possible, doit dessiner ces cercles Fournissez nous le listing de votre programme AutoLISP. Gardez à l'esprit que l'art de la programmation, c'est la concision et l'élégance !
  6. Bonsoir, Une récente discussion m'a inspiré une petite proposition de challenge qui doit pouvoir parler à tous le monde https://cadxp.com/topic/54760-pb-de-trigo/?tab=comments#comment-312380 En général pour résoudre des problèmes de résolution dans un triangle, j'ai pour habitude de me servir des triangles semblables pour travailler sur un triangle dont l’hypoténuse (rayon du cercle unitaire) vaut 1, de façon à trouver la relation la plus simplifié à programmer pour résoudre le système. Pour mémoire dans cette configuration il suffit de connaitre une seule donné pour en déduire les autres. Dans cet esprit je vous propose d'élaborer une fonction trigones qui peut prendre en arguments: l'angle / sinus / cosinus / sécante / cosécante / tangente / cotangente, j'ai volontairement limité les arguments on pourrait en ajouter. (trigones ang sinus cosinus sécante cosécante tangente cotangente) Dans l'appel de la fonction, on ne renseignerait qu'un argument les autres valant nil, et la fonction retournerait tous les autres cotés, et ce quelque soit l'argument renseigné. Ex: Appel de fonction en renseignant l'angle: _$ (trigones (/ pi 4) nil nil nil nil nil nil) (0.785398 0.707107 0.707107 1.41421 1.41421 1.0 1.0) Ex: Appel de fonction en renseignant le sinus: _$ (trigones nil 0.6 nil nil nil nil nil) (0.643501 0.6 0.8 1.25 1.66667 0.75 1.33333) Ex: Appel de fonction en renseignant la tangente: _$ (trigones nil nil nil nil nil 2 nil) (1.10715 0.894427 0.447214 2.23607 1.11803 2 0.5) Une petite illustration pour ceux dont la résolution des trigones est un lointain souvenir, on se limite a résoudre le triangle de rayon 1 dans le premier quadrant du cercle c'est à dire avec un angle compris entre 0 et PI/2 Un petit prétexte pour réviser sa trigo en cette fin d'année, bon code à tous.
  7. Hello Coucou j'esperais voir un Francais jouer ... https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/td-p/10735297 La Sante, Bye, lecrabe
  8. Coucou, Un exercice sans difficulté de programmation en tant que tel, mais le but étant de réfléchir "autrement". On a tous eu besoin à un moment donné eu besoin de récupérer la liste des sommets d'une polyligne et pour ce faire, on a chacun(e) sa méthode :3 Cependant je me suis bien souvent demandé, existe-t-il une solution plus rapide ? Pour simplifier le challenge, l'exercice se porte uniquement sur les LWPOLYLINE, car les SPLINE, LINE, POLYLINE, ARC, etc ne possède pas les mêmes approches de programmation selon les objets. On peut prendre n'importe quel langage (en revanche je ne sais pas s'il existe un moyen d'utiliser un BenchMark sur plusieurs type de langage différent...?) histoire de comparer également les simplicités d'écriture selon les langages. La liste retournée doit contenir l'ensemble des sommets de la polyligne, dans le sens de lecture de la polyligne (donc le sommet de départ au début, le dernier à la fin) et le but étant de trouver une version qui permet d'aller suffisamment vite en fonction du nombre de sommets. J'ai généré sur le fichier ci-joint 4 polylignes ayant respectivement 10, 100, 1 000 et 10 000 sommets qui serviront de base (pour que tout le monde est la même). Le nombre de lignes importe peu, la vitesse d'exécution servira de comparaison. Concernant le Benchmark, j'utilise le BenchMark de Michael Puckett mais si vous en avez un autre, dite le histoire de maximiser les points communs pour la comparaison. Pour le temps de réponse, disons que je posterais mes versions ce we mais il n'y a pas de limite de temps 😜 Bisous, Luna get-pt-list.dwg BenchMark (Michael Puckett).lsp
  9. Salut, En tombant sur cet article à propos d'un algorithme pour calculer l'enveloppe convexe d'une collection de points, je me suis dit que ça pourrait faire l'objet d'un nouveau challenge et que ça pourrait aussi être une base pour résoudre un problème plus complex posé par @Luna dans ce sujet : faire une enveloppe concave (concave hull). Donc, il s'agit toujours d'écrire un fonction (dans le langage de son choix) qui prend en argument une liste de points et qui renvoie la liste des points qui constituent l'enveloppe convexe (convex hull) des points passés en argument. Il existe au moins un autre algorithme bien connu pour extraire l'enveloppe convexe d'une collection de points, mais comme il a déjà été souvent implémenté, je trouve plus intéressant de se pencher sur celui-là et je suppute qu'il se prête mieux à la généralisation vers une enveloppe concave (mais c'est une autre histoire...). On doit pouvoir tester la fonction 'quickhull' via une sélection d'entités points (nodal) en dessinant une polyligne. Exemple en LISP : (defun c:test (/ ss i pts) (if (setq ss (ssget '((0 . "point")))) (progn (repeat (setq i (sslength ss)) (setq pts (cons (cdr (assoc 10 (entget (ssname ss (setq i (1- i)))))) pts ) ) ) (command "_pline") (foreach p (quickhull pts) (command "_non" p) ) (command "_close") ) ) (princ) )
  10. Bonjour à tous, Dans un challenge précédent il a été rappelé au moyen d'une fonction groupBy l’intérêt de définir des fonctions générique, dans cette esprit (et en plus simple je pense) je propose ici d'écrire une fonction de coupure "générique" (très pratique après une fonction de tri) qui prendrait en argument une fonction prédicat appliqué à une liste: (coupure-if-not predicate-function liste) Pour tester _$ (coupure-if-not '= '(0 0 0 1 1 0 1 1 1 0 0 0 0 1)) ((0 0 0) (1 1) (0) (1 1 1) (0 0 0 0) (1)) _$ (coupure-if-not '(lambda (x y) (= x (1- y))) '(1 2 3 4 6 6 7 8 10 11)) ((1 2 3 4) (6) (6 7 8) (10 11)) Et/ou la fonction symétrique (normalement si on a l'une des deux il est aisé de faire l'autre) (coupure-if predicate-function liste) Pour tester _$ (coupure-if '= '(0 0 0 1 1 0 1 1 1 0 0 0 0 1)) ((0) (0) (0 1) (1 0 1) (1) (1 0) (0) (0) (0 1)) _$ (coupure-if '(lambda (x y) (= x (1- y))) '(1 2 3 4 6 6 7 8 10 11)) ((1) (2) (3) (4 6 6) (7) (8 10) (11)) Le but de ce challenge est de ce familiariser avec l'écriture/utilisation des fonctions dite "d'ordre supérieur", pour laisser tout à chacun le loisir de réfléchir au problème , je ne pense pas remettre ma copie avant Mardi soir ou Mercredi en journée. Pour ceux qui ont déjà cette fonction en magasin prière d'attendre les premières propositions ou tentative de propositions. (En cas de difficulté regarder du coté des fonctions vl-remove-if-not, vl-remove-if, vl-member-if-not, vl-member-if. (gile) en à déjà proposé des équivalences sur le forum, si je retrouve le lien je le posterai). Bon WE à tous
  11. Bonjour, Je viens de me souvenir d'un challenge perso qui m'avais bien tordu l'esprit. Convertir un texte pour injection d'URL. (ou requete HTML). Lorsque nous tapons une adresse internet dans la barre d'adresse d'un navigateur, c'est une injection. Exemple simple "https://www.openstreetmap.org/#map=16/48.4674/-2.5486" Ici nous arrivons directement au coordonnées injectées. Mais lorsque nous utilisons une URL en programmation, nous utilisons pas la barre du navigateur, cela va directement au serveur. Si l'injection contient des caractères spéciaux il faut les convertir en Caractères hexadécimales. Exemple "https://fr.wikipedia.org/wiki/Saint-Barthélemy-d'Anjou" doit devenir "https://fr.wikipedia.org/wiki/Saint-Barth%C3%A9lemy-d'Anjou" ou "aB 09_éùl'o @£" -> "aB%2009_%C3%A9%C3%B9l'o%20%40%C2%A3" Il existe des fonctions ou méthodes dans beaucoup de langage qui s'occupe très bien de cela, mais pas en Autolisp. Je me permet donc de vous proposer d'écrire l'équivalent de ces 2 fonctions Javascript encodeURIComponent decodeURIComponent Évidement sans énumération telle que '(("é" . "%C3%A9") ...) Je poste mes fonctions Dimanche soir. bonne exploration et à bientôt.
  12. Salut, Un nouveau challenge (tout langage accepté). L'objectif est de définir une fonction pour grouper les points (coordonnées) d'une liste en fonction de leur coordonnée X avec une tolérance de 10 unités. La fonction devra prendre comme argument une liste de points 2d (x y) ou 3d (x y z) et renvoyer les points groupés sous la forme que permet le langage utilisé (en LISP ce sera forcément une liste de sous-listes, avec d'autre langages, ça peut-être une autre structure de données : un tableau déchiqueté, un dictionnaire, ...). Exemple, avec la liste suivante en entrée : (setq pts '((14.4 4.7) (4.8 0.7) (8.0 0.9) (9.3 4.7) (-14.3 14.3) (-6.3 14.2) (-13.6 7.5) (-1.9 -3.2) (2.4 -4.9) (6.6 11.2) (-6.6 4.7) ) ) on devrait obtenir 3 groupes : ((-6.6 4.7) (-13.6 7.5) (-6.3 14.2) (-14.3 14.3)) ((2.4 -4.9) (-1.9 -3.2) (4.8 0.7)) ((6.6 11.2) (9.3 4.7) (8.0 0.9) (14.4 4.7)) On pourra ensuite pousser un peu plus loin pour rendre la fonction plus générique en passant la tolérance en argument, puis en groupant par X et Y.
  13. Salut, Je vais essayer de lancer un petit challenge de géométrie. Dans AutoCAD, pour dessiner un arc elliptique, on peut spécifier les angles de départ et de fin, mais il existe aussi une option 'Paramètres'. Extrait de l'aide : En programmation d'AutoCAD, on retrouve cette notion de paramètre pour tous les objets curviligne (vlax-curve-getParamAtPoint en LISP ou Curve.GetParamAtPoint avec.NET). On a coutume de dire qu'un petit dessin vaut mieux qu'un long discours : Le challenge, donc, serait de définir deux fonctions (peu importe le langage) : - AngleToParam : qui prend comme arguments une ellipse et un angle et qui renvoie le paramètre correspondant - ParamToAngle : qui prend comme arguments une ellipse et un paramètre et qui renvoie l'angle correspondant Exemples avec une ellipse de 10 100 unités de grand axe pour 60 unités de petit axe : - AngleToParam d'un angle de 30° doit retourner un paramètre de 43.90° - ParamToAngle d'un paramètre de 30° doit retourner un angle de 19.11° - AngleToParam d'un angle de 230° doit retourner un paramètre de 243.28° - ParamToAngle d'un paramètre de 230° doit retourner un angle de 215.57° Les exemples sont donnés en degrés, mais pour plus de simplicité et de cohérence avec les fonction natives fonctions utiliseront les radians.
  14. Saut à la communauté. Je pense que vous savez déjà de quoi je vais parler. Faites un programme, quel qu'il soit, mais comment les protéger... En gros, on vous paye pour dessiner, mais vous programmez, mais sur votre bulletin de paie est écrit "Dessinateur". La législation française est très explicite là-dessus... Vous êtes dessinateur (c'est sur votre bulletin de paye) et non programmeur/développeur ? Donc, tous ce que vous développez/programmez est en votre entière possession et sauf votre accord, votre employeur ne DOIT pas les utiliser sans votre accord, avant (?), pendant (Ok), et après (c'est là, l'arnaque)... Mais, comment protéger vos développement, vos logiciels, pour les quelles vous n'avez pas été embauché, mais jamais payé... Attention, on parle bien d'un jeu... Attention, je ne suis pas contre le patronat... Je veux juste protéger les développements qui se font exploités... Et aussi, protéger les développements de programmateurs qui aimeraient vendre un peu leur travail, ou les monnayer... Je vous propose donc un nouveau Chalenge... Comment faire un programme "entier" (qui sera utilisable partout et en dehors de toutes contraintes) et le protéger... Donc, je vous propose un défit pour protéger un lisp ou autre. Voici les condition (et je reste ouvert aux remarques) : Comment faire un .lsp (ou autre, mais la principale demande reste pour AutoCAD, mais je ne suis pas fermé) et le protéger (.ini, base de registre, fichier caché, suite de code ASCII, clef différentielle, encodée...) Premièrement, comment protéger son travail : 1.soit dans le temps (un mois d'utilisation accordé, par exemple) 2.soit dans le nombre d'utilisation ( 10, 20, 200) 3.soit autre chose dont je n'ai pas connaissance, mais je reste ouvert... Et comment le distribuer : 1.Un Bundle 2.Un fichier compiler (qui contiendrait tous les programmes) 3.Être aider d'un autre logiciel de distribution, gratuit s'il vous plait... Car le but est de protégé le petit développeur qui s'est ruiner pour son bosse et qui repart avec rien... Donc, Tout doit être gratuit... je vous propose un petit développement de mon cru, comment le rendriez-vous inviolable et protégé, car là est la question, ce programme dessine une crois dans un quadrilatère (Oui, certain me dirait, Wouaouw, quel effort... je sais, mais je n'est pas le problème), mais comment le vendre (pas important) mais comment le protéger (tu l'utilises, tu me dois 10 euros (toutes les 10, 20, 100 utilisations, tous les mois, une "licence ad-vitam"...) Et là, vous avez toutes les libertés) : Je suis désolé, c'est du Lisp, mais vous faites comme vous le voulez, le seul impératif, c'est que c'est pour AutoCAD (ou ZWCAD, Draftsight...) Libre à vous : (vl-load-com) ;;; ***************************************** ;;; Dessine une croix dans un quadrilatère ;;; ***************************************** (defun c:CroixDsQuadri (/ ent ent-liste n liste-sommets) (princ "\n\tDéveloppé par Denis H. (1.0)") (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (if (eval 'CleRegCerene) (CleRegCerene "DenisH") ) ;_ Fin de if (while (= "LWPOLYLINE" (cdr (assoc 0 (entget (setq ent (car (entsel "\nChoix de la polyligne\n"))))))) (setvar "clayer" (cdr (assoc 8 (entget ent)))) (setq ent-liste (entget ent) n 0 ent 0 liste-sommets nil ) ;_ Fin de setq (repeat (length ent-liste) (if (= 10 (car (nth n ent-liste))) (setq liste-sommets (cons (cdr (nth n ent-liste)) liste-sommets)) ) ;_ Fin de if (setq n (+ 1 n)) ) ;_ Fin de repeat (setq liste-sommets (reverse liste-sommets)) (command "_.line" (nth 0 Liste-sommets) (nth 2 Liste-sommets) "") (command "_.line" (nth 1 Liste-sommets) (nth 3 Liste-sommets) "") ) ;_ Fin de while (vla-endundomark doc) (princ) ) ;_ Fin de defun
  15. Salut à tous. Je propose un petit jeu, mais en Lisp et/ou en VLisp et sans mélanger les deux. Mais si vous êtes en mesure de proposer d'autres langages, libre à vous, faites-nous voir vos connaissances... ;) Avec le moins de lignes possible, faire ceci : 1.La base est une chaine contenant un nombre à 16 chiffres (ex : "5637159071856346"), 2.Passer par l'étape d'inversion de ce contenu (ex : "6436581709517365"), en fait il faut lire la chaine depuis la fin, 3.Puis, permuter les paires 2 à 2 (ex : "46638571901537765"), on inverse les chiffres 2 par 2, 64 devient 46, 36 devient 63... C'est parti... ;) Denis...
  16. Salut, Pour faire suite à ce sujet qui fait suite à celui-là, je propose un challenge (assez) facile pour aborder la récursivité dans un cadre où elle est incontournable. Il s'agit simplement de définir une fonction qui retourne la liste des chemins de tous les dossiers et sous dossiers contenus dans un dossier (voir la fonction vl-directory-files). Choisir un dossier avec des sous-dossiers à différents niveaux d'imbrication. Avec cette arborescence : http://gilecad.azurewebsites.net/Resources/arborescence.png La fonction doit retourner cette liste : ( "C:\\Temp\\dossier racine\\Dossier 1" "C:\\Temp\\dossier racine\\Dossier 1\\Sous dossier 1.1" "C:\\Temp\\dossier racine\\Dossier 1\\Sous dossier 1.1\\Bidule" "C:\\Temp\\dossier racine\\Dossier 1\\Sous dossier 1.1\\Truc" "C:\\Temp\\dossier racine\\Dossier 1\\Sous dossier 1.1\\Truc\\Machin" "C:\\Temp\\dossier racine\\Dossier 1\\Sous dossier 1.2" "C:\\Temp\\dossier racine\\Dossier 2" "C:\\Temp\\dossier racine\\Dossier 2\\Sous dossier 2.1" "C:\\Temp\\dossier racine\\Dossier 2\\Sous dossier 2.2" ) Merci à ceux qui l'ont déjà fait (ou qui savent le faire) de laisser chercher les autres.
  17. Bonjour Pour faire suite à ce sujet, rien ne vaut un bon exercice. L'idée est de déterminer si j'ai un double dans une liste, et de manière récursive. (gile), comme tu es notre maitre à tous, tu as un handicap d'une journée ;) Exemples : (doublon '(1 2 3 4 5 6 7 8 9)) --> nil (doublon '(1 2 3 4 5 6 7 8 9 1)) --> T (doublon '(1 2 3 4 5 1 6 7 8 9)) --> T (doublon '((1 2) (2 3) (4 5) (6 7) (8 9))) --> nil (doublon '((1 2) (2 3) (4 5) (6 7) (8 9) (1 2))) --> T (doublon '((1 2 3) (2 3) (4 5) (6 7) (8 9) (1 2))) --> nil (doublon '((1 2 3) (2 3) (4 5) (6 7) (8 9) (1 2 3))) --> T @+
  18. Bonjour, (vl-position) répondait exactement à mon besoin mais a un gros défaut; elle ne retourne que la position du 1er élément trouvé. Ce que je désire avoir en retour, ce sont les positions multiples de l'élément dans la liste. Exemple pour: (setq stuff (list "a" "b" "c" "d" "e" "c" "a")) que (vl-position-multi "c" stuff) -> (2 5) (vl-position-multi "a" stuff) -> (0 6) (vl-position-multi "b" stuff) -> (1) (vl-position-multi "f" stuff) -> nil Bien sur, à la différence de vl-position la fonction me retourne une liste d'entier ou nil J'ai bien déjà pondu ça: (defun vl-position-multi (el l / n l_id l_n) (setq n 0 l_id (mapcar '(lambda (x) (equal x el)) l) ) (repeat (length l_id) (if (car l_id) (setq l_n (cons n l_n))) (setq n (1+ n) l_id (cdr l_id)) ) (reverse l_n) ) Pour le peu de test que j'ai effectué, ca à l'air correct. Mais je serais curieux d'avoir d'autres versions (les pros de la récursivité) ou de manière plus concise... Si ça vous dit!
  19. Salut, Vous connaissez certainement ou en tout cas vous avez déjà entendu parler de la suite de Fibonacci. Cette suite d'entier naturels commence par 0 et 1 et chaque terme étant égal à la somme des deux termes pécédents. Je propose un petit challenge qui consiste à définir une fonction qui retourne le Nième terme de la suite de Fibonnacci, N étant l'argument de la fonction. (fib 0) doit retourner 0 (fib 1) doit retourner 1 (fib 2) doit retourner 1 (fib 3) doit retourner 2 (fib 4) doit retourner 3 (fib 5) doit retourner 5 etc. (mapcar 'fib '(0 1 2 3 4 5 6 7 8 9)) doit retourner : (0 1 1 2 3 5 8 13 21 34) (fib 46) doit retourner 1836311903 (46 est le rang maximal accessible avec des entier signés sur 32 bits qui ne peuvent excéder 2147483647).
  20. Patrick_35

    Challenge

    Bonjour Une idée de challenge (Ca faisait longtemps) C'est d'associer deux listes et de savoir si une même personne fait plusieurs choses. Exemples : (asso '("pierre" "patrick" "sébastien" "sophie" "patrick" "julie") '("compta" "be" "chantier" "secrétaire" "autocad" "facturation")) --> (("pierre" "compta") ("patrick" "be" "autocad") ("sébastien" "chantier") ("sophie" "secrétaire") ("julie" "facturation")) (asso '("pauline" "mathieu" "pauline" "jym" "feat") '("phylo" "algebre" "math" "python" "archi")) --> (("pauline" "phylo" "math") ("mathieu" "algebre") ("jym" "python") ("feat" "archi")) (asso '("e1" "e2" "e4" "e3" "e2" "e5") '("c1" "c2" "c3" "c4" "c5" "c6")) --> (("e1" "c1") ("e2" "c2" "c5") ("e4" "c3") ("e3" "c4") ("e5" "c6")) @+
  21. Bonsoir, Une petite idée de challenge m’a traversé l’esprit, le but serait de pouvoir comparer des listes constitués d’élément pouvant être de type différent, et ce indépendamment de leurs positions dans la liste. Dans le principe si tous les éléments de la liste 1 sont présents dans la liste 2 et vice-versa, la fonction retourne T, ex : (compare-p '(1 2 "abc" 2 (3.4 "d")) '(2 2 (3.4 "d") "abc" 1)) retourne T Sinon la fonction retourne nil, ex : (compare-p '(1 2 "abc" 2 (3.4 "d")) '(2 3 (3.4 "d") "abc" 1)) retourne nil Bon code
  22. Salut, La lecture de ce sujet m'a donné l'idée d'un petit challenge : implémenter une fonction similaire à vl-filename-base. (vl-filename-base "toto.dwg") -> "toto" (vl-filename-base "toto") ->"toto" (vl-filename-base "toto.1.0.dwg") -> "toto.1.0" (vl-filename-base "totodwg.dwg") -> "totodwg" mais aussi avec un chemin complet : (vl-filename-base "C:\\Dir\\toto.dwg") -> "toto" (vl-filename-base "C:\\Dir\\toto") ->"toto" (vl-filename-base "C:\\Dir\\toto.1.0.dwg") -> "toto.1.0" (vl-filename-base "C:\\Dir\\totodwg.dwg") -> "totodwg" (vl-filename-base "C:\\Dir\\") -> ""
  23. Salut, Un défi m'a été lancé sur TheSwamp dans un sujet à propos du ruban de Moebius : modéliser une bouteille de Klein. Je propose ce petit challenge à ceux que ça intéresse. Ci dessous ma réponse, je donnerais la procédure que j'ai suivi plus tard... Le dwg avec uniquement la surface.
  24. Bonjour à toutes et tous, Une demande intéressante d'un ancien étudiant => Sans prog, je propose l'utilisation de la commande diviser avec un bloc + attribut champ "position planimétrique", export et calcul de la distance entre points depuis Excel. D'autres idées ? Merci d'avance, PS: J'ai répondu à cet étudiant en vidéo, si ça vous intéresse,... => 1er PARTIE : http://screencast.com/t/k4oWuC9rM => 2nd PARTIE : http://screencast.com/t/eqFJqBrNS => 3e PARTIE : http://screencast.com/t/1fImoHwBK => 4e PARTIE : http://screencast.com/t/3sz4r80h
  25. Bonsoir, Voilà en corrigeant une coquille dans une de mes routines, j’ai pensé que la routine en question pourrait faire l’objet d’un petit challenge pas trop compliqué de début d’année. Il s’agit simplement d’émuler un peu la fonction subst de façon à ce que cette nouvelle version ne travaille plus sur un seul élément à remplacer, mais sur un ensemble d’éléments fourni sous forme de liste. Syntaxe (lsubst lst-nouv-élemt lst-anc-élemt lst) Arguments lst-nouv-élemt: Liste des nouveaux éléments lst-anc-élemt : Liste des anciens éléments lst : Liste de réference Valeur en retour Une liste modifié ou les nouveaux éléments remplacent les anciens, la liste est inchangée pour les éléments introuvablent Quelques exemples de résultats attendus: (lsubst '(x y z) '(a c e) '(a b c d c)) retourne (X B Y D Y) (lsubst '(b c nil) '(c b a) '(a b c d c)) retourne (nil C B D B) (lsubst '(b c) '(c b a) '(a b c d c)) retourne (A C B D B) (lsubst '(b c d) '(c B) '(a b c d c)) retourne (A C B D B) (lsubst '(z y w) '(a b c) '(a b c d c)) retourne (Z Y W D W) (lsubst '(b c a) '(a b c) '(a b c d c)) retourne (B C A D A) En espérant avoir été suffisamment explicite, sinon ne pas hésiter à demander un complément d’information. A+
×
×
  • 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é