birds.nkb

来自「prolog开发工具」· NKB 代码 · 共 178 行

NKB
178
字号
% BIRDS - a sample bird identification system for use with the
% Native shell.

% top_goal where Native starts the inference.

top_goal(X) :- bird(X).

order(tubenose) :-
	nostrils(external_tubular),
	live(at_sea),
	bill(hooked).
order(waterfowl) :-
	feet(webbed),
	bill(flat).
order(falconiforms) :-
	eats(meat),
	feet(curved_talons),
	bill(sharp_hooked).
order(passerformes) :-
	feet(one_long_backward_toe).

family(albatross) :-
	order(tubenose),
	size(large),
	wings(long_narrow).
family(swan) :-
	order(waterfowl),
	neck(long),
	color(white),
	flight(ponderous).
family(goose) :-
	order(waterfowl),
	size(plump),
	flight(powerful).
family(duck) :-
	order(waterfowl),
	feed(on_water_surface),
	flight(agile).
family(vulture) :-
	order(falconiforms),
	feed(scavange),
	wings(broad).
family(falcon) :-
	order(falconiforms),
	wings(long_pointed),
	head(large),
	tail(narrow_at_tip).
family(flycatcher) :-
	order(passerformes),
	bill(flat),
	eats(flying_insects).
family(swallow) :-
	order(passerformes),
	wings(long_pointed),
	tail(forked),
	bill(short).

bird(laysan_albatross) :-
	family(albatross),
	color(white).
bird(black_footed_albatross) :-
	family(albatross),
	color(dark).
bird(fulmar) :-
	order(tubenose),
	size(medium),
	flight(flap_glide).
bird(whistling_swan) :-
	family(swan),
	voice(muffled_musical_whistle).
bird(trumpeter_swan) :-
	family(swan),
	voice(loud_trumpeting).
bird(canada_goose) :-
	family(goose),
	season(winter),			% rules can be further broken down
	country(united_states),		% to include regions and migration
	head(black),				% patterns
	cheek(white).
bird(canada_goose) :-
	family(goose),
	season(summer),
	country(canada),
	head(black),   
	cheek(white).
bird(snow_goose) :-
	family(goose),
	color(white).
bird(mallard) :-
	family(duck),			% different rules for male
	voice(quack),
	head(green).
bird(mallard) :-
	family(duck),			% and female
	voice(quack),
	color(mottled_brown).
bird(pintail) :-
	family(duck),
	voice(short_whistle).
bird(turkey_vulture) :-
	family(vulture),
	flight_profile(v_shaped).
bird(california_condor) :-
	family(vulture),
	flight_profile(flat).
bird(sparrow_hawk) :-
	family(falcon),
	eats(insects).
bird(peregrine_falcon) :-
	family(falcon),
	eats(birds).
bird(great_crested_flycatcher) :-
	family(flycatcher),
	tail(long_rusty).
bird(ash_throated_flycatcher) :-
	family(flycatcher),
	throat(white).
bird(barn_swallow) :-
	family(swallow),
	tail(forked).
bird(cliff_swallow) :-
	family(swallow),
	tail(square).
bird(purple_martin) :-
	family(swallow),
	color(dark).

country(united_states) :- region(new_england).
country(united_states) :- region(south_east).
country(united_states) :- region(mid_west).
country(united_states) :- region(south_west).
country(united_states) :- region(north_west).
country(united_states) :- region(mid_atlantic).

country(canada) :- province(ontario).
country(canada) :- province(quebec).
country(canada) :- province(etc).

region(new_england) :-
	state(X),
	member(X, [massachusetts, vermont, etc]).
region(south_east) :-
	state(X),
	member(X, [florida, mississippi, etc]).

region(canada) :-
	province(X),
	member(X, [ontario,quebec,etc]).

nostrils(X) :- ask(nostrils,X).
live(X) :- ask(live,X).
bill(X) :- ask(bill,X).
size(X) :- menuask(size,X,[large,plump,medium,small]).
eats(X) :- ask(eats,X).
feet(X) :- ask(feet,X).
wings(X) :- ask(wings,X).
neck(X) :- ask(neck,X).
color(X) :- ask(color,X).
flight(X) :- menuask(flight,X,[ponderous,powerful,agile,flap_glide,other]).
feed(X) :- ask(feed,X).
head(X) :- ask(head,X).
tail(X) :- menuask(tail,X,[narrow_at_tip,forked,long_rusty,square,other]).
voice(X) :- ask(voice,X).
season(X) :- menuask(season,X,[winter,summer]).
cheek(X) :- ask(cheek,X).
flight_profile(X) :- menuask(flight_profile,X,[flat,v_shaped,other]).
throat(X) :- ask(throat,X).
state(X) :- menuask(state,X,[massachusetts,vermont,florida,mississippi,etc]).
province(X) :- menuask(province,X,[ontario,quebec,etc]).

multivalued(voice).
multivalued(color).
multivalued(eats).


                                                                                                        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?