table expand with rules once, table expand with rules once ignore case
This function combines the benefits of table expand with rules() and table integrate once(). Every entry in the look-up table is referenced only once.
Indirect parameter passing is disabled
6 - 9 (For parameter description and return values: see table expand() )
table initialize( animals,
{ { Name, Size, Speed, Movement, Leg count, Surface, Special Skills },
{ Parrot, small, 50, flying, 2, feathers, immitates voices },
{ Donkey, medium, 28, walking, 4, hair, agriculture use },
{ Dog, small, 30, walking, 4, hair, sense of smell },
{ Cat, small, 20, walking, 4, hair, night vision },
{ Fox, small, 25, walking, 4, hair, relatively smart },
{ Owl, small, 80, flying, 2, feathers, night vision },
{ Worm, tiny, 0.01, crawling, 0, mucous skin,unclear },
{ Whale, huge, 30, swimming, 0, skin, relatively smart } } );
headers[] = [animals:..,0]-{Name};
table initialize( target,
{ { Size, Speed, Movement, Leg count, Surface, Special Skills, Animal, Double Speed },
{ '*', ':mod([.],40)=0','*', '*', '*', '*', "It's an", 2 }, // Speed divisible by 40 -> Owl
{ small, '20..30', '*', '*', Hair, '*', "It's a ", 2 }, // Dog, Cat, Fox
{ small, '20..30', '*', '*', Hair, '*', "It's a ", 2 }, // No match (items already found)
{ '*', '20..30', '*', '*', '*', '*', "", 2 } } ); // Donkey and Whale only
count[] = table expand with rules once ignore case ( target, headers[], {Animal, Movement, Double Speed},
animals, headers[], {Name, Movement, Speed}, { append with space, overwrite, mul }, true, Counter );
// Data integration process: Overwrite movement in target table, Add animal name to 'It's ...' and note double speed.
echo("List of animals with counted lookups:");
table list( animals );
echo("Note: Dog/Cat/Fox can be found only once. Row 4: Donkey and Whale found (Dog/Cat/Fox already taken)");
echo("Target table after lookup (", count[], " items found):");
table list( target );
List of animals with counted lookups:
0 : Name | Size | Speed | Movement | Leg count | Surface | Special Skills | Counter
1 : Parrot | small | 50 | flying | 2 | feathers | immitates voices |
2 : Donkey | medium | 28 | walking | 4 | hair | agriculture use | 1
3 : Dog | small | 30 | walking | 4 | hair | sense of smell | 1
4 : Cat | small | 20 | walking | 4 | hair | night vision | 1
5 : Fox | small | 25 | walking | 4 | hair | relatively smart | 1
6 : Owl | small | 80 | flying | 2 | feathers | night vision | 1
7 : Worm | tiny | 0.01 | crawling | 0 | mucous skin | unclear |
8 : Whale | huge | 30 | swimming | 0 | skin | relatively smart | 1
Note: Dog/Cat/Fox can be found only once. Row 4: Donkey and Whale found (Dog/Cat/Fox already taken)
Target table after lookup (6 items found):
0 : Size | Speed | Movement | Leg count | Surface | Special Skills | Animal | Double Speed
1 : * | :mod([.],40)=0 | flying | * | * | * | It's an Owl | 160
2 : small | 20..30 | walking | * | Hair | * | It's a Dog | 60
3 : small | 20..30 | walking | * | Hair | * | It's a Cat | 40
4 : small | 20..30 | walking | * | Hair | * | It's a Fox | 50
5 : small | 20..30 | * | * | Hair | * | It's a | 2
6 : * | 20..30 | walking | * | * | * | Donkey | 56
7 : * | 20..30 | swimming | * | * | * | Whale | 60
table expand with rules
table expand
table lookup with rules once
table integrate with rules once
table digest with rules once