Aller au contenu

Challenge 22


Patrick_35

Messages recommandés

Chapeau (gile)

 

Conclusion : Rien de plus performant que la forme itérative/récursive

J''étais content de moi avec le mapcar pour la version sub :P tu as été plus subtile avec le cdr

Je n'y avais pas pensé.

 

Encore bravo

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Merci,

 

La routine sub_gile1 était déjà écrite, elle est dans dans Listes.lsp sur cette page (nommée subst-i).

J'ai écris les autres pour le challenge, à la place des premières (deb_ et fin_), j'utilise sublist (même lien que ci-dessus) qui est moins rapide mais plus polyvalente (elle fonctionne comme substr)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

je pense que le reverse n'est pas nécessaire dans l'algo de Patrick

 
(defun deb_pat2 (lst n / i res)
(setq i -1)
(repeat n
(setq res (cons (nth (setq i (1+ i)) lst) res))
)
(reverse res)
)

 

en commençant par le dernier élément du résultat voulu et en faisant évoluer i avec le pas -1 :

(nth comme append est couteux en temps)

(defun deb_bto1 (lst n / i res)
 (setq i n)
 (repeat n
   (setq res (cons (nth (setq i (1- i)) lst) res))
 )
)

 

ceci dit, je n'ai guère mieux que la solution de gile, c'est tout simple :

(defun deb_BTO3 (l n / r)
 (repeat n
   (setq r (cons (car l) r))
   (setq l (cdr l))
 )
 (reverse r)
)

j'utilise souvent ce bentchmark, il faut savoir que les résultats sont dépendants de l'ordre dans lequel les fonctions sont testées, il permet de dégager les meilleurs solutions mais pas d'avoir la photo finish entre elles :)

 

résultats :

liste de 10 éléments :

Benchmarking .................Elapsed milliseconds / relative speed for 16384 iteration(s):

(DEB_GILE1 LST1 4).....1281 / 1.04

(DEB_GILE2 LST1 4).....1281 / 1.04

(DEB_BTO3 LST1 4)......1328 / 1

 

liste de 100 éléments :

Benchmarking ................Elapsed milliseconds / relative speed for 8192 iteration(s):

(DEB_BTO3 LST2 40)......1172 / 1.04

(DEB_GILE2 LST2 40).....1204 / 1.01

(DEB_GILE1 LST2 40).....1219 / 1

 

liste de 1000 éléments :

Benchmarking ..............Elapsed milliseconds / relative speed for 2048 iteration(s):

(DEB_BTO3 LST3 300)......1391 / 1.04

(DEB_GILE1 LST3 300).....1453 / 1

(DEB_GILE2 LST3 300).....1453 / 1

 

liste de 10000 éléments :

Benchmarking ...........Elapsed milliseconds / relative speed for 256 iteration(s):

(DEB_BTO3 LST4 3000)......1672 / 1.06

(DEB_GILE1 LST4 3000).....1766 / 1

(DEB_GILE2 LST4 3000).....1766 / 1

 

ce ne sont pas des différences significatives.

 

Bruno Toniutti

Lien vers le commentaire
Partager sur d’autres sites

Salut! :)

Regardez ma variante faite pour de grandes listes...

(defun deb-e2 (l n / r)
(repeat (/ n 4)
 (setq r (cons (cadddr l)
               (cons (caddr l) (cons (cadr l) (cons (car l) r)))
         ) ;_  cons
       l (cddddr l)
 ) ;_  setq
) ;_  repeat
(repeat (rem n 4)
 (setq r (cons (car l) r)
       l (cdr l)
 ) ;_  setq
) ;_  repeat
(reverse r)
) 

Evgeniy

Lien vers le commentaire
Partager sur d’autres sites

 liste de 10 elements :
   (DEB_GILE2 L 4).....1638 / 1.08 
   (DEB_GILE1 L 4).....1653 / 1.07
   (DEB_BTO3 L 4)......1716 / 1.03
   (DEB-E2 L 4)........1763 / 1 
liste de 10 elements :
   (DEB-E2 L 8)........1919 / 1.05 
   (DEB_GILE2 L 8).....1935 / 1.04
   (DEB_GILE1 L 8).....1950 / 1.03
   (DEB_BTO3 L 8)......2012 / 1 
