prolog亲属关系编程实例

这篇博客介绍了如何使用Prolog进行亲属关系编程,并提供了JavaScript实现亲属关系计算的代码示例,包括一个简单的亲戚计算器应用,同时提到了一些其他的JavaScript工具如繁体字、火星文转换器和各种计算器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js计算亲属关系代码的方法,prolog亲属关系编程实例教程如下:

随机输入一个关系人物

计算结果:转换出称谓或者关系

js实现代码:

  !
  function(s, f) {
  	"object" == typeof module && module.exports ? module.exports = f() : s.relationship = f()
  }("undefined" != typeof window ? window : this, function() {
  	function s(s) {
  		s = s.replace(/[浜寍涓墊鍥泑浜攟鍏瓅涓億鍏珅涔潀鍗乚{1,2}/g, "x");
  		for (var f = s.split("鐨�"), x = [], m = !0; f.length;) {
  			var b = f.shift(),
  			d = [],
  			h = !1;
  			for (var l in w) {
  				var o = w[l];
  				o.indexOf(b) > -1 && (!l && f.length || d.push(l), h = !0)
  			}
  			if (h || (m = !1), x.length) {
  				for (var e = [], l = 0; l < x.length; l++) for (var r = 0; r < d.length; r++) e.push(x[l] + "," + d[r]);
  					x = e
  			} else for (var l = 0; l < d.length; l++) x.push("," + d[l])
  		}
  		return m ? x : []
  	}
  	function f(s, f) {
  		var x = [],
  		m = {};
  		if (f < 0 && (0 == s.indexOf(",w") ? f = 1 : 0 == s.indexOf(",h") && (f = 0)), f > -1 && (s = "," + f + s), s.match(/,[w0],w|,[h1],h/)) return !1;
  		var b = function(s) {
  			var f = "";
  			if (!m[s]) {
  				m[s] = !0;
  				var w = !0;
  				do {
  					f = s;
  					for (var h in d) {
  						var l = d[h];
  						if (s = s.replace(l.exp, l.str), s.indexOf("#") > -1) {
  							for (var o = s.split("#"), h = 0; h < o.length; h++) b(o[h]);
  								w = !1;
  							break
  						}
  					}
  				} while (f != s);
  				if (w) {
  					if (s.match(/,[w0],w|,[h1],h/)) return !1;
  					s = s.replace(/,[01]/, "").substr(1), x.push(s)
  				}
  			}
  		};
  		return b(s), x
  	}
  	function x(s) {
  		var f = [],
  		x = /&[olx]/g,
  		m = function(s) {
  			var f = [];
  			for (var m in w) m.replace(x, "") == s && f.push(w[m][0]);
  				return f
  		};
  		if (w[s]) f.push(w[s][0]);
  		else if (f = m(s), f.length || (s = s.replace(/&[ol]/g, ""), f = m(s)), f.length || (s = s.replace(/[ol]/g, "x"), f = m(s)), !f.length) {
  			var b = s.replace(/x/g, "l");
  			f = m(b);
  			var d = s.replace(/x/g, "o");
  			f = f.concat(m(d))
  		}
  		return f
  	}
  	function m(s, f) {
  		var x = {
  			f: ["d", "s"],
  			m: ["d", "s"],
  			h: ["w", ""],
  			w: ["", "h"],
  			s: ["m", "f"],
  			d: ["m", "f"],
  			lb: ["os", "ob"],
  			ob: ["ls", "lb"],
  			xb: ["xs", "xb"],
  			ls: ["os", "ob"],
  			os: ["ls", "lb"],
  			xs: ["xs", "xb"]
  		},
  		m = "";
  		if (s.indexOf("&o") > -1 ? m = "&l" : s.indexOf("&l") > -1 && (m = "&o"), s) {
  			s = s.replace(/&[ol]/g, ""), f = f ? 1 : 0;
  			var b = ("," + f + "," + s).replace(/,[fhs]|,[olx]b/g, ",1").replace(/,[mwd]|,[olx]s/g, ",0");
  			b = b.substring(0, b.lastIndexOf(","));
  			for (var d = s.split(",").reverse(), w = b.split(",").reverse(), h = [], l = 0; l < d.length; l++) h.push(x[d[l]][w[l]]);
  				return h.join(",") + m
  		}
  		return ""
  	}
  	function b(s) {
  		for (var f = s.split(","), x = [], m = 0; m < f.length; m++) {
  			var b = f[m].replace(/&[ol]/, "");
  			x.push(w[b][0])
  		}
  		return x.join("鐨�")
  	}
  	var d = [{
  		exp: /^(.+)&o([^#]+)&l/g,
  		str: "$1$2"
  	}, {
  		exp: /^(.+)&l([^#]+)&o/g,
  		str: "$1$2"
  	}, {
  		exp: /(,[ds],(.+),[ds])&[ol]/g,
  		str: "$1"
  	}, {
  		exp: /m,h/g,
  		str: "f"
  	}, {
  		exp: /f,w/g,
  		str: "m"
  	}, {
  		exp: /,[xol][sb](,[mf])/g,
  		str: "$1"
  	}, {
  		exp: /,[mf],d&([ol])/,
  		str: ",$1s"
  	}, {
  		exp: /,[mf],s&([ol])/,
  		str: ",$1b"
  	}, {
  		exp: /^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,
  		str: "$1$2,xb$3#$1$2$3"
  	}, {
  		exp: /^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,
  		str: "$1$2,xs$3#$1$2$3"
  	}, {
  		exp: /(,[mw0]|[xol]s),[mf],s/,
  		str: "$1,xb"
  	}, {
  		exp: /(,[fh1]|[xol]b),[mf],d/,
  		str: "$1,xs"
  	}, {
  		exp: /^,[mf],s(.+)?$/,
  		str: ",1$1#,xb$1"
  	}, {
  		exp: /^,[mf],d(.+)?$/,
  		str: ",0$1#,xs$1"
  	}, {
  		exp: /(,o[sb])+(,o[sb])/,
  		str: "$2"
  	}, {
  		exp: /(,l[sb])+(,l[sb])/,
  		str: "$2"
  	}, {
  		exp: /^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,
  		str: "$1$2,xb$4#$1$2$4"
  	}, {
  		exp: /^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,
  		str: "$1$2,xs$4#$1$2$4"
  	}, {
  		exp: /(,[fh1])(,[olx][sb])+,[olx]s/g,
  		str: "$1,xs"
  	}, {
  		exp: /(,[mw0])(,[olx][sb])+,[olx]b/g,
  		str: "$1,xb"
  	}, {
  		exp: /^,[olx][sb],[olx]b(.+)?$/,
  		str: "$1#,xb$1"
  	}, {
  		exp: /^,[olx][sb],[olx]s(.+)?$/,
  		str: "$1#,xs$1"
  	}, {
  		exp: /^,x([sb])$/,
  		str: ",o$1#,l$1"
  	}, {
  		exp: /,[ds]&o,ob/g,
  		str: ",s&o"
  	}, {
  		exp: /,[ds]&o,os/g,
  		str: ",d&o"
  	}, {
  		exp: /,[ds]&l,lb/g,
  		str: ",s&l"
  	}, {
  		exp: /,[ds]&l,ls/g,
  		str: ",d&l"
  	}, {
  		exp: /,[ds](&[ol])?,[olx]s/g,
  		str: ",d"
  	}, {
  		exp: /,[ds](&[ol])?,[olx]b/g,
  		str: ",s"
  	}, {
  		exp: /(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,
  		str: "$1"
  	}, {
  		exp: /(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,
  		str: "$1,h"
  	}, {
  		exp: /(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,
  		str: "$1"
  	}, {
  		exp: /(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,
  		str: "$1,w"
  	}, {
  		exp: /^,[ds],m(.+)?$/,
  		str: "$1#,w$1"
  	}, {
  		exp: /^,[ds],f(.+)?$/,
  		str: "$1#,h$1"
  	}, {
  		exp: /,[wh](,[ds])/g,
  		str: "$1"
  	}, {
  		exp: /,w,h|,h,w/g,
  		str: ""
  	}, {
  		exp: /(.+)?\[(.+)\|(.+)\](.+)?/g,
  		str: "$1$2$4#$1$3$4"
  	}],
  	w = {
  		"": ["鑷繁", "鎴�"],
  		"[s|d]": ["瀛愬コ", "鍎垮コ", "灏忓", "瀛╁瓙"],
  		"[f|m]": ["鐖舵瘝", "鐖瑰", "鐖瑰", "鐖稿", "楂樺爞"],
  		f: ["鐖哥埜", "鐖朵翰", "闃跨埜", "鑰佺埜", "鑰佺", "鐖�", "鐖圭埞", "鐖瑰湴", "鐖瑰暡", "鑰佺埞", "澶уぇ", "鑰佺埛瀛�"],
  		"f,f": ["鐖风埛", "绁栫埗", "闃跨埛", "濂剁埛", "闃垮叕"],
  		"f,f,f": ["鏇剧鐖�", "澶埛", "澶埛鐖�", "澶叕", "绁栧叕", "绁栧ザ鐖�"],
  		"f,f,f,f": ["楂樼鐖�", "鑰佸お鐖�", "绁栧お鐖�", "绁栧お鐖风埛", "绁栧お鍏�"],
  		"f,f,f,f,ob": ["浼珮绁栫埗"],
  		"f,f,f,f,ob,w": ["浼珮绁栨瘝"],
  		"f,f,f,f,lb": ["鍙旈珮绁栫埗"],
  		"f,f,f,f,lb,w": ["鍙旈珮绁栨瘝"],
  		"f,f,f,f,xs": ["濮戦珮绁栨瘝"],
  		"f,f,f,f,xs,h": ["濮戦珮绁栫埗"],
  		"f,f,f,m": ["楂樼姣�", "鑰佸お澶�", "绁栧お澶�", "绁栧お濂�", "绁栧お濂跺ザ", "绁栧お濠�"],
  		"f,f,f,m,xs": ["濮ㄩ珮绁栨瘝"],
  		"f,f,f,m,xs,h": ["濮ㄩ珮绁栫埗"],
  		"f,f,f,ob": ["鏇句集绁栫埗", "鏇句集鐖�", "浼浘绁栫埗", "浼叕澶�", "浼お鐖�"],
  		"f,f,f,ob,w": ["鏇句集绁栨瘝", "鏇句集姣�", "浼浘绁栨瘝", "浼﹩澶�", "浼お澶�"],
  		"f,f,f,lb": ["鏇惧彅绁栫埗", "鏇惧彅鐖�", "鍙旀浘绁栫埗", "鍙斿叕澶�", "鍙斿お鐖�"],
  		"f,f,f,lb,w": ["鏇惧彅绁栨瘝", "鏇惧彅姣�", "鍙旀浘绁栨瘝", "鍙斿﹩澶�", "鍙斿お澶�"],
  		"f,f,f,xb,s&o": ["鍫備集绁栫埗"],
  		"f,f,f,xb,s&o,w": ["鍫備集绁栨瘝"],
  		"f,f,f,xb,s&l": ["鍫傚彅绁栫埗"],
  		"f,f,f,xb,s&l,w": ["鍫傚彅绁栨瘝"],
  		"f,f,f,xb,s,s&o": ["浠庝集鐖�"],
  		"f,f,f,xb,s,s&o,w": ["浠庝集姣�"],
  		"f,f,f,xb,s,s&l": ["浠庡彅鐖�"],
  		"f,f,f,xb,s,s&l,w": ["浠庡彅姣�"],
  		"f,f,f,xb,s,s,s&o": ["鏃忓厔"],
  		"f,f,f,xb,s,s,s&l": ["鏃忓紵"],
  		"f,f,f,xb,d": ["鍫傚绁栨瘝"],
  		"f,f,f,xb,d,h": ["鍫傚绁栫埗"],
  		"f,f,f,xs": ["鏇剧濮戞瘝", "濮戞浘绁栨瘝", "澶濠�", "濮戝﹩澶�", "濮戝お澶�"],
  		"f,f,f,xs,h": ["鏇剧濮戜笀", "濮戞浘绁栫埗", "澶涓堝叕", "濮戜笀鍏お", "濮戝お鐖�"],
  		"f,f,f,xs,s&o": ["琛ㄤ集绁栫埗"],
  		"f,f,f,xs,s&o,w": ["琛ㄤ集绁栨瘝"],
  		"f,f,f,xs,s&l": ["琛ㄥ彅绁栫埗"],
  		"f,f,f,xs,s&l,w": ["琛ㄥ彅绁栨瘝"],
  		"f,f,f,xs,d": ["琛ㄥ绁栨瘝"],
  		"f,f,f,xs,d,h": ["琛ㄥ绁栫埗"],
  		"f,f,m": ["鏇剧姣�", "澶ザ濂�", "澶﹩", "绁栧﹩", "绁栧ザ濂�"],
  		"f,f,m,f": ["楂樺绁栫埗", "绁栧お濮ョ埛", "绁栧お鍏�"],
  		"f,f,m,m": ["楂樺绁栨瘝", "绁栧お濮ュД", "绁栧お濮ュ", "绁栧お濠�"],
  		"f,f,m,xb": ["鑸呮浘绁栫埗", "澶垍鍏�", "澶垍鐖�", "鑸呭お鐖�", "鑸呭お鐖风埛"],
  		"f,f,m,xb,w": ["鑸呮浘绁栨瘝", "澶垍濠�", "鑸呭お澶�", "鑸呭お濂跺ザ"],
  		"f,f,m,xb,s&o": ["琛ㄤ集绁栫埗"],
  		"f,f,m,xb,s&o,w": ["琛ㄤ集绁栨瘝"],
  		"f,f,m,xb,s&l": ["琛ㄥ彅绁栫埗"],
  		"f,f,m,xb,s&l,w": ["琛ㄥ彅绁栨瘝"],
  		"f,f,m,xb,d": ["琛ㄥ绁栨瘝"],
  		"f,f,m,xb,d,h": ["琛ㄥ绁栫埗"],
  		"f,f,m,xs": ["濮ㄦ浘绁栨瘝", "澶Ж濂�", "濮ㄥお澶�", "鏇惧Ж濂跺ザ", "濮ㄥお濂跺ザ"],
  		"f,f,m,xs,h": ["濮ㄦ浘绁栫埗", "澶Ж鐖�", "濮ㄥお鐖�", "濮ㄥお鐖风埛"],
  		"f,f,m,xs,s&o": ["琛ㄤ集绁栫埗"],
  		"f,f,m,xs,s&o,w": ["琛ㄤ集绁栨瘝"],
  		"f,f,m,xs,s&l": ["琛ㄥ彅绁栫埗"],
  		"f,f,m,xs,s&l,w": ["琛ㄥ彅绁栨瘝"],
  		"f,f,m,xs,d": ["琛ㄥ绁栨瘝"],
  		"f,f,m,xs,d,h": ["琛ㄥ绁栫埗"],
  		"f,f,xb": ["鍫傜鐖�", "x鐖风埛"],
  		"f,f,xb,w": ["鍫傜姣�"],
  		"f,f,xb,s&o": ["鍫備集", "鍫備集鐖�", "浠庣埗浼埗"],
  		"f,f,xb,s&o,w": ["鍫備集姣�", "浠庣埗浼瘝"],
  		"f,f,xb,s&l": ["鍫傚彅", "浠庣埗鍙旂埗"],
  		"f,f,xb,s,w": ["鍫傚┒", "鍫傚彅姣�", "鍫傚┒姣�", "浠庣埗鍙旀瘝"],
  		"f,f,xb,s,s&o": ["浠庡厔&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值