Advertisement
jo5h

Ray's Family Tree Puzzler

Sep 23rd, 2011
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <cfscript>
  2.  
  3. // Gender: only two in Ray's world
  4. function gender(){
  5.     var g = "m,f";
  6.     return ListToArray(g,",");
  7. }
  8.  
  9.  
  10. // First Names
  11. function firstnames(g){
  12.     var m = "John,Paul,George,Ringo,Don,Preston,Larry,Moe,Curly,Gene,Hub,Buzz,Dave,Harlan,Jack,Bill,Tommy,Jerry,Mack,Rick,Steve,Wayne,Bo";
  13.     var f = "Sharon,Debra,Florence,Patty,Selma,Jennifer,Martha,Janice,Emma,Clarice,Jan,Linda,Brailen,Melissa,Becky,Amy,Lou-Lou,Janey";
  14.     if(g == "m"){
  15.         return listtoarray(m,",");
  16.     }else{
  17.         return listtoarray(f,",");
  18.     }
  19. }
  20.  
  21.  
  22. // Surnames
  23. function surnames(){
  24.     var n = "Miller,King,Nutter,Camp,Russell,Powers,Pennington,Mellert,Smith,Jones,Muntz,Simpson,Swanson,Toothman,Killington,Quagmire";
  25.     return ListToArray(n,",");
  26. }
  27.  
  28.  
  29. // Let's make some people!
  30. function person(i,g,f,t){
  31.     var p = StructNew();
  32.     p.origin = arguments.i;
  33.     if(isdefined("arguments.g") && arguments.g != ""){
  34.         p.gender = arguments.g;
  35.     }else{
  36.         p.gender = gender()[randrange(1,2)];
  37.     }
  38.     p.firstname = firstnames(p.gender)[randrange(1,arraylen(firstnames(p.gender)))];
  39.     if(isdefined("arguments.f") && arguments.f != ""){
  40.         p.lastname = arguments.f;
  41.     }else{
  42.         p.lastname = surnames()[randrange(1,arraylen(surnames()))];
  43.     }
  44.     variables.i++;
  45.    
  46.     if(isdefined("arguments.t") && arguments.t == "Spouse"){
  47.         writeoutput("<li class='spouse'>Married: #p.firstname# #p.lastname# - #p.gender#</li>");
  48.     }else{
  49.         writeoutput("<li class='person'>#p.firstname# #p.lastname# - #p.gender#</li>");
  50.     }
  51.    
  52.     return p;
  53. }
  54.  
  55.  
  56. // Procreation boiled down to script; maybe my wife is right ...
  57. function procreate(u){
  58.     var k = ArrayNew(1);
  59.     var s = StructNew();
  60.    
  61.     // "Practical" limit of 19 kids ...
  62.     for(var c=0;c<RandRange(0,19);c++){
  63.    
  64.         var p = person(u.husband.origin,"",u.husband.lastname,"child");
  65.        
  66.         ArrayAppend(k,p);
  67.         ArrayAppend(variables.humans,p);
  68.        
  69.         // Did they get married?
  70.         if(RandRange(0,1) == 1){
  71.        
  72.             // If they're going to marry, we need a non-related spouse
  73.             s = person(RandRange(ArrayLen(variables.humans)+1,2147483647),IIF(p.gender == "m",DE('f'),DE('m')),"","Spouse");
  74.        
  75.             // In Ray's world, a marriage is only between a man and a woman ...
  76.             if(p.gender == "m"){
  77.                 marriage(p,s);
  78.             }else{
  79.                 marriage(s,p);
  80.             }
  81.         }
  82.     }
  83.    
  84.     return k;
  85. }
  86.  
  87.  
  88. // This is the act of marriage ... not much to defend, huh?
  89. function marriage(m,f){
  90.     var u = StructNew();
  91.     u.husband = m;
  92.     u.wife = f;
  93.     u.familyname = m.lastname;
  94.    
  95.     writeoutput("<li class='marriage'>#u.husband.firstname# #u.husband.lastname# and #u.wife.firstname# #u.wife.lastname# (The #u.husband.lastname#'s)<ul>");
  96.    
  97.     // Let's get it on ...
  98.     u.zchildren = procreate(u);
  99.    
  100.     writeoutput("</ul></li>");
  101.    
  102.     return u;
  103. }
  104. </cfscript>
  105.  
  106.  
  107. <style>
  108. body{
  109.     font-family:Arial;
  110. }
  111.  
  112. .person{
  113.     font-weight:normal;
  114.     color:black;
  115. }
  116.  
  117. .spouse{
  118.     color:lightgrey;
  119.     font-style:italic;
  120.     font-weight:normal;
  121. }
  122.  
  123. .marriage{
  124.     font-weight:bold;
  125.     color:red;
  126. }
  127. </style>
  128.  
  129. <ul>
  130. <cfscript>
  131. //Spawn Humanity
  132. variables.i=1;
  133.  
  134. // Array of Mankind
  135. variables.humans = ArrayNew(1);
  136.  
  137. // Array of Families
  138. variables.families = ArrayNew(1);
  139.  
  140. // And in the beginning ...
  141. ArrayAppend(variables.humans,person(variables.i,"m"));
  142. ArrayAppend(variables.humans,person(variables.i,"f"));
  143.  
  144. // I now pronounce you husband and wife ...
  145. ArrayAppend(variables.families,marriage(variables.humans[1],variables.humans[2]));
  146. </cfscript>
  147. </ul>
  148. <cfabort>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement