fairland: Distribute islands more fairly among continents

fairland places islands of random size in random places, subject to
minimum distances.  Results are often less than fair, in particular
when the number of islands per continent is low: some continents have
more land nearby than others.  Increasing distances between islands
doesn't help much.  Deities commonly run fairland until they find the
result acceptable.

The next few commits will tackle this issue.  As a first step, this
one places islands closest to continents in turn, so that each
continent is closest to the same number of islands.  A continent is
closest to an island when it is closest to each of its sectors.

The number of islands must be a multiple of the number of continents
now.

Since fairland may be unable to place all islands, a continent may
still get fewer islands than it should.  The next commit will address
that.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2020-08-10 08:22:21 +02:00
parent 446005f84c
commit 74bc8adb63
9 changed files with 3644 additions and 3622 deletions

View file

@ -62,7 +62,12 @@
* *
* 3. Place and grow additional islands * 3. Place and grow additional islands
* *
* Place and grow islands one after the other. Place the first sector * Each continent has a "sphere of influence": the set of sectors
* closer to it than to any other continent. Each island is entirely
* in one such sphere, and each sphere contains the same number of
* islands (except when island placement fails for lack of room).
*
* Place and grow islands in spheres in turn. Place the first sector
* randomly, pick an island size, then grow the island to that size. * randomly, pick an island size, then grow the island to that size.
* *
* Growing works as for continents, except the minimum distance for * Growing works as for continents, except the minimum distance for
@ -457,6 +462,12 @@ parse_args(int argc, char *argv[])
program_name); program_name);
exit(1); exit(1);
} }
if (ni % nc) {
fprintf(stderr, "%s: number of islands must be a multiple of"
" the number of continents\n",
program_name);
exit(1);
}
if (argc > 3) if (argc > 3)
is = atoi(argv[3]); is = atoi(argv[3]);
@ -901,13 +912,23 @@ init_spheres_of_influence(void)
bfs_run_queue(); bfs_run_queue();
} }
/*
* Is @x,@y in the same sphere of influence as island @c?
* Always true when @c is a continent.
*/
static int
is_in_sphere(int c, int x, int y)
{
return c < nc || closest[XYOFFSET(x, y)] == c % nc;
}
/* /*
* Can island @c grow at @x,@y? * Can island @c grow at @x,@y?
*/ */
static int static int
can_grow_at(int c, int x, int y) can_grow_at(int c, int x, int y)
{ {
return own[x][y] == -1 && xzone_ok(c, x, y); return own[x][y] == -1 && xzone_ok(c, x, y) && is_in_sphere(c, x, y);
} }
static void static void

View file

