Rechercher dans la communauté
Affichage des résultats pour « challenge » dans sujets.
502 résultats trouvés
-
Coucou Tu as tout à fait raison, je disais ça juste pour la taquinerie Perso je travaille aussi de cette façon, la première routine est basique Puis vient le goût de l'automatisme et du challenge Une de mes devises est quelque peu impérative (comme ma programmation) : Je me contente du maximum Amicalement
-
Delimitation (ou Detourage) des Fenetres (FMULT / VIEWPORT) - Routine SVP ?
lecrabe a répondu à un(e) sujet de lecrabe dans Routines LISP
Hello Fraid / Didier / Gilles / etc 1) Encore MERCI pour vos Efforts ! 2) J'ai l'impression d'avoir genere un sacre challenge avec ma demande qui me semblait SIMPLE !? Merci d'avance, Bye, Bonne Semaine, lecrabe -
Ok merci Ce sera un challenge pour moi.
-
Bonjour, Je pense que tout le monde connait 2048 Pour le fun, j'ai tenté de le réécrire en lisp. Par rapport à l'original il présente certainement un comportement un peu différent; j'ai développé mon propre algorithme, mais il est jouable. Il y a certainement mieux, donc le challenge est lancé, pour ma part j'avais pensé que ce serait assez simple mais je me suis trompé, je suis passé par un phase de test assez fastidieuse pour la mise au point. Vos avis? Vos propositions?! ;; C:GAME2048 ;; Un clone en AutoLisp inspiré de https://gabrielecirulli.github.io/2048/ ;; par Bruno VALSECCHI Decembre 2017 ;; ;; Joindre les nombres de même valeur jusqu'à obtenir la tuile 2048! ;; ;; Utiliser les touches 2 4 6 8 du pavé numérique pour déplacer les tuiles vers le bas, gauche, droite, haut ;; (defun randomize (v1 v2 / ) (if (not v_sd) (setq v_sd (getvar "DATE")) ) (setq v_sd (rem (+ (* 25173 v_sd) 13849) 65536)) (+ (* (/ v_sd 65536) (- (max v1 v2) (min v1 v2))) (min v1 v2)) ) (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) ) (defun draw_map (statut_map / lm_col lt_col tmp lx ly dxf_m dxf_t x y) (setq lm_col '((0 . 252) (2 . 255) (4 . 53) (8 . 31) (16 . 30) (32 . 20) (64 . 22) (128 . 42) (256 . 52) (512 . 40) (1024 . 32) (2048 . 2))) (setq lt_col '((0 . 252) (2 . 250) (4 . 250) (8 . 255) (16 . 255) (32 . 255) (64 . 255) (128 . 255) (256 . 255) (512 . 255) (1024 . 255) (2048 . 1))) (setq tmp map) (setq lx (mapcar 'car tmp) ly (mapcar 'cdr tmp)) (foreach dxf_mask lst_mask (setq dxf_m (entget (cdr dxf_mask))) (mapcar '(lambda (xi yi / x y) (setq x xi y yi) (entmod (subst (cons 10 (list (cdr x) (car x) 0)) (assoc 10 dxf_m) dxf_m ) ) (entmod (subst (cons 11 (list (1+ (cdr x)) (car x) 0)) (assoc 11 dxf_m) dxf_m ) ) (entmod (subst (cons 12 (list (cdr x) (1+ (car x)) 0)) (assoc 12 dxf_m) dxf_m ) ) (entmod (subst (cons 13 (list (1+ (cdr x)) (1+ (car x)) 0)) (assoc 13 dxf_m) dxf_m ) ) (entmod (subst (cons 62 (cdr (assoc y lm_col))) (assoc 62 dxf_m) dxf_m ) ) ) (list (car lx)) (list (car ly)) ) (setq lx (cdr lx) ly (cdr ly)) ) (setq lx (mapcar 'car tmp) ly (mapcar 'cdr tmp)) (foreach dxf_text lst_text (setq dxf_t (entget (cdr dxf_text))) (mapcar '(lambda (x y / x y) (entmod (subst (cons 11 (list (+ 0.5 (cdr x)) (+ 0.5 (car x)) 0)) (assoc 11 dxf_t) dxf_t ) ) (entmod (subst (cons 1 (itoa y)) (assoc 1 dxf_t) (subst (cons 62 (cdr (assoc y lt_col))) (assoc 62 dxf_t) dxf_t ) ) ) ) (list (car lx)) (list (car ly)) ) (setq lx (cdr lx) ly (cdr ly)) ) (command "_.TEXTTOFRONT" "_Text") ) (defun evaluate_push (l count / l) (setq l (reverse (vl-remove 0 l))) (if (cdr l) (cond ((and (eq (car l) (cadr l)) (<= (+ (car l) (cadr l)) count)) (evaluate_push (reverse (cons (+ (car l) (cadr l)) (cddr l))) count) ) (T (evaluate_push (reverse (cdr l)) count) (setq nwl (cons (car l) nwl)) ) ) (setq nwl (cons (car l) nwl)) ) (reverse (if (car nwl) nwl '(0))) ) (defun push (k / lst tmp nwl) (setq map-n map) (cond ((eq k 50) (setq lst '("C-U3" "C-U2" "C-U1" "C-U0")) ) ((eq k 52) (setq lst '("R-R0" "R-R1" "R-R2" "R-R3")) ) ((eq k 54) (setq lst '("R-L3" "R-L2" "R-L1" "R-L0")) ) ((eq k 56) (setq lst '("C-D0" "C-D1" "C-D2" "C-D3")) ) ) (foreach n lst (setq tmp (mapcar 'cdr (mapcar '(lambda (x) (assoc x map)) (eval (read n)))) nwl nil) (setq nwl (evaluate_push tmp (* (if (member (apply 'max tmp) (cdr (member (apply 'max tmp) tmp))) 2 1) (apply 'max tmp)))) (if (not (eq (length (vl-remove 0 nwl)) 4)) (progn (repeat (- (length tmp) (length (setq nwl (vl-remove 0 nwl)))) (setq nwl (cons 0 nwl)) ) nwl ) nwl ) (setq tmp (mapcar '(lambda (x) (assoc x map)) (eval (read n)))) (foreach n (mapcar '(lambda (x y) (cons x y)) (mapcar 'car (mapcar '(lambda (x) (assoc x map)) (eval (read n)))) nwl) (setq map (subst n (assoc (car n) map) map)) ) ) ) (defun c:Game2048 ( / v_sd mat_game map lst_mask lst_text nw_pos key before after win loose) (foreach n '("R-L0" "R-L1" "R-L2" "R-L3" "R-R0" "R-R1" "R-R2" "R-R3") (set (read n) nil)) (foreach n '("C-U0" "C-U1" "C-U2" "C-U3" "C-D0" "C-D1" "C-D2" "C-D3") (set (read n) nil)) (setq mat_game '( (3 . 0) (3 . 1) (3 . 2) (3 . 3) (2 . 0) (2 . 1) (2 . 2) (2 . 3) (1 . 0) (1 . 1) (1 . 2) (1 . 3) (0 . 0) (0 . 1) (0 . 2) (0 . 3) ) ) (mapcar '(lambda (x y) (set (read (strcat "R-R" (itoa y))) (reverse x) ) ) (mapcar '(lambda (x y) (foreach n x (set (read (strcat "R-L" (itoa y))) (cons (nth n mat_game) (eval (read (strcat "R-L" (itoa y)))) ) ) ) ) (mapcar '(lambda (x) (vl-position-multi x (mapcar 'car mat_game)) ) '(0 1 2 3) ) '(0 1 2 3) ) '(0 1 2 3) ) (mapcar '(lambda (x y) (set (read (strcat "C-D" (itoa y))) (reverse x) ) ) (mapcar '(lambda (x y) (foreach n x (set (read (strcat "C-U" (itoa y))) (cons (nth n mat_game) (eval (read (strcat "C-U" (itoa y)))) ) ) ) ) (mapcar '(lambda (x) (vl-position-multi x (mapcar 'cdr mat_game)) ) '(0 1 2 3) ) '(0 1 2 3) ) '(0 1 2 3) ) (setq map (mapcar '(lambda (n / ) (cons n 0)) mat_game)) (entmake '( (0 . "STYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "2048") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 0.5) (3 . "arial.ttf") (4 . "") ) ) (setvar "TEXTSTYLE" "2048") (setvar "CMDECHO" 0) (command "_.zoom" "_window" "_none" '(0 0) "_none" '(4 4)) (foreach n map (entmake (list '(0 . "SOLID") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "0") '(62 . 252) '(100 . "AcDbTrace") (cons 10 (list (cdar n) (caar n) 0)) (cons 11 (list (1+ (cdar n)) (caar n) 0)) (cons 12 (list (cdar n) (1+ (caar n)) 0)) (cons 13 (list (1+ (cdar n)) (1+ (caar n)) 0)) '(39 . 0.0) '(210 0.0 0.0 1.0) ) ) (setq lst_mask (cons (assoc -1 (entget (entlast))) lst_mask)) (entmake (list '(0 . "TEXT") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "0") '(62 . 252) '(100 . "AcDbText") (cons 10 (list (+ (cdar n) 0.19423602) (+ (caar n) 0.25) 0)) '(40 . 0.5) '(1 . "0") '(50 . 0.0) '(41 . 0.65) '(51 . 0.0) '(7 . "2048") '(71 . 0) '(72 . 1) (cons 11 (list (+ (cdar n) 0.5) (+ (caar n) 0.5) 0)) '(210 0.0 0.0 1.0) '(100 . "AcDbText") '(73 . 2) ) ) (setq lst_text (cons (assoc -1 (entget (entlast))) lst_text)) ) (setq nw_pos (cons (cons (read (rtos (randomize 0 3) 2 0)) (read (rtos (randomize 0 3) 2 0)) ) (* 2 (read (rtos (randomize 1 2) 2 0))) ) ) (if (or (zerop (cdr (assoc (car nw_pos) map))) (eq (cdr (assoc (car nw_pos) map)) (cdr nw_pos)) ) (setq map (subst (cons (car nw_pos) (+ (cdr nw_pos) (cdr (assoc (car nw_pos) map)))) (assoc (car nw_pos) map) map)) ) (draw_map map) (print) (while (and (setq key (grread T 4 0)) (not loose)) (if (member (cadr key) '(50 52 54 56)) (progn (setq before (mapcar 'cdr map)) (push (cadr key)) (if (member 2048 (mapcar 'cdr map)) (progn (setq win T) (alert "GAGNE"))) (setq after (mapcar 'cdr map)) (cond ((not (equal before after)) (while (not (zerop (cdr (assoc (car (setq nw_pos (cons (cons (read (rtos (randomize 0 3) 2 0)) (read (rtos (randomize 0 3) 2 0)) ) (* 2 (read (rtos (randomize 1 2) 2 0))) ) ) ) map ) ) ) ) ) (if (or (zerop (cdr (assoc (car nw_pos) map))) (eq (cdr (assoc (car nw_pos) map)) (cdr nw_pos)) ) (setq map (subst (cons (car nw_pos) (+ (cdr nw_pos) (cdr (assoc (car nw_pos) map)))) (assoc (car nw_pos) map) map)) ) (draw_map map) ) (T (if (not (member 0 (mapcar 'cdr map))) (setq loose T))) ) ) ) ) (if (not win) (alert "PERDU")) (command "_.ERASE" "_All" "") (setvar "TEXTSTYLE" "Standard") (setvar "CMDECHO" 1) (foreach n '("R-L0" "R-L1" "R-L2" "R-L3" "R-R0" "R-R1" "R-R2" "R-R3") (set (read n) nil)) (foreach n '("C-U0" "C-U1" "C-U2" "C-U3" "C-D0" "C-D1" "C-D2" "C-D3") (set (read n) nil)) (prin1) ) Bien sur, à tester/utiliser dans un dessin vierge (hors session de travail, des bugs bloquants restent possibles)
-
Décalage de polyligne - 2 valeurs différentes
bonuscad a répondu à un(e) sujet de La Lozère dans Débuter en LISP
Merci de vos felicitations, mais la routine bien que que pouvant être sastifaisante est loin d'être une Rools! Pour ma part j'ai déja observé dans certain cas, un effet papillon (d'un bord à l'autre) sur le dernier segment. Autre défaut; bien que censé fonctionner sur des entités dans des SCU particuliers, l'accroissement des segments peut être bizzare ou la routine se plante. Des effets papillons sur le même bord lors de sucession d'un arc et ligne avec un angle serré. (un algorithme a implanter..) Bref c'est loin d'être achevé! Si (gile) peut apporté des améliorations, ça sera volontier, car j'atteint mes limites d'analyse. Je me suis trouver confronter à un drôle de problème, cela concerne (atan (cadr deriv) (car deriv)), deriv étant le résultat de (vlax-curve-getFirstDeriv obj param) (angtos (atan (cadr deriv) (car deriv))) me retourne bien le bon angle, mais les valeurs négatives ou positive de (cadr deriv) et de (car deriv) m'ont bien gêner pour trouver l'orientement correct des tangentes aux sommets (j'avais des valeur à pi prés, gênant pour orienter comme il faut.) Ma surprise vient que si je manipule avec (angtos (atan)), je n'est plus de problème de signe, mais convertir pour faire des test de condition, ça devient lourd. Donc du coup je me suis rabattu sur un orientement vectoriel. Bref, complétement perdu le bonhomme! Donc si (gile) ou un autre, peuvent me pointer du doigt là où le mât blesse, c'est volontier... Le challenge continu. A nous tous, on en aura une plus grosse qu'AutoDesk! :(rires forts): -
Décalage de polyligne - 2 valeurs différentes
zebulon_ a répondu à un(e) sujet de La Lozère dans Débuter en LISP
je n'ai pas été assez précis dans mon commentaire : je voulais dire décaler chaque segment de façon progressive, pas juste un offset, et je rejoins ta vision des choses pour généraliser la routine, mais en essayant d'intégrer les parties courbes, ce qui ne sera pas une mince affaire. Mon idée : faire un décalage progressif de chaque segment, droit ou courbe, puis de raccorder chaque segment ainsi obtenu pour créer une nouvelle polyligne. Il n'est pas question ici de faire pipi plus loin qu'un autre. Chacun apporte sa pierre à l'édifice, en fonction de son temps, sa connaissance, son inspiration, son expérience, etc S'il y a un peu d'émulation, puisque quelqu'un a parlé de challenge, pourquoi pas ? De là à parler de "faire pipi plus loin", je trouve que c'est exagéré. Amicalement Vincent -
Connaitre toutes ses fonctionnalités est possible. Pour ce qui est de les utiliser toutes, là, je suis d'accord, ca serait un sacré challenge selon le temps accordé. B) Dans les années 2000 on pouvait acheter des bibles qui décrivaient jusqu'aux écritures de symboles personnalisés. Il faut toujours les acheter d'occase pour se faire une idée.
-
C'est vrai qu'on rencontre tellement d'"antiockham" qu'on se croit arrivé dans le monde des Shadocks. Eh oui, pourquoi faire simple quand on peut faire compliqué ? On se demande si ce n'est pas ça la philosophie dominante... On la désigne par "usine à gaz" ou par le néologisme "philosophie usinagazesque". De temps en temps, sur ce forum, on s'adonne à l'un ou l'autre challenge lisp. Bien souvent, il y a plusieurs solutions proposées qui mènent toutes au même résultat, mais c'est la plus simple qui est la plus élégante, voire la plus rapide. C'est Antoine de Saint-Exupéry qui écrivait dans Terre des Hommes la chose suivante : « Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher » C'est ce que dit celui qui tombe du 50ème étage avant de s'écraser sur le pavé ! Amicalement Vincent
-
C'est magnifique merci, et donc du coup si je veux répéter ce script sur d'autres escaliers qui auront des calques en plus (marches par exemple) ou en moins (pas de garde corps d'étage) il faut que je m'oriente vers diesel et excel... J'y connais pas grand chose dans tout ça, mon utilisation d'excel est très basique (quelques formules) et j'ai une toute petite doc sur le diesel trouvé sur le site de Christian... mais voilà un challenge intéressant! (bon, ça risque de me prendre 4 ans tout seul donc je risque de revenir vers vous souvent...) merci!
-
Bonsoir à toutes et tous, Salut Olivier, OkOk mais tu t'adaptes rapidement du peu que j'ai vu et tu as surtout pris le temps, pour je ne sais quelle raison qui t'honore, de me dépanner, mais avant tout de dépanner cette demoiselle qui joue sa seconde carrière !! En effet, j'ai créé une formation d'adultes en reconversion (pour des raisons diverses et variées, tu te doutes bien,..) pour préparer le diplôme du BTS Géomètre Topographe en une année scolaire (au lieu de deux, imagine le challenge !!). On peut facilement comprendre qu'il joue gros dans cette formation. La plupart sont en couples et ont des enfants, etc bref=== Jouer et le bon verbe, mais le nouveau référentiel du diplôme qui commence dés Septembre de cette année sera plus accès géomatique,..donc, j'm'entraine ;) (Mais je ne veux bien entendu que ce ne soit pas au détriment des étudiants que j'encadre,...) J'enseigne également en formation initiale dans le même lycée, et là aussi, j'ai quelques bons ! Certains recherche des entreprises pour faire des licences pro en apprentissage, t'as ça sous l'coude ? C'est clair ! (J’allais dire, surtout par ces temps qui court ou tout se barre en c . - - - -e !) Et cette année, comme chaque année (c'est vrai que c'est rassurant,:)), certain(e)s se distingue particulièrement dans différents domaines de compétences dont, pour certain(e)s, une très bonne approche du très fameux couple "AutoCAD*/Covadis", devenu aujourd'hui incontournable dans mon/ notre métier (j'allais dire, c'est le minimum requis aujourd'hui),... Pensant avoir "suffisamment" de compétences pour l'enseignement que je dispense sur ces deux logiciels (rappelons que c'est un niveau BTS et non une dernière année d'école d'ingé,...! Bien entendu, rien de péjoratif, juste pour préciser que je ne me prétend pas pour un cador, loin de moi cette prétention mais pense avoir assez de compétences pour ce niveau de formation), je m'intéresse depuis quelques années au monde du SIG dés que le temps me le permet mais j'ai bien l'intention de monter en puissance dans ce domaine, d'autant que c'est l'enseignement que je devrai dispenser demain. C'est clair qu'en autodidacte, c'est tendu ! Très loin de mon monde de départ qui est le Génie civil et tout particulièrement le calcul des structures et ouvrages, pour dire,.. Merci encore,
-
Gestionnaire de la communauté francophone Autodesk
La Lozère a répondu à un sujet dans CAO, généralités
Hello, Félicitation, et bon courage. Gros challenge que de s'attaquer à l’Everest ;) http://fotoforum.fr/photos/2016/04/19.31.jpg -
Gestionnaire de la communauté francophone Autodesk
lecrabe a répondu à un sujet dans CAO, généralités
Hello Patrick Good Luck pour ce nouveau challenge ! A+, lecrabe -
Récupérer l'état du calque d'un bloc dans la fenêtre courante
Invité a posté un sujet dans ObjectARX/DBX, C++, .NET, RealDWG
Petit challenge en C#, j'aimerais récupérer l'état du calque (gelé ou non) d'une référence de bloc dans une fenêtre de présentation. Je connais l'objet BlockReference, je connais l'objet Viewport. Je voudrais donc savoir si le calque sur lequel ce bloc est inséré est gelé ou pas dans la fenêtre Viewport. Si vous pouviez me mettre sur une piste? merci. -
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!
-
Coucou Allons allons un peu de tenue ! À moins que le challenge soit de me remplacer dans les diatribes anti marketing. Les "vendeurs" ont une solide formation, le test pour les meilleurs est de vendre des glaçons aux Esquimaux et ensuite ils sont embauchés dans le monde informatique. Blague à part, merci de cet échange qui prouve si besoin est que le mieux est toujours l'ennemi du bien. Amicalement
-
Hello Un petit challenge pour le WE ! Regardez bien ce lien : https://knowledge.autodesk.com/customer-service/account-management/software-downloads/previous-versions/find-your-eligibility-for-previous-versions/desktop-subscription-previous-use#Available%20Previous%20Releases%20for%20Desktop%20Subscribers Quel est le COUAC dans cette liste ? Bye, lecrabe
-
(résolu) Bascule sur une valeur dans un bouton
VDH-Bruno a répondu à un(e) sujet de x_all dans AutoCAD 2015
Re, La ligne de code précédente, retranche ou ajoute le code binaire 1 à somme des codes binaires, donc si la variable et réglé à 2 on bascule de 2 à 3 et vice-versa. Donc pour basculer de 6 à 7, il faut que la variable soit préalablement définie sur une de ses 2 valeurs. L'expression lisp équivalente à l'expression diesel précédente: (setvar 'OSOPTIONS (boole 6 (getvar 'OSOPTIONS) 1)) (6 réprésentant l'opérateur xor dans le fonction boole). Maintenant si tu souhaites avoir une bascule spécifique sur les valeurs 6 ou 7, en fonction de la présence ou non du code binaire 1, tu peux tester ce qui suit: L'expression Diesel: ^C^COSOPTIONS;$M=$(if,$(<,$(xor,$(getvar,OSOPTIONS),1),$(getvar,OSOPTIONS)),6,7); L'expression Lisp équivalente: (setvar 'OSOPTIONS (if (< (boole 6 (getvar 'OSOPTIONS) 1) (getvar 'OSOPTIONS)) 6 7)) Expression qui peut être simplifié au moyen de la fonction logand: (setvar 'OSOPTIONS (if (zerop (logand (getvar 'OSOPTIONS) 1)) 7 6)) Sachant que tu t'intéresses au Lisp, je t'invite à jeter un œil à cette discussion challenge-bascule cela devrait aider. A+ -
Bonjour, Le retour des challenges super!!! Pour saluer cette initiative ma petite contribution… La première qui vient à l'esprit pour sa concision (à condition d'avoir une bibliothèque de fonction prédéfinie bien fournie), avec massoc et remove_doubles(/distinct), perso j'ai utilisé les fonctions de (gile) ici. (defun asso (l m) (setq m (mapcar 'cons l m)) (mapcar '(lambda (x) (append (list x) (gc:massoc x m))) (gc:distinct l)) ) (@Patrick_35: c'est l'écriture de l'algorithme décrit par stendhal666 sur le forum developpez.com, au passage il me semble qu'il faut ajouter un # devant 'cons pour que ton exemple soit compatible en Clisp ;-). Pour la syntaxe en Clisp http://www.lispworks.com/documentation/HyperSpec/Body/f_mapc_.htm) Sinon pour une proposition de code plus personnel, avec une variante mutuellement récursive pour optimiser le parcours sans avoir recours à la bibliothéque de fonction vl- et n'employer principalement que les fonctions primitives du lisp que sont car, cdr, cons.., (defun asso (l m / g f) (defun f (a acc l m) (cond ((null l) (list (cons a acc))) ((member a l) (g acc l m nil nil)) (T (cons (cons a acc) (f (car l) (list (car m)) (cdr l) (cdr m)))) ) ) (defun g (acc l1 m1 l2 m2) (if (eq a (car l1)) (f a (cons (car m1) acc) (append l2 (cdr l1)) (append m2 (cdr m1))) (g acc (cdr l1) (cdr m1) (cons (car l1) l2) (cons (car m1) m2)) ) ) (f (car l) (list (car m)) (cdr l) (cdr m)) ) Pour le jeu et pour ceux qui considèreraient que j'ai pris des libertés avec l'emploi de member et append, ci-dessous des versions "equivalentes" :-) (defun e-member (e l) (cond ((null l) nil) ((equal e (car l)) l) ;ou eq (T (e-member e (cdr l))) ) ) (defun e-append (l m) (if l (cons (car l) (e-append (cdr l) m)) m ) ) (Ps: Désolé de n'avoir pu participer dans les temps, un rapide coup d'œil sur l'autre challenge me fait penser que ça m'étonnerai que je puisse encore inscrire quelques lignes de code donc toutes mes félicitations aux participants) Amicalement Bruno
-
[Challenge] Suite de Fibonacci
Patrick_35 a répondu à un(e) sujet de (gile) dans Pour aller plus loin en LISP
En un peu plus concis (defun fib (a / b c d e) (setq b 0 c 0 d 0) (while (<= b a) (cond ((zerop B)) ((member b '(1 2)) (setq d 1)) (T (setq e c c d d (+ d e))) ) (setq b (1+ B)) ) (+ c d) ) @+ ps : maintenant, je vais regarder de plus près ta réponse sur l'autre challenge -
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).
-
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")) @+
-
Salut Thierry Alors, je suis assez d'accord avec de que dit notre ami Rhyuk. Et malgré ta technique que j'utilise aussi, il est assez ennuyeux de créer des masques. Pourquoi ne pas faire le même principe que les fenêtres dans les présentation et "dire": -tu dessine ta forme selon ce que tu veux masquer -_sélectionne la fonction masque : (Rectangle, Cercle; Forme): Entrez votre sélection : -Pis tu sélectionne ta forme ou ton cadre. Ami(e)s du Lisp je sens en vous monter ce challenge :) PS: la 255,255,255 fait apparaitre un gris clair lors de l'impression en PDF ou sur papier.
-
Textes et styles annotatifs : retours d'expérience ?
lili2006 a répondu à un(e) sujet de GEGEMATIC dans AutoCAD 2015
Re, Oui, le changement d'échelle des habillages correspond à un basculement du même Nom de fichier d'un répertoire (ex: fichier A01 répertoire 200 vers A01 répertoire 500) Il ne faut pas entendre le mot "échelle" comme sous AutoCAD. Il s'agit ici de bloc dans des proportions différentes en EO pour que le rendu EP selon l’échelle de sortie du plan soit cohérent (C'est pour cela que l'on est même amené à changer de symbolique selon l’échelle, mais vraisemblablement comme dans tous les corps de métiers concernés,...). Au passage, idem pour les espacements (pour les lignes discontinues) et tailles des entités habillant les polylignes. Bref, comme on ferait avec AutoCAD mais de façon plus" fastidieuse", ou tout du moins, moins automatisé (tiens, un bon challenge pour toi Christian,:)) =>Pour les blocs => redéfinition, (Dans mon exemple ci dessus) Pour les habillages polylignes (Diviser/Mesurer avec blocs) => Division différente et taille des blocs différentes -
[Challenge] Comparer des listes hétérogènes
VDH-Bruno a posté un sujet dans Pour aller plus loin en LISP
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 -
Création tuyauterie semi automatique
famaice a répondu à un(e) sujet de nG! Hebus dans LISP et Visual LISP
Salutations, Et bien oui ça peut se faire en Lisp... puisque ces une des routines que j'ai utilisé le plus dans un de mes précédents job :P . Le principe : on trace le routing de la fibre neutre à l'aide d'une polyligne 3D on lance la routine la routine nous demande de sélectionner la polyligne 3D une fenetre s'ouvre nous demandant de renseignement le DN suivant une norme (ISO, DIN SMS, ASME), le rayon de coude (3D ou 5D), et en xdata le repère de ligne et une indication sur le calorifuge (calo ? (oui/non). la routine va récupérer les coordonnées des points remarquables de la polyligne, tracer les epures de coudes, générer les balayage des différents tronçons et coudes, et tout regroupé en un solide 3D. N'ayant plus cette routine en magasin (ma sauvegarde à planter :( ), je ne peux te la transmettre. Cependant, cela pourrait donner des idées de nouveau projet pour les maitres LISP qui rodent sur CADXP (Gile, le challenge te tente ? ;)) Parce que ça, c'est vraiment le genre de routine qui facilite la vie de nombreux projeteurs en tuyauteries ! Bien à toi,
