home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / ReWrite 0.2.7 / Sample Project / r.setup < prev   
Encoding:
Text File  |  1996-02-11  |  1.9 KB  |  63 lines  |  [TEXT/ReWr]

  1. (* ===================== Hamming example ================= *)
  2.  
  3. Hamming[n:int] -> outnum[HammingAux[n,{1}]];
  4.  
  5. HammingAux[0,a:lis] -> ;
  6. HammingAux[n:int,{x:int,.rest}] -> x,HammingAux[n-1,{Hmerge[{2*x,3*x,5*x},.rest]}];
  7.  
  8. Hmerge[{},.todo] -> .todo;
  9. Hmerge[{x:int,.rest},.a,x:int,.b] -> .a,x,Hmerge[rest,.b];
  10. Hmerge[{x:int,.rest},.a,y:int,.b]::y>=x -> .a,x,y,Hmerge[rest,.b];
  11. Hmerge[merge,.a] -> .a,.merge;
  12.  
  13. (* =======================small examples =================== *)
  14.  
  15. fib[0] -> 1;
  16. fib[1] -> 1;
  17. fib[n:int] -> fib[n-1]+fib[n-2];
  18.  
  19. joinx[x:lis,y:lis] -> {.x,.y};
  20.  
  21. sort[{.a,b,c,.d}]::b>c -> sort[{.a,c,b,.d}];
  22. sort[x] -> x;
  23.  
  24. (* ========================== nprime ====================== *)
  25.  
  26. nprime[n:int] -> primeaux[{},{},n,2];
  27.  
  28. (* primeaux[(primes found so far <= sqrt[k]), (primes found so far > sqrt[k]), number found, this try] *)
  29. primeaux[l1:lis,l2:lis,0,k:int] -> k-1;
  30. primeaux[l1:lis,{s,.l2},n:int,k:int]::k>=s*s -> primeaux[{.l1,s},l2,n,k];
  31. primeaux[{.a,b:int,.c},l2:lis,n:int,k:int]::k%b=0 -> primeaux[{.a,b,.c},l2,n,k+1];
  32. primeaux[l1:lis,l2:lis,n:int,k:int] -> primeaux[l1,{.l2,k},n-1,k+1];
  33.  
  34. (* ==========================  atoi2 ======================= *)
  35.  
  36. atoi2[.x] -> xatoix[xatoi[.x]];
  37.  
  38. xatoix[x:int] -> x;
  39. xatoix[.x] -> "error - not a number";
  40.  
  41. xatoi["-",.n] -> xnegx[xatoi[.n]];
  42. xatoi["$",.a] -> xatoih[0,.a];
  43. xatoi["%",.a] -> xatoib[0,.a];
  44. xatoi[x:char,.a]::xisdigit[x] -> xatoix[0,x,.a];
  45. xatoi[.a] -> {},.a;
  46.  
  47. xnegx[{},.rest] -> {},.rest;
  48. xnegx[a:int,.rest] -> -a,.rest;
  49.  
  50. xatoix[x:int,d:char,.n]::xisdigit[d] -> xatoix[10*x+d:int-"0":int,.n];
  51. xatoix[x:int,.n] -> x,.n;
  52.  
  53. xatoih[x:int,d:char,.n]::xisdigit[d] -> xatoih[16*x+d:int-"0":int,.n];
  54. xatoih[x:int,d:char,.n]::d>="A" & d<="F" -> xatoih[16*x+10+d:int-"A":int,.n];
  55. xatoih[x:int,d:char,.n]::d>="a" & d<="f" -> xatoih[16*x+10+d:int-"a":int,.n];
  56. xatoih[x:int,.n] -> x,.n;
  57.  
  58. xatoib[x:int,"0",.n] -> xatoib[2*x,.n];
  59. xatoib[x:int,"1",.n] -> xatoib[2*x+1,.n];
  60. xatoib[x:int,.n] -> x,.n;
  61.  
  62. xisdigit[d:char] -> d>="0" & d<="9";
  63.