liminnet 发表于 2008-10-17 14:42:00

nonsmall 发表于 2008-10-17 15:13:00

本帖最后由 作者 于 2008-10-17 16:38:11 编辑 <br /><br /> <p>(defun sublist (lst be end / new_list)<br/>&nbsp;(setq end (+ be end -3) be (- be 2));为了和substr一样<br/>&nbsp;(while (&lt;= be end)<br/>&nbsp;&nbsp;(setq new_list (append new_list (list (nth (setq be (1+ be)) lst))))<br/>&nbsp;)<br/>)</p><p><br/>(sublist (list 1 2 3 4 5 6 7 8 9) 3 6)</p><p>(3 4 5 6 7 8)</p>

liminnet 发表于 2008-10-17 16:05:00

nonsmall 发表于 2008-10-17 16:31:00

本帖最后由 作者 于 2008-10-17 16:43:29 编辑 <br /><br /> <p>命令: (ko-substr-&lt;list (list 1 2 3 4) 2 7)<br/>nil</p><p>命令: (ko-substr-&lt;list (list 1 2 3 4) 2 4)<br/>(2 3 4 nil)</p><p>命令: (substr "1234" 2 7)<br/>"234"</p><p>有错误;看来还不是99.9%</p>

nonsmall 发表于 2008-10-17 16:37:00

本帖最后由 作者 于 2008-10-17 17:00:23 编辑 <br /><br /> <p>我修改一下</p><p>命令: (sublist (list 1 2 3 4) 2 7)<br/>(2 3 4)</p><p></p>

liminnet 发表于 2008-10-17 16:59:00

liminnet 发表于 2008-10-17 17:36:00

caoyin 发表于 2008-10-17 18:08:00

<p>一个另类的写法:</p><p>(defun sublist (lst st len)<br/>&nbsp; (repeat (1- st) (setq lst (cdr lst)))<br/>&nbsp; (setq lst (reverse lst))<br/>&nbsp; (repeat (- (length lst) len) (setq lst (cdr lst)))<br/>&nbsp; (reverse lst)<br/>)</p>

nonsmall 发表于 2008-10-17 18:33:00

局部变量都省下了 果然另类!
页: [1]
查看完整版本: 一个新挑战substr可以提取字符串,有人发现了可以对表操作的函数吗