File: query.pl

package info (click to toggle)
gprolog 1.4.5.0-3
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 7,924 kB
  • sloc: ansic: 55,584; perl: 18,501; sh: 3,401; makefile: 1,114; asm: 20
file content (98 lines) | stat: -rw-r--r-- 1,803 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
%   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).