%   query
%
%   David H. D. Warren
%
%   query population and area database to find countries
%   of approximately equal population density

query(true) :-
	query_show, fail ; true.

query(fail) :-
	query_silent, fail ; true.


query_show :-
	query1(C1, D1, C2, D2),
	write([C1-D1, C2-D2]), nl.

query_silent :-
	query1(_C1, _D1, _C2, _D2).




query1(C1, D1, C2, D2) :-
	density(C1, D1),
	density(C2, D2),
	D1 > D2,
	T1 is 20 * D1,
	T2 is 21 * D2,
	T1 < T2.

density(C, D) :-
	pop(C, P),
	area(C, A),
	D is P * 100 // A.

% populations in 100000s
pop('china',		8250).
pop('india',		5863).
pop('ussr',		2521).
pop('usa',		2119).
pop('indonesia',	1276).
pop('japan',		1097).
pop('brazil',		1042).
pop('bangladesh',	 750).
pop('pakistan', 	 682).
pop('w_germany',	 620).
pop('nigeria',		 613).
pop('mexico',		 581).
pop('uk',		 559).
pop('italy',		 554).
pop('france',		 525).
pop('philippines',	 415).
pop('thailand',		 410).
pop('turkey',		 383).
pop('egypt',		 364).
pop('spain',		 352).
pop('poland',		 337).
pop('s_korea',		 335).
pop('iran',		 320).
pop('ethiopia',		 272).
pop('argentina',	 251).

% areas in 1000s of square miles
area('china',		3380).
area('india',		1139).
area('ussr',		8708).
area('usa',		3609).
area('indonesia',	 570).
area('japan',		 148).
area('brazil',		3288).
area('bangladesh',	  55).
area('pakistan',	 311).
area('w_germany',	  96).
area('nigeria',		 373).
area('mexico',		 764).
area('uk',		  86).
area('italy',		 116).
area('france',		 213).
area('philippines',	  90).
area('thailand',	 200).
area('turkey',		 296).
area('egypt',		 386).
area('spain',		 190).
area('poland',		 121).
area('s_korea',		  37).
area('iran',		 628).
area('ethiopia',	 350).
area('argentina',	1080).

% benchmark interface

benchmark(ShowResult) :-
	query(ShowResult).

:- include(common).