@ -15,41 +15,41 @@ World dimensions: 64x32
seed is 1 seed is 1
placing capitals... placing capitals...
growing continents... growing continents...
growing islands: 1(9) 2(11) 3(15) 4(9) 5(12) 6(9) 7(7) 8(11) 9(15) 10(13) 11(10) 12(10) 13(4) 14(11) 15(8) growing islands: 1(6) 2(10) 3(17) 4(10) 5(11) 6(6) 7(8) 8(12) 9(10) 10(10) 11(12) 12(10) 13(6) 14(17) 15(6)
elevating land... elevating land...
writing to sectors file... writing to sectors file...
. . . . . % % % % . . . % % . . . . . % % % . % % . . . . . . .
. . . . . % % . . . . % % . . . . . % % % . % % % % . . . . . .
. . . . . . . . . # . . . . . . % % . . % % . % % % . . . . . .
. . . . . . . # # # . # . . . . % % % . . . . . . . . . . . . .
. . . . . . . # c c # # . . . . % % % % . . . . . . . . . . . .
. . . . . . . # # # # # . . . . % % % . . . . . . . . . . . . .
. . . . . . . . # # # # . . . . . . % . . . . . . . . . . . . .
. . . . . . . # # # # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . # # # # . . . . . % % . . . . % % . . . . . . .
% . . . . . . . # # . . . . . . % % . . . . % % % . . . . . . .
% . . . . . . . . # . . . . . . . % % . . . % % % . . . . . . %
% . . . . . . . . . . . . . . . % % . . . . . % % . . . . . % %
% . . . . . . . . . . . . . . . . . . # . . . . . . . . . . % %
. . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . .
% % . . . . . . . . . % . . . . . . . # # # . . . . . . . . . .
% . . . . . . . . . % % . . . . . . # # # # . . . . . . . . . %
% % . . . . . . . . % % . . . . . . # # # # # . . . . . . . . %
% . . . . . . . . . % % . . . . . # # a a . . . . . . . . . % %
% . # # . # . . . . . % % . . . . # # # # # . . . . . . . . % %
. # # # # # # . . . . . . . . . . # # # # . . . . . % . . . % %
. # # # b b # . . . % % % . . % . . # . . . . . % % % . . . . .
. # # # # # . . . % % % . % % % % . . . . . . . % % % . . . . .
. # # # # # # . . . % % % . % % % % . . . . . % % % % % . . . .
. . . # # # . . . . % . . . . % % % . . . . . . . . . . . . . .
. . . . # . . % % . . . . . . . % % . % % . . . . . . . . . . .
. . . . . . . % % . . . . . . % . . . % % % % . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . % % % . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . % % . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . % % . . . . . . % . . . . . . . . . . . . . . . . . % . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . % % % . . . . % % . . . . % % % . . . . . . . . . . . % . . . . . . # # # . # . . . . . . . . . . . . . . . . . . . %
% % % . . . . # c c # # . . . . . . . . . . . . . . . . . . . %
% % . . . . . # # # # # . . . . . . . . . . . . . . . . . . % %
% % . . . . . . # # # # . . . . . . . . . . . . . . . . . . . %
% % . . . . . # # # # . . . . . % % % % . . . . . . . . . . . %
. . . % % . % . # # # # . . . . . % % % % . . . . . . . . . . .
% % % % . % % . # # . . . . . . % % . . . . . . . . . . . . . .
. . . . . % % % . # . . . . . . . . . . . . . . . . . . . . . .
. . . . % % % % . . % % . . . . . . . . . . . . . . . . . % % %
% . . . . . . . . % % % . . . . . . . # . . . . . . . . . % % %
. . . . . . . . % % % % . . . . . . # # # . . . . . . . . % % .
. . . . . . . . . . % . . . . . . . . # # # . . . . . . . . % %
. . . . . % % % % . . . . . . . . . # # # # . . . . . . . . . .
. . . . . . % % % % % . . . . . . . # # # # # . . . . . . . . .
. . . . . . % % % . . . . . . . . # # a a . . . . . . . . . . .
. . # # . # . . . . . . . . % . . # # # # # . . . . . . . . . .
. # # # # # # . . . . . . . % % . # # # # . . . . . . . . . . .
. # # # b b # . . . . . . . % % % . # . . . . . . . . . . . . .
. # # # # # . . . . . . . . % % . . . . . . . . . . . . . . . .
. # # # # # # . . . . . . . . . . . . . . . . . . . . . . . . .
. . . # # # . . . . . . . . . . . . . . . . . % % . . . . . . .
% % % . # . . % % % . . . . . . % . . . . . . % % . . . . . . .
% % % . . % % % % . . . . . . % % . . . . . . % . . . . . . . %
% % % % . % % % % . . . . . . % % % . . % % % . % . . . . . % .
% % % . . % . . . . . . . . . . . . . % % % % . . . . . % % % .
. % % % . . . . . . . . . . . % . . . . % % . . . . . . . % % %
. . . . . . . . . . . . . % % . . . . . % . . . . . . . . % % .
. . . . . . . . . . . . . % % % . . . . . . . . . . . . . . % .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A script for adding all the countries can be found in "sandbox/no-spike-newcap_script". A script for adding all the countries can be found in "sandbox/no-spike-newcap_script".

File diff suppressed because it is too large Load diff

View file

