Prog-Art-Lang

Artifical Langual

by Ruslan Alikberov

HTML

<body onload='main()'>
<pre></pre>
<var style=display:none>
E--- O--- A--- U--- I---
YE-- YO-- YA-- YU-- _---
---E ---O ---A ---U ---I
-PN- -_-- -PL- -PR- -PS- -P--
---- ---- -BL- -BR- ---- -B--
-MN- -MV- -ML- -MR- ---- -M--
---- ---- -NL- -NR- ---- -N--
-DN- -DV- -DL- -DR- ---- -D--
-TN- -TV- -TL- -TR- ---- -T--
-VN- ---- -VL- -VR- -VS- -V--
---- ---- -FL- -FR- ---- -F--
---- -CV- -CL- -CR- ---- -C--
-SN- -SV- -SL- -SR- ---- -S--
-ZN- -ZV- -ZL- -ZR- ---- -Z--
-GN- -GV- -GL- -GR- ---- -G--
-KN- -KV- -KL- -KR- -KS- -K--
-HN- -HV- -HL- -HR- ---- -H--
-QE -QO -QA -_- -QI
-XE -XO -XA -XU -XI
</var>
</body>

JavaScript

function	main() {
	var	pattern		= document.getElementsByTagName("var")[0].innerHTML.split(/\r?\n|\s+/);
	var	logs		= [];
	var	i, m, n;
	var	s;
	var	slabs_count	= 51;
	var	prefix_count;
	var	postfix_count;
	var	Prefix	= [];
	var	Pastfix	= [];
	var	_xx_	= [];
	var	x___	= [];
	var	__x_	= [];
	var	_x_	= [];
	var	_x	= [];
	pattern.forEach(
	function(str) {
		switch(str.length) {
		case 4:
			if(str.charAt(3) != "-")
				__x_.push(str.charAt(3));
			else
			if(str.charAt(2) != "-")
				_xx_.push(str.substr(1, 2));
			else
			if(str.charAt(1) != "-")
				if(str.charAt(0) == "-")
					_xx_.push(str.charAt(1));
				else
					x___.push(str.substr(0, 2));
			else
			if(str.charAt(0) != "-")
				x___.push(str.charAt(0));
			break;
		case 3:
			_x.push(str.replace(/-/g, ""));
			break;
		}
	});
	x___.forEach(
	function(a) {
		_xx_.forEach(
		function(b) {
			if(b != "_")
				__x_.forEach(
				function(c) {
					Prefix.push(a.replace("_", "") + b + c);
				});
			else
				Prefix.push(a);
		});
	});
	prefix_count = Math.floor(Math.sqrt(Prefix.length));
	i = 0;
	for(n = 0; n < prefix_count; ++ n) {
		s = [];
		for(m = 0; m < prefix_count; ++ m) {
			if(i < Prefix.length)
				s.push(Prefix[i ++] + "-");
		}
		logs.push(s.join("\t"));
	}
	prefix_count = Prefix.length;
	n = 0x7FFFFFFF, i = 0;
	n = (n / prefix_count) & 0x7FFFFFFF;
	n *= 2;
	while(n >= slabs_count)
		n = (n / (i ? slabs_count - 1 : slabs_count)) & 0x7FFFFFFF,
		i ++;
	logs.push("prefixes:" + prefix_count);
	logs.push("slabs%" + slabs_count + ":" + i);
	logs.push("modes:" + n);
	document.getElementsByTagName("pre")[0].innerHTML = logs.join("<br />");
}