mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 14:50:19 +00:00
55 lines
1.7 KiB
LLVM
55 lines
1.7 KiB
LLVM
/*
|
|
* @progname count_paternal_desc.ll
|
|
* @version 2.0
|
|
* @author Eggert
|
|
* @category
|
|
* @output Text
|
|
* @description
|
|
|
|
This program counts paternal descendants of a person by generation.
|
|
Only unique individuals in each generation are counted.
|
|
A person counts in all the generations he/she is in,
|
|
but only counts once in the grand total.
|
|
Male paternal descendants are also counted separately.
|
|
|
|
count_paternal_desc - a LifeLines descendants counting program
|
|
by Jim Eggert (eggertj@atc.ll.mit.edu)
|
|
Version 1, 1 August 1994
|
|
Version 2, 16 February 1995, use lengthset(), print(,)
|
|
*/
|
|
|
|
proc main ()
|
|
{
|
|
getindimsg(person,"Enter person to count paternal descendants of")
|
|
indiset(thisgen)
|
|
indiset(allgen)
|
|
indiset(allmalegen)
|
|
addtoset(thisgen, person, 0)
|
|
if (male(person)) { addtoset(allmalegen, person, 0) }
|
|
print("Counting generation ")
|
|
"Number of paternal descendants of " key(person) " " name(person)
|
|
" by generation:\n"
|
|
set(gen,neg(1))
|
|
while(lengthset(thisgen)) {
|
|
indiset(thismalegen)
|
|
forindiset(thisgen,person,val,count) {
|
|
if (male(person)) {
|
|
addtoset(thismalegen,person,0)
|
|
}
|
|
}
|
|
incr(gen)
|
|
print(d(gen)," ")
|
|
"Generation " d(gen) " has " d(lengthset(thisgen))
|
|
" paternal descendant"
|
|
if (gt(lengthset(thisgen),1)) { "s" }
|
|
" of which " d(lengthset(thismalegen)) " are male.\n"
|
|
set(thisgen,childset(thismalegen))
|
|
set(allgen,union(allgen,thisgen))
|
|
set(allmalegen,union(allmalegen,thismalegen))
|
|
}
|
|
"Total unique paternal descendants in generations 1-" d(gen)
|
|
" is " d(lengthset(allgen))
|
|
" of which " d(lengthset(allmalegen))
|
|
" are male paternal descendants.\n"
|
|
}
|