@ -15,41 +15,41 @@ World dimensions: 64x32
seed is 1 seed is 1
placing capitals... placing capitals...
growing continents... growing continents...
growing islands: 1(11) 2(11) 3(7) 4(15) 5(7) growing islands: 1(7) 2(19) 3(17) 4(14) 5(13)
elevating land... elevating land...
writing to sectors file... writing to sectors file...
. . . . . . . . . . . % . . . . . . . # # # # # . . . . . . . . . . . . % % % % % . . . . . . . % . . # # # # # . . . . . . . .
. . . . . . . . . . % % . . . . . . . # # . . . . . . . . . . . . . . . % % % % . . . . . . % % % % . # # . . . . . . . . . . .
. . . . . . . . . . % % % . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . % % % % . # # . . . . . . . . . . .
. . . . # # # . . . . % . . . . . . . . . . . . . . . . . . . . . . . . # # # . . . . . . . % % % % . . . . . . . . . . . . . .
. . . . # # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # # . . . . . . . % % % % . . . . . . . . . . . . .
. . . # # e e # # . . . . . . . . . . . . . . . . . . . . . . . . . . # # e e # # . . . . . . . % % . . . . . . . . . . . . . .
. . . # # # # # # # . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # # # . . . . . . . . . . . . . . . . . . . . . .
. . # # . # # # # . . . . . . . . . . . . . . . . . . . . . . . . . # # . # # # # . . . . . . . . % % % % % % . . . . . . . . .
. . . # . . # # # . . . . . . . . . . . . . . . . . . . . . . . . . . # . . # # # . . . . . . . . . % % % % % % . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . % . . . . . . .
. . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . c c # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . c c # # # . . . . . . . . .
. . . . . . . . . . . . . . . # # # # # # # # . . . . . . . . . . . . . . . . . . . . . . . . # # # # # # # # . . . . . . . . .
. . . . . . . . . . % . . . . . # # # # # # # . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # # # . . . . . . . . .
. . . . . . . . % % % % . % % . # # # # # # . . % % . . # # # # . . . . . . . . . . . . . . . . # # # # # # . . . % . . # # # #
. . . . . . . . % % % % . . % % . . . . . . . . . % % . # # # # . . . . . . . . . . . . . . . . . . . . . . . . . % % . # # # #
. . . . . . . % % % % % . % % % . . . . . . . . . % % . # a a # . . . . . . . . . . . . . . . . . . . . . . . . . % % . # a a #
. . . . . . . . . % . . . . % % % . . . . . . . . . % . # # # # . . . . . . . . . . . . . . . . . . . . . . . . . % % . # # # #
. . . . . . . . . . # . . . % . . . . . . . . . . . . . # # # # . . . . . . . . . . # . . . . . . . . . . . . . . . . . # # # #
. . . . . . . . . . # # . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . # # . . . . . . . . . . . . . . . . . # # #
. . % . . . . . # # # # . . . . . . . . . . . . . . . . # # # # . . . . . . . . # # # # . . . . . . . . . . . . . . . . # # # #
. . % % % . . . . d d # . . . . . . . . . . . . . . . . . . # # . . . . . . . . . d d # . . . . . . . . . . . . . . . . . . # #
. . % % % . . . # # # # . . . . . . . . . . . . . . . . . . # . . . . . . . . . # # # # . . . . . . . . . . . . . . . . . . # .
. . . % % % . . # # # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # . . . . . . . . . . . . . . . . . . .
. . . % . . . # # # # # # . . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . # # # # . . . . . . # . . . . . . . . . . . . . . . . . . . . . # # # # . . . . . . # . . . . . . . . . . . .
. . . . . . . . . . # . . . . . . . # # # . . . . . . . . . . . . . . . . . . . . . # . . . . . . . # # # . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . . . . . . . . . . . . . % . . . . . # # # # . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . . . . . . . . . % % % % % . . . . . # # # # . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # b b # . . . . . . . . . . . . . . . . . . % % % % . . . . . . # b b # . . . . . . . . .
. . . . . . . . . . . . . . . . . . # # # # # . . . . . . . . . . . . . % % % % . % % % % . . . . . # # # # # . . . . . . . . .
A script for adding all the countries can be found in "sandbox/plain-newcap_script". A script for adding all the countries can be found in "sandbox/plain-newcap_script".

File diff suppressed because it is too large Load diff

View file