liste de 100 elements :
   (DEB-E2 L 40)........1576 / 1.38 
   (DEB_BTO3 L 40)......2121 / 1.02
   (DEB_GILE2 L 40).....2137 / 1.01
   (DEB_GILE1 L 40).....2168 / 1 
liste de 100 elements :
   (DEB-E2 L 80)........1201 / 1.52 
   (DEB_GILE2 L 80).....1794 / 1.02
   (DEB_BTO3 L 80)......1794 / 1.02
   (DEB_GILE1 L 80).....1826 / 1 
liste de 1000 elements :
   (DEB-E2 L 400)........1138 / 1.77 
   (DEB_BTO3 L 400)......1919 / 1.05
   (DEB_GILE2 L 400).....1934 / 1.04
   (DEB_GILE1 L 400).....2013 / 1 
liste de 1000 elements :
   (DEB-E2 L 800)........1092 / 1.79 
   (DEB_GILE2 L 800).....1903 / 1.02
   (DEB_BTO3 L 800)......1903 / 1.02
   (DEB_GILE1 L 800).....1950 / 1 

Evgeniy

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

Malin ElpanovEvgeniy, du grand art :)

 

je pense que le reverse n'est pas nécessaire dans l'algo de Patrick

En regardant le tien, je vois que tu en utilise aussi un ;)

Ceci dit, je n'utilise pas assez le cdr.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

J'ai fait une petite étude :

:)

 

