Hex Artifact Content
Not logged in

Artifact 2c8664960dfdd96b77aba0ad9a6f097be10434ec:


0000: 64 65 66 20 66 72 6f 6d 54 6f 28 78 2c 20 79 29  def fromTo(x, y)
0010: 0a 7b 0a 20 20 69 66 20 20 78 20 3e 20 79 20 3a  .{.  if  x > y :
0020: 20 7b 7d 0a 20 20 65 6c 73 65 20 20 20 20 20 20   {}.  else      
0030: 20 3a 20 7b 63 61 72 3a 20 78 2c 20 63 64 72 3a   : {car: x, cdr:
0040: 20 66 72 6f 6d 54 6f 28 78 2b 31 2c 79 29 7d 0a   fromTo(x+1,y)}.
0050: 7d 3b 0a 0a 64 65 66 20 6c 65 6e 67 74 68 28 6c  };..def length(l
0060: 73 74 29 0a 7b 0a 20 20 63 61 73 65 20 6c 73 74  st).{.  case lst
0070: 0a 20 20 20 20 77 68 65 6e 20 7b 63 61 72 3a 5f  .    when {car:_
0080: 2c 20 63 64 72 3a 78 7d 3a 20 6c 65 6e 67 74 68  , cdr:x}: length
0090: 28 78 29 2b 31 0a 20 20 20 20 77 68 65 6e 20 5f  (x)+1.    when _
00a0: 3a 20 20 30 0a 7d 3b 0a 0a 64 65 66 20 61 64 6a  :  0.};..def adj
00b0: 53 75 6d 28 6c 73 74 29 0a 7b 0a 20 20 63 61 73  Sum(lst).{.  cas
00c0: 65 20 6c 73 74 0a 20 20 20 20 77 68 65 6e 20 7b  e lst.    when {
00d0: 63 61 72 3a 78 2c 20 63 64 72 3a 7b 63 61 72 3a  car:x, cdr:{car:
00e0: 20 79 2c 20 63 64 72 3a 7a 7d 7d 20 3a 20 7b 63   y, cdr:z}} : {c
00f0: 61 72 3a 20 78 2b 79 2c 20 63 64 72 3a 20 61 64  ar: x+y, cdr: ad
0100: 6a 53 75 6d 28 7a 29 7d 0a 20 20 20 20 77 68 65  jSum(z)}.    whe
0110: 6e 20 7b 63 61 72 3a 78 2c 20 63 64 72 3a 7b 7d  n {car:x, cdr:{}
0120: 7d 3a 20 7b 63 61 72 3a 20 78 2c 20 63 64 72 3a  }: {car: x, cdr:
0130: 20 7b 7d 7d 20 0a 20 20 20 20 77 68 65 6e 20 7b   {}} .    when {
0140: 7d 3a 20 7b 7d 20 0a 7d 3b 0a 0a 76 61 72 20 78  }: {} .};..var x
0150: 73 20 3d 20 66 72 6f 6d 54 6f 28 31 2c 31 30 31  s = fromTo(1,101
0160: 29 3b 0a 0a 70 72 69 6e 74 28 20 78 73 20 29 3b  );..print( xs );
0170: 0a 70 72 69 6e 74 28 20 6c 65 6e 67 74 68 28 78  .print( length(x
0180: 73 29 20 29 3b 0a 70 72 69 6e 74 28 20 61 64 6a  s) );.print( adj
0190: 53 75 6d 28 78 73 29 20 29 3b 0a 70 72 69 6e 74  Sum(xs) );.print
01a0: 28 20 6c 65 6e 67 74 68 28 61 64 6a 53 75 6d 28  ( length(adjSum(
01b0: 78 73 29 29 20 29 3b 0a                          xs)) );.