P12 (**) 解码游程编码过的列表
2015-12-30 22:43
239 查看
问题描述
该题是实现P11的逆操作,即将P11编码过的列表进行解码。如sash> (decode '((4 a) b (2 c) (2 a) d (4 e))) sash> (a a a a b c c a a d e e e e)
解法
递归实现
思路:(1) 将(N E)转换为'(E ... E)列表形式,单独的E转换为
'(E)列表;(2) 依次
append这些列表即可得到答案。
(define to-list (lambda (ne) (if (list? ne) (let f ([ls '()] [n (car ne)]) (cond [(zero? n) ls] [else (f (cons (cadr ne) ls) (- n 1))])) (list ne)))) (define decode (lambda (ls) (cond [(null? ls) '()] [else (append (to-list (car ls)) (decode (cdr ls)))])))
上面的
decode也可使用
reduce实现。
相关文章推荐
- Ruby中使用Block、Proc、lambda实现闭包
- Ruby中的block、proc、lambda区别总结
- C++实现的一个可以写递归lambda的Y函数
- C#特性之匿名方法和Lambda表达式
- 理解C#中的Lambda表达式
- 初步认识C#中的Lambda表达式和匿名方法
- C#3.0中Lambda表达式详解
- C#基础之Lambda表达式用法实例教程
- 深入理解Java中的Lambda表达式
- Java8新特性之Lambda表达式浅析
- Java Lambda表达式详解和实例
- Java函数式编程(一):你好,Lambda表达式
- 用Python编写一个简单的Lisp解释器的教程
- python中lambda与def用法对比实例分析
- Python lambda和Python def区别分析
- Python中的特殊语法:filter、map、reduce、lambda介绍
- 跟老齐学Python之大话题小函数(1)
- python基础教程之lambda表达式使用方法
- Python的lambda匿名函数的简单介绍
- 深入解析Python中的lambda表达式的用法