#!/usr/bin/python3
print('*** Mešalo nalog tihe vaje z rešitvami- S53MV 21.09.2020 ***')
ff=input('Ime vhodnega zapisa: ')	#vhodni zapis
vz=open(ff,'r')

g=''	#glava strani (prvi znak v vrstici je '*')
n=[]	#zacetno polje nalog
v=[]	#zacetno polje vprašanj (prvi znak v vrstici je '?')
o=[]	#zacetno polje odgovorov (prvi znak v vrstici je '!')
nn=0	#zastavica nove naloge
s=vz.readline()		#prvo čitanje vhodnega zapisa
while len(s)>0:
	ss=s[1:]		#odstrani prvi znak
	if s[0]=='*':		#shrani glavo strani?
		g=g+ss
		print('Glava:',g,end="")
	elif s[0]=='?':		#shrani vprašanje?
		v=v+[ss]
		nn=1
	elif s[0]=='!':		#shrani odgovor?
		o=o+[ss]
		nn=1
	else:
		if nn==1:	#kakršenkoli drug znak: shrani novo nalogo?
			n=n+[[v,o]]
			print('Naloga:',len(n),' Vprašanj:',len(v),' Odgovorov:',len(o))
		v=[]	#resetiraj polje vprašanj
		o=[]	#resetiraj polje odgovorov
		nn=0	#resetiraj zastavico nove naloge
	s=vz.readline()	#naslednje čitanje vhodnega zapisa		
vz.close()		#zapri vhodni zapis

m=int(input('Število tihih vaj: '))		#število listov različnih tihih vaj

fi=ff.replace('.','i.')			#ustvari ime izhodnega zapisa izpiti podaljšano za 'i'
fr=ff.replace('.','r.')			#ustvari ime izhodnega zapisa resitve podaljšano za 'r'
print('Imeni izhodnih zapisov:',fi,fr)
iz=open(fi,'w')				#ustvari in odpri izhodna zapisa
rz=open(fr,'w')

iz.write('\\documentclass{minimal}\n')	#glava dokumenta Latex za izpite
iz.write('\\pdfpagewidth 210mm\n')
iz.write('\\pdfpageheight 297mm\n')
iz.write('\\setlength{\\voffset}{-20mm}\n')
iz.write('\\setlength{\\hoffset}{-20mm}\n')
iz.write('\\setlength{\\textheight}{287mm}\n')
iz.write('\\setlength{\\textwidth}{200mm}\n')
iz.write('\\setlength{\\parindent}{0mm}\n')
iz.write('\\raggedright\n')
iz.write('\\usepackage[utf8]{inputenc}\n')
iz.write('\\renewcommand{\\familydefault}{\\sfdefault}\n')
iz.write('\\begin{document}\n')

rz.write('\\documentclass{minimal}\n')	#glava dokumenta Latex za rešitve
rz.write('\\pdfpagewidth 210mm\n')
rz.write('\\pdfpageheight 297mm\n')
rz.write('\\setlength{\\voffset}{-20mm}\n')
rz.write('\\setlength{\\hoffset}{-20mm}\n')
rz.write('\\setlength{\\textheight}{287mm}\n')
rz.write('\\setlength{\\textwidth}{200mm}\n')
rz.write('\\setlength{\\parindent}{0mm}\n')
rz.write('\\raggedright\n')
rz.write('\\usepackage[utf8]{inputenc}\n')
rz.write('\\usepackage{xcolor}\n')	#uporablja barvanje!!!
rz.write('\\renewcommand{\\familydefault}{\\sfdefault}\n')
rz.write('\\begin{document}\n')

import random				#zanka po listih tihih vaj
print('List: ',end=" ")
mm=0
while mm<m:
	mm=mm+1				#nova tiha vaja
	print(mm,end=" ")
	s='\\fontsize{17}{20}\\selectfont\n('+str(mm)+')\\hfill\\underline{ '	#glava tihe vaje
	s=s+g+'}\\hfill~~~\\vfill\n\\fontsize{10}{12}\\selectfont\n'
	iz.write(s)
	rz.write(s)
	random.shuffle(n)		#premešaj naloge tihe vaje
	nn=0				#zanka po premešanih nalogah
	while nn<len(n):
		[v,o]=n[nn]		#poisci vprašanja in odgovore naloge
		s=str(nn+1)+'. '	#okrasna številka naloge
		iz.write(s)
		rz.write(s)
		random.shuffle(v)	#premešaj vprasanja
		if len(v)>0:
			menjaj=v[0].find('\\colorbox{pink}')	#rdeče pravilno?
			b=v[0].replace('\\colorbox{pink}','').replace('\\colorbox{lime}','')	#odstrani barve!!!
			s='\\vfill\n'
			iz.write(b+s)	#vstavi vprašanje brez barv
			rz.write(b+s)
		random.shuffle(o)	#premešaj odgovore
		j=0			#zanka po premešanih odgovorih
		while j<len(o):
			s='('+chr(ord('A')+j)+') '	#okrasna črka odgovora
			b=o[j].replace('\\colorbox{pink}','').replace('\\colorbox{lime}','')	#odstrani barve!!!
			iz.write(s+b)	#odgovor izpita
			if menjaj==-1:
				b=o[j]	#pravilne barve rešitev
			else:
				b=o[j].replace('\\colorbox{pink}','\\colorbox{cudo}')	#zamejaj barve rešitev!!!
				bb=b.replace('\\colorbox{lime}','\\colorbox{pink}')
				b=bb.replace('\\colorbox{cudo}','\\colorbox{lime}')
			rz.write(s+b)	#odgovor rešitve
			j=j+1
			if j<len(o):
				s='\\hfill '	#razmak med različnimi odgovori
			else:
				s='~~~\\vfill\\vfill\n'	#zadnji odgovor
			iz.write(s)
			rz.write(s)			
		nn=nn+1
	s='Priimek in ime:\\hfill~Elektronski naslov:\\hfill~\\newpage\n'	#podpis tihe vaje in nov list
	iz.write(s)
	rz.write(s)

iz.write('\\end{document}\n')		#repa dokumentov Latex
rz.write('\\end{document}\n')
iz.close()				#zapri izhodna zapisa
rz.close()
input('\n*** Konec programa ***')
