Uses math


Procedure Main
	Var i,j,k,vars,first:Integer
	CGIWriteLn('content-type: text/html')
	CGIWriteLn('')
	CGIWriteLn('<html>')
	CGIWriteLn('<head>')
	CGIWriteLn('<link rel="stylesheet" type="text/css" href="/style.css">')
	CGIWriteLn('<style>')
	CGIWriteLn('.var {font-family:serif;font-style:italic}')
	CGIWriteLn('</style>')
	CGIWriteLn('<title>Kanonische Normalformen</title>')
	CGIWriteLn('</head>')
	CGIWriteLn('<body>')
	CGIWriteLn('<form>')

	vars:=Val(GetQueryString('vars'))
	vars:=minimum(vars,9)
	CGIWriteLn('Anzahl der Variablen: <input name="vars" value="'+Str(vars)+'" size="1" maxlength="1">')

	If vars>0
		CGIWriteLn('<table border>')
		CGIWrite('<tr>')
		NLoop(j,vars-1,CGIWrite('<th><span class="var">'+Chr(j+Asc('a'))+'</span>'))
		i:=0
		While i<pot(2,vars)
			CGIWrite('<tr style="background-color:'+Choice(Sel(GetQueryString(Str(i))),'lime','red')+'">')
			NLoop(j,vars-1,CGIWrite('<td><tt>'+Choice(Sel(pot(2,vars-j-1) B_And i),'1','0')+'</tt>'))
			CGIWriteLn('<td><input type="checkbox" name="'+Str(i)+'"'+Choice(Sel(GetQueryString(Str(i))),' checked','')+'>')
			i++
		End
		CGIWriteLn('</table>')

		k:=0
		While k<2
			first:=true
			CGIWrite(Choice(Sel(k),'Kon','Dis')+'junktive Normalform: ')
			i:=0
			While i<pot(2,vars)
				If B_XOr(k,Sel(GetQueryString(Str(i))))
					?!first/CGIWrite(Choice(Sel(k),' <font color="red">&and;</font> ',' <font color="lime">&or;</font> '))
					first:=false
					CGIWrite('(')
					j:=0
					While j<=vars-1
						CGIWrite(Choice(Abs(k-Sel(pot(2,vars-j-1) B_And i)),'','&not;')+'<span class="var">'+Chr(j+Asc('a'))+'</span>')
						?j<vars-1/CGIWrite(Choice(Sel(k),' &or; ',' &and; '))
						j++
					End
					CGIWrite(')')
				End
				i++
			End
			CGIWriteLn('<br>')
			k++
		End

	End
	CGIWriteLn('<input type="submit" value="Aktualisieren">')
	CGIWriteLn('</form>')
	CGIWriteLn('<a href="nf.mod">Quellcode</a><br>')
	CGIWriteLn('<hr>')
	CGIWriteLn('<a href="http://sven.killig.de">Sven</a> <a href="http://www.killig.de">Killig</a> 2007, 2013')
	CGIWriteLn('</body>')
	CGIWriteLn('</html>')
EndProc
