Aller au contenu

VDH-Bruno

Membres
  • Compteur de contenus

    1 146
  • Inscription

  • Dernière visite

  • Jours gagnés

    20

Tout ce qui a été posté par VDH-Bruno

  1. Compare l'exemple donné par (gile): Et la façon dont tu as appelé sa fonction dans ton code: Que remarques tu?
  2. @DenisHen, juste une petite observation au passage mais loin de moi l'idée de me poser en donneur de leçon, mais j'ai l'impression que tu butes souvent sur les mêmes problèmes, qui de mon point de vue n'ont rien avoir avec le langage de programmation que ce soit vba, lisp etc... Car bien souvent le problème se situe en amont, pour mon cas personnelle je passe en général plus de temps à exprimer clairement ce que je cherche à faire, plutôt qu'à le coder. Je te livre deux petites maximes bien connu que je me répète lorsque je bute sur un problème: La première: « Ce que l’on conçoit bien s’énonce clairement » Puis la seconde qui découle de la précédente: « Un problème bien posé est à moitié résolu ! » Et en général lorsque mon raisonnement répond à ces 2 maximes, le code s'écrit aisément.
  3. Oui oui ça fonctionnait bien et apply est une bonne habitude dans le cas d'un nombre d'argument variable... C'est juste que ça faisait longtemps que je n'avais tapé qq lignes de Lisp et ça me démangeait, donc je me suis fait plaisir. Amicalement Bruno
  4. _$ (setq ListNbTS '(0 0 0 0 0 0)) (0 0 0 0 0 0) _$ (setq ListNbTS (foo '+ 1 2 ListNbTS)) (0 0 1 0 0 0) _$ (setq ListNbTS (foo '+ 1 2 ListNbTS)) (0 0 2 0 0 0) _$ ou bien _$ (setq ListNb '(0 0 0 0 0 0)) (0 0 0 0 0 0) _$ (setq ListNb (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb))))) (0 0 1 0 0 0) _$ (setq ListNb (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb))))) (0 0 2 0 0 0) Qu'elle est le problème je comprend pas la question? Salutations
  5. Bonjour Luna, Pour le retour et pour le jeu: (append (list (apply fun (vl-remove nil (list (car lst) val)))) (cdr lst)) J'aurais fait un (cons ..., plutôt qu'un (append (list ... et un (cons (car lst) (cond (val (list val)))) plutôt qu'un (vl-remove nil (list (car lst) val) ce qui aurait donné un: (cons (apply fun (cons (car lst) (cond (val (list val))))) (cdr lst)) Après c'est juste une écriture différente car je trouvais amusant pour l'exercice de vouloir gérer 1+ ou + en argument de fun, même si personnellement je ne l'aurais pas tenté et me serais contenté d'une écriture plus classique comme ceci: (defun foo (fun val ind lst) (cond ((null lst) nil) ((zerop ind) (cons ((eval fun) (car lst) val) (cdr lst))) ((cons (car lst) (foo fun val (1- ind) (cdr lst)))) ) ) $ (foo '+ 1 2 '(0 0 0 0 0 0)) (0 0 1 0 0 0) "Cha"lutations😉
  6. Un exemple de ce que tu as au départ et de ce que tu veux à l'arrivé? Que contient Item, Text ?
  7. _$ (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb)))) (0 0 1 0 0 0) Ou bien j'ai pas pas compris la question
  8. Oui tout fait d'accord j'ai répondu avec la ligne de code basé sur le premier msg de @DenisHen, cette ligne trie en fonction des quantitatifs de TS, mais ne prend pas en compte le dimension de panneau de TS, comme dans le deuxième message de @DenisHen dans ce cas il faut découper la chaine avec la fonction (str2lst) de @(gile), puis effectuer le trie
  9. @DenisHen: Pour compléter la fonction atoi en remplacement de la fonction read aurait tout aussi bien fait le travail
  10. Bonjour, Pour compléter la réponse complète de @Luna sur le sujet. Je ferais remarquer que pour simplifier le code, dans le cas présent tes chaines de caractère sont "systématiquement" NumériqueAlpha et non AlphaNumérique (en ce qui concerne ton critère de trie) Tu peux tenter la ligne de code suivante au moyen de la fonction read: (vl-sort ListTS '(lambda (e1 e2) (< (read e1) (read e2)))) Cdt Bruno
  11. @OrionLG heureux d'avoir pu aidé, bien que je ne puisse le faire autant que je voudrais, mais j'ai toujours plaisir à suivre vos discussions sur ce forum. Cdt Bruno
  12. Bonjour Luna, Oui c'était l'occasion de rappeler une astuce parmi d'autres, mais si on veut être puriste la méthode avec if, subst, append est plus académique et c'est celle que j'utilise bien plus volontier (plus lisible) dans du code appelé à être réutilisé, et c'est celle que je recommanderais pour un débutant, après une fois que les bases sont bien assimilés, on peut effectivement prendre quelques libertés pour du code ponctuel qui doit être taper à la va vite, ou pendant la phase de prototypage de son code. Amicalement Bruno
  13. Bonjour, Je n'ai pas d'AutoCAD sous la main pour te faire du surmesure, mais tu peux procéder avec entmode comme tu procedes avec entmake au moyen de la fonction append pour ajouter la paire DXF qui t'intéresse, dans mon message précedant je t'ai copier coller à titre d'exemple une réponse précedemment faite sur le forum lisp Cdt
  14. Les fonctions max & min Pour mémoire, une petite subtilité avec ces 2 fonctions que j'avais oublié de relever ici: Appelé sans arguments, elles retournent toutes les 2 deux 0 _$ (min) 0 _$ (max) 0 Appelé avec des arguments valant nil, elles retournent une erreur _$ (min nil) ; erreur: type d'argument incorrect: numberp: nil _$ (max nil nil nil) ; erreur: type d'argument incorrect: numberp: nil Par analogie on comprend mieux pourquoi: Appliqué sur une liste vide les fonctions retourne 0 (un exemple d'application ici ) _$ (apply 'min nil) 0 _$ (apply 'max nil) 0 Et qu'appliqué à une liste d'élément vide ces fonctions retourne une erreur _$ (apply 'min '(nil nil nil)) ; erreur: type d'argument incorrect: numberp: nil
  15. Il faut le voir comme expliqué là: [challenge] A05 : Find out whether a list is a palindrome (theswamp.org) Bon WE
  16. Oui c'est de l'AutoLisp il faut les voir comme une extension des fonctions Lisp de base, d’ailleurs on retrouve la plupart de ces fonctions dans les autres dialectes Lisp sans le préfixe vl-
  17. Bonjour Patrice, Oui ça peut être une explication, mais ce n'est pas incontournable car les fonctions vl-* ont déjà été réécrite en "vieil" AutoLisp, à ce sujet voir les fonction de (gile) Équivalences à vl-* - Routines LISP - CadXP . Donc en toute logique tout bon lispeur devrait les avoir installé sur son clone pour être compatible.. A+ Bruno
  18. VDH-Bruno

    VPMIN, VPMAX

    Normalement le vl-cmd te met à l'abrit des plantages😉
  19. Oui oui tu as tout bon avec le vocabulaire, oui comme toi je pense que c'est dommage de se limiter...
  20. VDH-Bruno

    VPMIN, VPMAX

    Dans ce cas c'est plus facile, car sur ma veille version d'AutoCAD cette ligne provoque une erreur en mode _VPMAX Donc cette ligne devrait suffire à faire la bascule, à tester: (cond ((vl-cmdf "_-VPORTS" "_Toggle") (command "_VPMIN")) (T (command) (command "_VPMAX"))) A+ Bruno
  21. Oupss j'avais oublié de préciser que pour ces petites challenges, même si je le regrette, ils ont limité les codes aux seuls fonctions AutoLisp antérieur à l'apparition de Visual Lisp c.a.d. avant l'apparition des fonctions vl-, désolé... A+ Bruno
  22. VDH-Bruno

    VPMIN, VPMAX

    Bonjour, Rapidement et intuitivement je tenterais un truc comme ça, pour faire une bascule: ((lambda (v1 wmin v2) (if (= v1 v2) (command "_VPMAX"))) (getvar 'VIEWSIZE) (command "_VPMIN") (getvar 'VIEWSIZE)) A tester sur ta ligne de commande Bruno
  23. Les challenges sont simples, l'anglais ne devrait pas être un repoussoir (moi même je ne parle toujours pas anglais, je ne le déchiffre que dans les grandes lignes en général je ne fais de proposition que si les exemples me semble clair). Ici aussi il y a beaucoup de challenges certains faciles d'autres un peu moins, même si ils ne sont pas regroupé dans un même fil de discussion avec une petite recherche on arrive à mettre la main dessus. D'une manière général dans un challenge ce qui compte c'est de les chercher, cela permet de mieux comprendre les réponses apportés, les lires sans avoir planché dessus au préalable n'a pas grand intérêt.. Les tenter n'obligent pas forcément à poster une réponse mais permet de s'exercer/réviser. Salutations Bruno
  24. Bonjour, Un petit mot pour ceux qui veulent s’entraîner ou se divertir, sur TheSamp j'ai découvert il y a peu une section qui regroupe plein de petits challenges Lisp à réaliser et tout à fait abordable pour débutant. Les chercher de son coté et confronter ses solutions aux solutions déjà proposé, est je pense un bon moyen pour qui chercheraient à se perfectionner. Challenges (theswamp.org) Salutations Bruno
×
×
  • 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é