Hex Artifact Content
Not logged in

Artifact 683a8d961c6525cd76cce9a573d8f9517c571041:


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 28 20 78 20 3e 20 79 20 29  .{.  if( x > y )
0020: 20 7b 20 7b 7d 20 7d 0a 20 20 65 6c 73 65 20 20   { {} }.  else  
0030: 20 20 20 20 20 20 7b 20 7b 63 61 72 3a 20 78 2c        { {car: x,
0040: 20 63 64 72 3a 20 66 72 6f 6d 54 6f 28 78 2b 31   cdr: fromTo(x+1
0050: 2c 79 29 7d 20 7d 0a 7d 3b 0a 0a 64 65 66 20 6c  ,y)} }.};..def l
0060: 65 6e 67 74 68 28 6c 73 74 29 0a 7b 0a 20 20 63  ength(lst).{.  c
0070: 61 73 65 28 20 6c 73 74 20 29 0a 20 20 20 20 77  ase( lst ).    w
0080: 68 65 6e 28 20 7b 63 61 72 3a 5f 2c 20 63 64 72  hen( {car:_, cdr
0090: 3a 78 7d 20 29 20 7b 20 6c 65 6e 67 74 68 28 78  :x} ) { length(x
00a0: 29 2b 31 20 7d 0a 20 20 20 20 77 68 65 6e 28 20  )+1 }.    when( 
00b0: 5f 20 29 20 7b 20 30 20 7d 0a 7d 3b 0a 0a 64 65  _ ) { 0 }.};..de
00c0: 66 20 61 64 6a 53 75 6d 28 6c 73 74 29 0a 7b 0a  f adjSum(lst).{.
00d0: 20 20 63 61 73 65 28 20 6c 73 74 20 29 0a 20 20    case( lst ).  
00e0: 20 20 77 68 65 6e 28 20 7b 63 61 72 3a 78 2c 20    when( {car:x, 
00f0: 63 64 72 3a 7b 63 61 72 3a 20 79 2c 20 63 64 72  cdr:{car: y, cdr
0100: 3a 7a 7d 7d 20 29 20 7b 20 7b 63 61 72 3a 20 78  :z}} ) { {car: x
0110: 2b 79 2c 20 63 64 72 3a 20 61 64 6a 53 75 6d 28  +y, cdr: adjSum(
0120: 7a 29 7d 20 7d 0a 20 20 20 20 77 68 65 6e 28 20  z)} }.    when( 
0130: 7b 63 61 72 3a 78 2c 20 63 64 72 3a 7b 7d 7d 20  {car:x, cdr:{}} 
0140: 29 20 7b 20 7b 63 61 72 3a 20 78 2c 20 63 64 72  ) { {car: x, cdr
0150: 3a 20 7b 7d 7d 20 7d 0a 20 20 20 20 77 68 65 6e  : {}} }.    when
0160: 28 20 7b 7d 20 29 20 7b 20 7b 7d 20 7d 0a 7d 3b  ( {} ) { {} }.};
0170: 0a 0a 76 61 72 20 78 73 20 3d 20 66 72 6f 6d 54  ..var xs = fromT
0180: 6f 28 31 2c 31 31 29 3b 0a 0a 70 72 69 6e 74 28  o(1,11);..print(
0190: 20 78 73 20 29 3b 0a 70 72 69 6e 74 28 20 6c 65   xs );.print( le
01a0: 6e 67 74 68 28 78 73 29 20 29 3b 0a 70 72 69 6e  ngth(xs) );.prin
01b0: 74 28 20 61 64 6a 53 75 6d 28 78 73 29 20 29 3b  t( adjSum(xs) );
01c0: 0a 70 72 69 6e 74 28 20 6c 65 6e 67 74 68 28 61  .print( length(a
01d0: 64 6a 53 75 6d 28 78 73 29 29 20 29 3b 0a        djSum(xs)) );.