(defun deb_pat1 (lst n)
(vl-remove-if '(lambda (x) (< (setq n (1- n)) 0)) lst)
) ;_  defun
(defun deb_pat2 (lst n / i res)
(setq i -1)
(repeat n (setq res (cons (nth (setq i (1+ i)) lst) res)))
(reverse res)
) ;_  defun
(defun deb_Bred (lst n / l)
(repeat n
 (setq l   (append l (list (nth 0 lst)))
       lst (cdr lst)
 ) ;_  setq
) ;_  repeat
l
) ;_  defun
(defun deb_gile1 (lst ind)
(if (< 0 ind)
 (cons (car lst) (deb_gile1 (cdr lst) (1- ind)))
) ;_  if
) ;_  defun
(defun deb_gile2 (lst ind / ret)
(while (< 0 ind)
 (setq ret (cons (car lst) ret)
       ind (1- ind)
       lst (cdr lst)
 ) ;_  setq
) ;_  while
(reverse ret)
) ;_  defun
(defun deb_BTO3 (l n / r)
(repeat n (setq r (cons (car l) r)) (setq l (cdr l)))
(reverse r)
) ;_  defun
(defun deb-e2 (l n / r)
(repeat (/ n 4)
 (setq r (cons (cadddr l)
               (cons (caddr l) (cons (cadr l) (cons (car l) r)))
         ) ;_ cons
       l (cddddr l)
 ) ;_ setq
) ;_ repeat
(repeat (rem n 4)
 (setq r (cons (car l) r)
       l (cdr l)
 ) ;_ setq
) ;_ repeat
(reverse r)
) ;_  defun

 

liste de 10 elements :
   (DEB_GILE1 L 1).....1700 / 2.86 
   (DEB_GILE2 L 1).....1716 / 2.84
   (DEB_PAT2 L 1)......1857 / 2.62
   (DEB_BRED L 1)......1887 / 2.58
   (DEB-E2 L 1)........1981 / 2.46
   (DEB_PAT1 L 1)......4867 / 1.00 

   (DEB_GILE1 L 3).....1840 / 2.61 
   (DEB_GILE2 L 3).....1934 / 2.48
   (DEB_PAT2 L 3)......1997 / 2.41
   (DEB-E2 L 3)........2106 / 2.28
   (DEB_BRED L 3)......2137 / 2.25
   (DEB_PAT1 L 3)......4805 / 1.00 

   (DEB_GILE2 L 6).....1030 / 2.33 
   (DEB_GILE1 L 6).....1045 / 2.30
   (DEB-E2 L 6)........1092 / 2.20
   (DEB_PAT2 L 6)......1217 / 1.97
   (DEB_BRED L 6)......1280 / 1.88
   (DEB_PAT1 L 6)......2402 / 1.00 

   (DEB_GILE2 L 9).....1139 / 2.11 
   (DEB_GILE1 L 9).....1155 / 2.08
   (DEB-E2 L 9)........1155 / 2.08
   (DEB_PAT2 L 9)......1264 / 1.90
   (DEB_BRED L 9)......1466 / 1.64
   (DEB_PAT1 L 9)......2403 / 1.00 

liste de 100 elements :
   (DEB_GILE2 L 10).....1185 / 3.32 
   (DEB-E2 L 10)........1202 / 3.27
   (DEB_GILE1 L 10).....1217 / 3.23
   (DEB_PAT2 L 10)......1310 / 3.00
   (DEB_BRED L 10)......1528 / 2.57
   (DEB_PAT1 L 10)......3932 / 1.00 

   (DEB_PAT2 L 30)......2184 / 1.79 
   (DEB-E2 L 30)........2668 / 1.47
   (DEB_GILE1 L 30).....3276 / 1.20
   (DEB_BRED L 30)......3354 / 1.17
   (DEB_GILE2 L 30).....3541 / 1.11
   (DEB_PAT1 L 30)......3916 / 1.00 

   (DEB-E2 L 60)........1731 / 3.46 
   (DEB_GILE1 L 60).....2636 / 2.27
   (DEB_GILE2 L 60).....2714 / 2.21
   (DEB_PAT1 L 60)......2949 / 2.03
   (DEB_PAT2 L 60)......3074 / 1.95
   (DEB_BRED L 60)......5990 / 1.00 

   (DEB-E2 L 90)........1217 / 4.44 
   (DEB_PAT1 L 90)......1513 / 3.57
   (DEB_GILE1 L 90).....1996 / 2.70
   (DEB_GILE2 L 90).....2044 / 2.64
   (DEB_PAT2 L 90)......2262 / 2.39
   (DEB_BRED L 90)......5398 / 1.00 

liste de 1000 elements :
   (DEB-E2 L 100)........1233 / 5.67 
   (DEB_GILE1 L 100).....2075 / 3.37
   (DEB_GILE2 L 100).....2106 / 3.32
   (DEB_PAT2 L 100)......2465 / 2.84
   (DEB_BRED L 100)......6084 / 1.15
   (DEB_PAT1 L 100)......6989 / 1.00 

   (DEB-E2 L 300).........1591 / 11.66 
   (DEB_GILE1 L 300)......2854 / 6.50
   (DEB_GILE2 L 300)......2964 / 6.26
   (DEB_PAT1 L 300).......3542 / 5.24
   (DEB_PAT2 L 300).......4274 / 4.34
   (DEB_BRED L 300)......18549 / 1.00 

   (DEB-E2 L 600).........1606 / 25.25 
   (DEB_PAT1 L 600).......2294 / 17.67
   (DEB_GILE2 L 600)......2777 / 14.60
   (DEB_GILE1 L 600)......2902 / 13.97
   (DEB_PAT2 L 600).......8721 / 4.65
   (DEB_BRED L 600)......40545 / 1.00 

   (DEB-E2 L 900).........1170 / 51.03 
   (DEB_PAT1 L 900).......1763 / 33.86
   (DEB_GILE2 L 900)......2074 / 28.79
   (DEB_GILE1 L 900)......2169 / 27.52
   (DEB_PAT2 L 900)......10405 / 5.74
   (DEB_BRED L 900)......59701 / 1.00 

 

(defun fin_Bred (lst n / l i)
(repeat (- (setq i (length lst)) (1- n))
 (setq l (cons (nth (setq i (1- i)) lst) l)
       n (1+ n)
 ) ;_  setq
) ;_  repeat
l
) ;_  defun
(defun fin_pat1 (lst n)
(vl-remove-if '(lambda (x) (> (setq n (1- n)) 0)) lst)
) ;_  defun
(defun fin_pat2 (lst n / i res)
(setq i   -1
      lst (reverse lst)
) ;_  setq
(repeat (1+ (- (length lst) n))
 (setq res (cons (nth (setq i (1+ i)) lst) res))
) ;_  repeat
) ;_  defun
(defun fin_gile1 (lst ind)
(if (< 1 ind) ; (and lst (< 1 ind))
 (fin_gile1 (cdr lst) (1- ind))
 lst
) ;_  if
) ;_  defun
(defun fin_gile2 (lst ind)
(while (< 1 ind) ; (and lst (< 1 ind))
 (setq ind (1- ind)
       lst (cdr lst)
 ) ;_  setq
) ;_  while
) ;_  defun
(defun fin-e (l n)
(setq n(1- n))
(repeat (/ n 4) (setq l (cddddr l)))
(repeat (rem n 4) (setq l (cdr l)))
l
) ;_  defun

 

(fin_gile2 l 1) => nil
liste de 10 elements :
   (FIN_GILE1 L 1).....1576 / 3.04 
   (FIN-E L 1).........1872 / 2.56
   (FIN_PAT2 L 1)......2621 / 1.83
   (FIN_BRED L 1)......2715 / 1.76
   (FIN_PAT1 L 1)......4789 / 1.00 

   (FIN_GILE2 L 3).....1482 / 2.40 
   (FIN_GILE1 L 3).....1560 / 2.28
   (FIN-E L 3).........1716 / 2.07
   (FIN_PAT2 L 3)......2169 / 1.64
   (FIN_BRED L 3)......2325 / 1.53
   (FIN_PAT1 L 3)......3557 / 1.00 

   (FIN_GILE2 L 6).....1669 / 2.22 
   (FIN_GILE1 L 6).....1701 / 2.17
   (FIN-E L 6).........1716 / 2.15
   (FIN_PAT2 L 6)......1950 / 1.90
   (FIN_BRED L 6)......2013 / 1.84
   (FIN_PAT1 L 6)......3697 / 1.00 

   (FIN_PAT2 L 9)......1825 / 2.14 
   (FIN-E L 9).........1825 / 2.14
   (FIN_BRED L 9)......1841 / 2.12
   (FIN_GILE2 L 9).....1934 / 2.02
   (FIN_GILE1 L 9).....2012 / 1.94
   (FIN_PAT1 L 9)......3900 / 1.00 

liste de 100 elements :

   (FIN_GILE2 L 10)......1965 / 6.30 
   (FIN-E L 10)..........1981 / 6.24
   (FIN_GILE1 L 10)......2106 / 5.87
   (FIN_PAT1 L 10).......7754 / 1.60
   (FIN_PAT2 L 10)......10983 / 1.13
   (FIN_BRED L 10)......12371 / 1.00 

   (FIN-E L 30).........1061 / 4.48 
   (FIN_GILE2 L 30).....1514 / 3.14
   (FIN_GILE1 L 30).....1606 / 2.96
   (FIN_PAT1 L 30)......3136 / 1.52
   (FIN_PAT2 L 30)......3946 / 1.21
   (FIN_BRED L 30)......4758 / 1.00 

   (FIN-E L 60).........1217 / 2.63 
   (FIN_GILE2 L 60).....2200 / 1.45
   (FIN_GILE1 L 60).....2434 / 1.31
   (FIN_PAT2 L 60)......2574 / 1.24
   (FIN_BRED L 60)......3182 / 1.01
   (FIN_PAT1 L 60)......3198 / 1.00 

   (FIN_PAT2 L 90)......1295 / 2.51 
   (FIN-E L 90).........1342 / 2.42
   (FIN_BRED L 90)......1451 / 2.24
   (FIN_GILE2 L 90).....2949 / 1.10
   (FIN_PAT1 L 90)......3182 / 1.02
   (FIN_GILE1 L 90).....3245 / 1.00 

liste de 1000 elements :
   (FIN-E L 100)...........1186 / 87.96 
   (FIN_GILE2 L 100).......2527 / 41.28
   (FIN_GILE1 L 100).......2839 / 36.74
   (FIN_PAT1 L 100)........9298 / 11.22
   (FIN_PAT2 L 100).......70606 / 1.48
   (FIN_BRED L 100)......104318 / 1.00 

   (FIN-E L 300)..........1170 / 62.44 
   (FIN_GILE2 L 300)......3510 / 20.81
   (FIN_GILE1 L 300)......4493 / 16.26
   (FIN_PAT1 L 300).......9220 / 7.92
   (FIN_PAT2 L 300)......45630 / 1.60
   (FIN_BRED L 300)......73055 / 1.00 

   (FIN-E L 600)..........1888 / 26.17 
   (FIN_GILE2 L 600)......6552 / 7.54
   (FIN_GILE1 L 600)......8487 / 5.82
   (FIN_PAT1 L 600).......9126 / 5.41
   (FIN_PAT2 L 600)......19095 / 2.59
   (FIN_BRED L 600)......49406 / 1.00 

   (FIN-E L 900).........1310 / 5.63 
   (FIN_PAT2 L 900)......1934 / 3.82
   (FIN_PAT1 L 900)......4555 / 1.62
   (FIN_GILE2 L 900).....4867 / 1.52
   (FIN_GILE1 L 900).....6272 / 1.18
   (FIN_BRED L 900)......7379 / 1.00 

 

(defun sub_Bred (lst lst-I n)
(append (deb_Bred lst n) (list lst-I) (fin_Bred lst (+ n 2)))
) ;_  defun
(defun sub_pat1 (lst rpl n)
(setq n (1+ n))
(mapcar '(lambda (x)
          (if (zerop (setq n (1- n)))
           rpl
           x
          ) ;_  if
         ) ;_  lambda
        lst
) ;_  mapcar
) ;_  defun
(defun sub_pat2 (lst rpl n)
(append (deb_pat2 lst n) (list rpl) (fin_pat2 lst (+ n 2)))
) ;_  defun
(defun sub_gile1 (lst ele ind)
(if (zerop ind) ; (or (zerop ind) (null lst))
 (cons ele (cdr lst))
 (cons (car lst) (sub_gile1 (cdr lst) ele (1- ind)))
) ;_  if
) ;_  defun
(defun sub_gile2 (lst ele ind / ret)
(while (< 0 ind) ; (and lst (< 0 ind))
 (setq ret (cons (car lst) ret)
       ind (1- ind)
       lst (cdr lst)
 ) ;_  setq
) ;_  while
(append (reverse ret) (cons ele (cdr lst)))
) ;_  defun
(defun sub-e (l e n / r)
(repeat (/ n 4)
 (setq r (cons (cadddr l)
               (cons (caddr l) (cons (cadr l) (cons (car l) r)))
         ) ;_  cons
       l (cddddr l)
 ) ;_  setq
) ;_  repeat
(repeat (rem n 4)
 (setq r (cons (car l) r)
       l (cdr l)
 ) ;_  setq
) ;_  repeat
(append (reverse r) (cons e (cdr l)))
) ;_  defun

 

liste de 10 elements :
   (SUB_GILE1 L E 1).....1779 / 1.72 
   (SUB_GILE2 L E 1).....1903 / 1.61
   (SUB-E L E 1).........2122 / 1.44
   (SUB_PAT1 L E 1)......2418 / 1.26
   (SUB_PAT2 L E 1)......2948 / 1.04
   (SUB_BRED L E 1)......3057 / 1.00 

   (SUB_GILE1 L E 3).....1934 / 1.63 
   (SUB_GILE2 L E 3).....2059 / 1.53
   (SUB-E L E 3).........2278 / 1.38
   (SUB_PAT1 L E 3)......2371 / 1.33
   (SUB_PAT2 L E 3)......2995 / 1.05
   (SUB_BRED L E 3)......3151 / 1.00 

   (SUB_GILE1 L E 6).....1076 / 1.51 
   (SUB_GILE2 L E 6).....1139 / 1.42
   (SUB_PAT1 L E 6)......1185 / 1.37
   (SUB-E L E 6).........1185 / 1.37
   (SUB_PAT2 L E 6)......1482 / 1.09
   (SUB_BRED L E 6)......1622 / 1.00 

   (SUB_PAT1 L E 9)......1186 / 1.41 
   (SUB_GILE1 L E 9).....1202 / 1.39
   (SUB-E L E 9).........1217 / 1.37
   (SUB_GILE2 L E 9).....1248 / 1.34
   (SUB_PAT2 L E 9)......1482 / 1.13
   (SUB_BRED L E 9)......1669 / 1.00 

liste de 100 elements :
   (SUB_GILE1 L E 10).....1233 / 5.71 
   (SUB-E L E 10).........1311 / 5.37
   (SUB_GILE2 L E 10).....1326 / 5.31
   (SUB_PAT1 L E 10)......2792 / 2.52
   (SUB_PAT2 L E 10)......6099 / 1.15
   (SUB_BRED L E 10)......7036 / 1.00 

   (SUB-E L E 30).........1701 / 4.67 
   (SUB_GILE1 L E 30).....1996 / 3.98
   (SUB_GILE2 L E 30).....2028 / 3.92
   (SUB_PAT1 L E 30)......2808 / 2.83
   (SUB_PAT2 L E 30)......5835 / 1.36
   (SUB_BRED L E 30)......7941 / 1.00 

   (SUB-E L E 60).........1108 / 4.66 
   (SUB_PAT1 L E 60)......1436 / 3.60
   (SUB_GILE2 L E 60).....1544 / 3.34
   (SUB_GILE1 L E 60).....1576 / 3.28
   (SUB_PAT2 L E 60)......2917 / 1.77
   (SUB_BRED L E 60)......5164 / 1.00 

   (SUB_PAT1 L E 90)......1404 / 4.96 
   (SUB-E L E 90).........1435 / 4.85
   (SUB_GILE2 L E 90).....2075 / 3.35
   (SUB_GILE1 L E 90).....2122 / 3.28
   (SUB_PAT2 L E 90)......3120 / 2.23
   (SUB_BRED L E 90)......6958 / 1.00 

liste de 1000 elements :
   (SUB-E L E 100)..........1638 / 28.07 
   (SUB_GILE1 L E 100)......1825 / 25.19
   (SUB_GILE2 L E 100)......2340 / 19.65
   (SUB_PAT1 L E 100).......4899 / 9.38
   (SUB_PAT2 L E 100)......36286 / 1.27
   (SUB_BRED L E 100)......45974 / 1.00 

   (SUB-E L E 300)..........1997 / 21.43 
   (SUB_GILE1 L E 300)......3089 / 13.85
   (SUB_GILE2 L E 300)......3573 / 11.98
   (SUB_PAT1 L E 300).......4821 / 8.88
   (SUB_PAT2 L E 300)......19157 / 2.23
   (SUB_BRED L E 300)......42791 / 1.00 

   (SUB-E L E 600)..........1701 / 25.48 
   (SUB_PAT1 L E 600).......2683 / 16.15
   (SUB_GILE1 L E 600)......2980 / 14.54
   (SUB_GILE2 L E 600)......3323 / 13.04
   (SUB_PAT2 L E 600).......9516 / 4.55
   (SUB_BRED L E 600)......43337 / 1.00 

   (SUB-E L E 900)..........1202 / 32.97 
   (SUB_PAT1 L E 900).......1342 / 29.53
   (SUB_GILE1 L E 900)......2215 / 17.89
   (SUB_GILE2 L E 900)......2403 / 16.49
   (SUB_PAT2 L E 900).......5928 / 6.68
   (SUB_BRED L E 900)......39625 / 1.00 

 

 

 

 

[Edité le 18/7/2008 par ElpanovEvgeniy]

Evgeniy

Lien vers le commentaire
Partager sur d’autres sites

Chapeau Evgeniy,

 

J'avais pensé un moment utiliser cddddr, mais obsédé par la concision et le style du code, je n'ai pas persisté.

 

Ça aurait pu donner un truc comme ça :

 

(defun deb_gile3 (lst ind)
 (cond
   ((     (cons (car lst)
   (cons (cadr lst)
	 (cons (caddr lst)
	       (cons (cadddr lst)
		     (deb_gile4 (cddddr lst) (- ind 4))
	       )
	 )
   )
    )
   )
   ((= 4 ind)
    (list (car lst) (cadr lst) (caddr lst) (cadddr lst))
   )
   ((= 3 ind) (list (car lst) (cadr lst) (caddr lst)))
   ((= 2 ind) (list (car lst) (cadr lst)))
   ((= 1 ind) (list (car lst)))
   (T nil)
 )
) 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Salut

ps. Pourquoi il n'y a pas de suite des compétitions ?

C'est à dire qu'il est difficile de passer après toi ou (gile) :P

 

Et pour d'autres challenges, il faut des idées.

J'en ai bien quelques unes, mais elles demandent un développement assez conséquent, ce qui n'est pas le but recherché (du moins je le pense).

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Et pour d'autres challenges, il faut des idées.

J'en ai bien quelques unes, mais elles demandent un développement assez conséquent, ce qui n'est pas le but recherché (du moins je le pense).

 

Et la suite de fibonnacci? ou la tour de hanoï ?

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Lien vers le commentaire
Partager sur d’autres sites

Salut

ps. Pourquoi il n'y a pas de suite des compétitions ?

C'est à dire qu'il est difficile de passer après toi ou (gile) :P

 

@+

 

Je suis toujours prêt, aller après vous!

 

Pour moi, ces compétitions, sont très intéressantes!

Chaque fois, je trouve les nouvelles idées.

 

Evgeniy

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é