Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Printing 为什么我的成绩是()呢?_Printing_Lisp_Common Lisp - Fatal编程技术网

Printing 为什么我的成绩是()呢?

Printing 为什么我的成绩是()呢?,printing,lisp,common-lisp,Printing,Lisp,Common Lisp,我尝试解决一个任务并尝试转换此参数: (DEFPARAMETER AUSSAGEN '( (THE OFFICE IS EAST OF THE HALLWAY) (THE KITCHEN IS NORTH OF THE OFFICE)

我尝试解决一个任务并尝试转换此参数:

(DEFPARAMETER AUSSAGEN '(
                         (THE OFFICE IS EAST OF THE HALLWAY)                                       
                         (THE KITCHEN IS NORTH OF THE OFFICE)                                      
                         (THE GARDEN IS WEST OF THE BEDROOM)                                       
                         (THE OFFICE IS WEST OF THE GARDEN)                                        
                         (THE BATHROOM IS NORTH OF THE GARDEN)                                     
                         (THE BEDROOM IS SOUTH OF THE LAVATORY)                                    
                         (THE BATHROOM IS WEST OF THE LAVATORY)                                    
                         (THE KITCHEN IS WEST OF THE BATHROOM)                                     
                         (THE KITCHEN IS EAST OF THE STUDIO)                                       
                         (THE HALLWAY IS SOUTH OF THE STUDIO)))  
在此列表中:

((HALLWAY EAST OFFICE) (OFFICE WEST HALLWAY) 
(OFFICE NORTH KITCHEN) (KITCHEN SOUTH OFFICE)
(BEDROOM WEST GARDEN) (GARDEN EAST BEDROOM) 
(GARDEN WEST OFFICE) (OFFICE EAST GARDEN)
(GARDEN NORTH BATHROOM) (BATHROOM SOUTH GARDEN) 
(LAVATORY SOUTH BEDROOM) (BEDROOM NORTH LAVATORY)
(LAVATORY WEST BATHROOM) (BATHROOM EAST LAVATORY) 
(BATHROOM WEST KITCHEN) (KITCHEN EAST BATHROOM)
(STUDIO EAST KITCHEN) (KITCHEN WEST STUDIO) 
(STUDIO SOUTH HALLWAY) (HALLWAY NORTH STUDIO))
这是我的代码:

(DEFUN WB-GEN (AUSS)
  (COND ((NULL AUSS))
        (T  (LIST (FirstList(REVERSE (CAR AUSS)))(SecondList (CAR AUSS))(WB-GEN (CDR AUSS)))))
)

(Defun FirstList (AUSS)
  (LIST (CAR AUSS) (CADDDR AUSS) (CADDR(CDDDR AUSS)))
)

(DEFUN SecondList (AUSS)
  (LIST (CADR AUSS) (let ((x(CADDDR AUSS)))(COND 
                                            ((EQL x 'NORTH)'SOUTH)
                                            ((EQL x 'EAST)'WEST)
                                            ((EQL x 'SOUTH)'NORTH)
                                            ((EQL x 'WEST)'EAST))) (CAR (LAST AUSS)))
但我不知道为什么我会得到这样的结果


我的代码的完整结果:走廊东办公室西走廊办公室北厨房厨房南办公室卧室西花园花园东卧室这是打印机的人工制品。这表示输出中有遗漏。您很可能在某个较低的值处有“打印级别”处于活动状态。如果你检查你的结果,它将被显示为完整的

此行为旨在使REPL与大输出的交互易于管理


当然,这表明您的输出不正确,因为它嵌套得很深。

这是打印机的瑕疵。这表示输出中有遗漏。您很可能在某个较低的值处有“打印级别”处于活动状态。如果你检查你的结果,它将被显示为完整的

此行为旨在使REPL与大输出的交互易于管理


当然,这表明您的输出是不正确的,因为它嵌套得很深。

有很多因素使您的代码难以阅读:

它的格式不正确 有太多的CADDR函数 使用编辑器很容易修复格式

清除CADDR由以下两种方法完成:

使用像first,second。。。 或者通过在循环中使用列表模式和解构绑定 更容易:

CL-USER 8 > (flet ((opposite (direction)
                     (case direction
                       (above 'below)
                       (below 'above))))
              (loop for (nil what1 nil direction nil nil what2)
                    in '((the bath is above of the kitchen)
                         (the roof is above of the bath))
                    collect (list what2 direction what1)
                    collect (list what1 (opposite direction) what2)))
((KITCHEN ABOVE BATH)
 (BATH BELOW KITCHEN)
 (BATH ABOVE ROOF)
 (ROOF BELOW BATH))

有很多因素会使您的代码难以阅读:

它的格式不正确 有太多的CADDR函数 使用编辑器很容易修复格式

清除CADDR由以下两种方法完成:

使用像first,second。。。 或者通过在循环中使用列表模式和解构绑定 更容易:

CL-USER 8 > (flet ((opposite (direction)
                     (case direction
                       (above 'below)
                       (below 'above))))
              (loop for (nil what1 nil direction nil nil what2)
                    in '((the bath is above of the kitchen)
                         (the roof is above of the bath))
                    collect (list what2 direction what1)
                    collect (list what1 (opposite direction) what2)))
((KITCHEN ABOVE BATH)
 (BATH BELOW KITCHEN)
 (BATH ABOVE ROOF)
 (ROOF BELOW BATH))