@ -15,41 +15,42 @@ World dimensions: 64x32
seed is 1 seed is 1
placing capitals... placing capitals...
growing continents... growing continents...
growing islands: 1(13) 2(22) 3(29) 4(17) 5(30) 6(12) 7(27) 8(21) growing islands: 1(14) 2(21) 3(38) 4(26) 5(21) 6(18) 7(3) 8(13)
4 stunted islands
elevating land... elevating land...
writing to sectors file... writing to sectors file...
# b b # # . . . . . . . . % . % % % % % . % % . . . . . . . . . # b b # # . % % . . . . . . . . . . . . . . . . . . . . . . . .
# # # # . . . . . . . . . % % % % ^ % % % % % % . . . . . # # # ^ # # # . % . . . . . . . . . . . . . . . . . % . . . . . ^ # #
# # # # . . . . . . . . . . % % % % % ^ % . . . % ^ . . . . # # # # # # . % . . . . . . . . . . . . . . % % % % . . . . . . # #
# # . . . . . . . . . . . . . . . % % % . . . % % % % % % . . # # # . . % . . . . . . . . . . . . . . . . % % % % . . . . . . #
. ^ . % % % % . # . . . . . . . . . . . % . . . % % % ^ ^ % % . . # . . . . . . # . . . . . . . . . . . . ^ % % % % . . . . . .
. . % % . . . # # . . . . . . . . # # . . . . % % % % % % % . . . . . % . . . # # . . . . . . . . # # . . . % % % % . . . . . .
. % % % . # # # ^ # . . . # . . # # # # # # . . % ^ % % % % . # . . . % . ^ # # ^ ^ . . . ^ . . # # # # # # . . . . . . . . . #
. % % . # # ^ # # . . . . # # # ^ f f . . # # . % % % % % . # . . % % . # # # # # . . . . # # # # f f . . # # . . . . . . . # .
# . % % . # # e e # # . . . . # # ^ # . . . # . % % % % % . # # # . % % . # # e e # # . . . . # ^ ^ # . . . # . . . . . . . # #
. % % % . . # ^ # # # # . . # ^ # # . . . . # . % % % % . # ^ # . % . % . . # # # # # # . . # # # # . . . . # . . . . . . # # #
. ^ % % % . . # # . # # . . # # # . . . . . . . . . . % . # ^ # . % % ^ % % . # # . # # . . # # # . . . . . . . . . . . . # # #
. % % % % . . # . . . . . . . . . . . . . . . . . . . . h h # # . % % % ^ % . # . . . . . . . . . . . . . . . . . . . . h h # ^
. ^ % % . % . . . . . . . . . . . . . . . . . . . . # # ^ # # # . . % . % % % . . % % % % . . . . . % % % . . . . . # ^ # # # ^
. . % . . . . . . . . . . . . . . . . . . . . . . # # # . . # . . % % . . . % % % . . . . . . . ^ % . . % % % . . # # # . . # .
. . . . . . . . . . . . . . . . . . . # . . . . . # . # . . # # . % % . % % % % % % % % % . . % % . . # . . . . . # . # . . # #
. . . % . . . . . . . . . . . . . # # # # # # . . . . # . . . . ^ . . % ^ % . . . . . % % . % % . # # # ^ # # . . . . # . . . .
% . . % % % . # . # # . . . . . . . . # # ^ # # . % ^ . . % % % . . . % % ^ . # . # # . % % . % % . . # ^ # ^ # . . . . . . . .
% % % % . . # # # # . . . . . . . . # ^ d d # # . ^ % % % % % % . . % % . . # # # # . ^ % % % % % . # # d d # # . . . . . . . .
% % ^ % . # # # # . . . . . . . . . # # # # # # # . % % % . . . . . % % . # # # # . . . . % % ^ % . # # # # # # # . . % % . . .
. % % . . # ^ # . . . . . . . . . # . # . . . ^ . % % . . # . . . % % . . # # # . . . . . % % % . # . # . . . # . . % . . # . .
. . . . # # c c . . . . . . . . . # . . . . . . # . % . ^ # # . . . % . # # c c . . . . . . % % . # . . . . . . # . . . # # ^ .
. . . . . ^ # # . . . . . . . . . . . . . . . . . . . # # # . . . % % . . # ^ ^ . . . . % % . % . . . . . . . . . . . # # # . .
. . . . . ^ # # . . . . . % . . . . . . . . . . . . . # g g # . . . % % . # ^ # . . . . % % % % . . . . . . . . . . . # g g # .
. . . . . . # # . . . . % . . . . . . . . . . . . # # # # ^ # . . . . % . . # # . . . % % % . . . . . . . . . . . # # # # # # .
. % % . . . . # # . . % % % . ^ # . . . . . . . . . # # ^ # # . . . . % % . . # # . . . % ^ . # # . . . . . . . . . # ^ # # # .
. % % . . . . # # . % % . . . # . # # . . . . . . . # # . . # # . . . % . . . # # . . % . . . # . # # . . . . . . . # # . . # ^
. % ^ % . . . . . . % % . # # # # # # . . . . . . . . . . . # # . . . % . . . . . . . % . # # # # # # . . . . . . . . . . . # #
. % % . . . . . . ^ % % . . . # # # # ^ . . . . . . . . # # . . . % % % . . . . . . . % . . . # # # # # . . . . . . . . # # . .
. . . % % . . . . % % ^ % % . # a a # # # . . . . . . . . . . . . . . % % % . . . . . . . . . # a a ^ ^ # . . . . . . . . . . .
. # . % % . . . % % % % % . # # # ^ # # . . . . . . . . . . . . . # . % % % . . . . . . . . # # # ^ # # . . . . . . . . . . . .
^ # # . . . . . . . . . . . . . . # # . . . . . . . . . . . . . # # # . . % % ^ . . . . . . . . . # # . . . . . . . . . . . . .
# ^ # # . . . . . . . . . . . % . . . . . . . . . . . . . . . . # ^ # # . % ^ % . . . . . . . . . . . . . . . . . . . . . . . .
A script for adding all the countries can be found in "sandbox/spike-newcap_script". A script for adding all the countries can be found in "sandbox/spike-newcap_script".

