找到由列表组成的方阵的对角线

时间:2015-10-27 12:01:30

标签: recursion matrix scheme lisp

我目前正在尝试定义一个函数,该函数采用列表列表,列出方形矩阵的模型并返回所述矩阵的对角线。

例如,输入((a b c) (d e f) (g h i))会提供(a e i)

我对如何解决这个问题有一个模糊的想法(取最后一个列表的最后一个元素,然后是第二个到最后一个列表的倒数第二个元素等等),但我不确定如何去做在Scheme中编程。

如果有人能指出我正确的方向,我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:8)

(向Nethack粉丝道歉)

当你从祭坛上退后一步时,你会发现地板上有一张小纸片,你可以从中解读以下文字:

0> Calling (DIAG ((A B C) (D E F) (G H I))) 
 1> Calling (DIAG ((E F) (H I))) 
  2> Calling (DIAG ((I))) 
   3> Calling (DIAG NIL) 
   <3 DIAG returned NIL
  <2 DIAG returned (I)
 <1 DIAG returned (E I)
<0 DIAG returned (A E I)

这看起来不错,但是当你开始大声朗读卷轴时,你会闻到附近垃圾的臭味。 在你变态的魔杖的帮助下,你击败了被诅咒的对象。 之前的文字消失了,另一个文字出现了:

0> Calling (DIAG ((A B C) (D E F) (G H I))) 
 1> Calling (DIAG% ((A B C) (D E F) (G H I)) 0) 
  2> Calling (DIAG% ((D E F) (G H I)) 1) 
   3> Calling (DIAG% ((G H I)) 2) 
    4> Calling (DIAG% NIL 3) 
    <4 DIAG% returned NIL
   <3 DIAG% returned (I)
  <2 DIAG% returned (E I)
 <1 DIAG% returned (A E I)
<0 DIAG returned (A E I)

你周围有一个明亮的场地!