File diff suppressed because it is too large Load diff

View file

@ -50,43 +50,43 @@ Only managed to grow 29 out of 37 sectors.
try #8 (out of 10)... try #8 (out of 10)...
placing capitals... placing capitals...
growing continents... growing continents...
growing islands: 1(13) 2(7) 3(10) 4(19) 5(23) 6(11) 7(22) 8(17) 9(6) 10(2) 11(11) 12(6) 13(2) 14(5) 15(2) 16(1) growing islands: 1(2) 2(7) 3(16) 4(11) 5(1) 6(2) 7(4) 8(2) 9(1) 10(1) 11(1)
No room for island #17 No room for island #12
7 stunted islands 11 stunted islands
elevating land... elevating land...
writing to sectors file... writing to sectors file...
. . # # # # # . . . . . . # # a a # # . . . . . % . . . . . . % . . # # # # # . . . . . . # # a a # # . . . . . % . . . . . . .
. # # # # # # # . . . . . # # # # # . . . . . . % . . . . . . . . # # # # # # # . . . . . # # # # # . . . . . . % . . . . . . .
. # # h h # # . . . % % . . . # # # . . % % % . . % % % % % . . . # # h h # # . . . % . . . . # # # . . . . . . . . . . . . . .
# # # # # . . . . % % . . . . # # . . % . . . . . . . . % . . . # # # # # . . . . % . . . . . # # . . . . . . . . . . . . . . .
# # # # # . . . . % % % . . . . . . . % . . . . . . . . . . . . # # # # # . . . . . . . . . . . . . . . . . . . . . . . . . . .
# # # # . . . . . . . . . % . . . . % . . # # # # # # . . . . . # # # # . . . . . . . . . . . . . . . . . # # # # # # . . . . .
. . . # . . % . . . . . . . . . . % % . . # # # # # # . . % % . . . . # . . . . . . . . . . . . % % . . . # # # # # # . . . . .
. . . . . % . . . # # # . . . % % % . . # # # # # # . . % % % . . . . . . . . . . # # # . . . . . . . . # # # # # # . . . . . .
% . . . . % . . # # # # # . . . % % . . # # e e # # . . % % % % . . . . . . . . # # # # # . . . . . . . # # e e # # . . . . . .
. . % % % . . # # # # # # # . . . . . . # # # # # . . % . . . . . . . . . . . # # # # # # # . . % . . . # # # # # . . . . . . .
. . % % % . . # # # # # # # . . . . . . . # # # # . . % . . . . . . % . . . . # # # # # # # . . % . . . . # # # # . . . . . . .
. . . % . . # # # d d # # . . . . . . . . # # # . . % . . # # # . . % . . . # # # d d # # . . % % . . . . # # # . . . . . # # #
# . . . . . . . # # # # # # . . % % % . . . # . . . % . . # # # # . . % . . . . # # # # # # . . % % . . . . # . . . . . . # # #
. . . . . . . . . . # # . . . % % % . . . . . . . % . . # # # # . . . % . . . . . . # # . . . % . . . % . . . . . . . . # # # #
# # . . % % % . . . . . . . . % % % . . % . . . % % . . # # # # # # . . . . . . . . . . . . . % . . . . . . . . . . . . # # # #
# . . % % % % % . . . . . . . % % . . . % . . % % . . # # # g g # . . . . . . . . . . . . % % . . . . . . . . . . . . # # # g g
# # . . . % % % . . . . . . . . . . . . . . . % % . . # # # # # # # . . . % % % . . . . . % . . . . . . . % % . . . . # # # # #
# . . . . . . . . % % % % . . . . . # . . . . . % . . # # # # # # . . . . . . % % . . . . . . . . . # . . . % % . . . # # # # #
# . . % . . . . . . % % % % % . . # # # . . . . . . . . . . . . # . . . . . . . . % % % . . . . . # # # . . . . % . . . . . . .
. . % . . # . . . . % % % % . . # # # # # . . . . . . . . . . . . . . . . # . . . . % % . . . . # # # # # . . . % . . . . . . .
. . % . . # # # . . . % % % . . # # # # # # # . . % % . . % % . . . . . . # # # . . . % . . . . # # # # # # # . . % . . . . . .
% % . . # # # # # . . . % . . # # # b b # # # . . . . . . . % % . . . . # # # # # . . % . . . # # # b b # # # . . . . . . . . .
% % . . # # # # # # . . . . . . # # # # # # # . . . . . . . . . . % . . # # # # # # . . % . . . # # # # # # # . . . . . . . . .
% . . # # # c c # . . . . . . . # # # # # # . . % . . # # . . . . . . # # # c c # . . . % . . . # # # # # # . . . . . # # . . .
. % . . . # # # # # # . . % % . . . . . . . . . % . . # # # # . . . . . . # # # # # # . . % . . . . . . . . . . . . . # # # # .
% % . . # # # # # # # . . % % . . . . . . . . % . . # # # # . . . . . . # # # # # # # . . % . . . . . . . . . . . . # # # # . .
. % % . . . . . . # # . . . % % . . % % % % % % . . # # # # # . . . . . . . . . . # # . . . . . . . . . . . % . . . # # # # # .
. % . . . . . . . # . . . . . . . . . . . % % . . # # # # # # . . . . . . . . . . # . . . . . . . . . . . . . . . # # # # # # .
. % . . % % % % . . . . % . . . . . . . . . % . . # # f f # . . . . . . . . . . . . . . . . . . . . . . . . . . . # # f f # . .
. . . . . . . % . . . % . . # # # # # # . . % . . # # # # # . . . . . . . . . . . . . . . . # # # # # # . . . . . # # # # # . .
. . . . . . . . . . % % . . # # # # # # # . . % . . # # # # . . . . . . . . . . . . . . . . # # # # # # # . . . . . # # # # . .
. . # # # # . . . % % . . # # # # # # # # . . % . . # # . . . % . . # # # # . . . . % . . # # # # # # # # . . . . . # # . . . .
A script for adding all the countries can be found in "sandbox/stunted-newcap_script". A script for adding all the countries can be found in "sandbox/stunted-newcap_script".

File diff suppressed because it is too large Load diff