#include #include #include #include std::map revert(std::map s) { std::map r; for (std::map::iterator it = s.begin(); it != s.end(); ++it) { r[it->second] = it->first; } return r; } std::string wp2wordlist(std::map stems, std::map suffixes, std::map< std::set, std::set > ss) { std::map smets = revert(stems); std::map sexiffus = revert(suffixes); std::ostringstream outstream; for(std::map< std::set, std::set >::iterator it1 = ss.begin(); it1 != ss.end(); ++it1) { for (std::set::iterator it2 = it1->second.begin(); it2 != it1->second.end(); ++it2) { for (std::set::iterator it3 = it1->first.begin(); it3 != it1->first.end(); ++it3) { outstream << smets[*it2]; if (sexiffus[*it3].substr(0, 1) == "0") { outstream << sexiffus[*it3].substr(1, sexiffus[*it3].length()); } else { outstream << sexiffus[*it3]; } outstream << std::endl; } } } return outstream.str(); } void debugoutputSetSetMap(std::map, std::set > uffsetsetmap) { for(std::map< std::set, std::set >::iterator it = uffsetsetmap.begin(); it != uffsetsetmap.end(); ++it) { for(std::set::iterator it2 = it->first.begin(); it2 != it->first.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << ": "; for(std::set::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << std::endl;; } } void debugoutputStringIntMap(std::map uffstringintmap) { for(std::map::iterator it = uffstringintmap.begin(); it != uffstringintmap.end(); ++it) { std::cerr << it->second << " " << it->first << std::endl;; } } std::istream* setupinputfile() { std::istream* infile; infile = new std::stringstream("100000-geardásačča\tGaBO\n100000-geardásačča>ide\tNAIE,NePAE\n100000-geardásačča>id\tGpBO,NABO\n100000-geardásačča>id\tGpBO,NePIOE\n100000-geardásačča>id\tNABO\n100000-geardásačča>id\tNAIE,NePAE\n100000-geardásačča>id\tNAIE,NePAOE\n100000-geardásačča>id-\tWIX,NEX\n100000-geardásačča>iguin\tNAIE,NePAE\n100000-geardásačča\tNAIE,NePOE\n100000-geardásačča>-\tWIX,NEX\n100000-geardásaš\tNABO\n100000-geardásaš\tNAIBOE\n100000-geardásaš\tNAIE,NePOE\n100000-geardásaš>-\tWIX,NEX\n10000-geardásačča\tGaBO\n10000-geardásačča>id\tGpBO,NABO\n10000-geardásačča>id\tGpBO,NePIOE\n10000-geardásačča>id\tNABO\n10000-geardásačča>id\tNAIE,NePAOE\n10000-geardásačča\tNAIE,NePOE\n10000-geardásaš\tNAIBOE\n1000-geardásačča\tGaBO\n1000-geardásačča>id\tGpBO,NABO\n1000-geardásačča>id\tGpBO,NePIOE\n1000-geardásačča>id\tNAIE,NePAOE\n1000-geardásaš\tNAIBOE\n10-Đ>:ide\tNI,NePE\n10-Đ>:id\tNI,NePE\n10-Đ>:iguin\tNI,NePE\n10-Đ\tNePE,WI\n10-Đ-\tNIX,NePABO\n1-D\tNePE,WI\n1-D-\tNIX,NePABO\n2-C\tNePE,WI\n2-C-\tNIX,NePABO\n3-juvllatsihkkel>ačča>de\tNI\n3-juvllatsihkkel>ačča>det\tNI\n3-juvllatsihkkel>ačča>id>anguin\tNI\n7. juni-plassen>a\tNePIE\n7. juni-plassen>a\tNePIE,VaE\n7. juni-plassen>a-\tNePIEX,JuBO\n7. juni-plassen>ii\tNePIE\n7. juni-plassen>iin\tNePIE\n7. juni-plassen>-\tNB,GaB,NePABO\n7. juni-plassen\tNePIE,VaE\n7. juni-plassen>-\tNePIEX,JuBO\n7. juni-plassen>-\tWIX\nAabakken>a\tNePIE,VaE\nAabakken>a-\tNePIEX,JuBO\nAabakken>-\tNB,GaB,NePABO\nAabakken>-\tWIX\nAabel>-\tNB,GaB,NePABO\nAabel>-\tWIX\nabandonere>ba\tVI\nabandonere>beahtti\tVI\nabandonere>behte>t\tVI\nabandonere>d>>an\tNaAE\nabandonere>dan\tNABI\nabandonere>d>>an\tNAE\nabandonere>d>>an\tNaO\nabandonere>d>>an\tNO\nabandonere>d>>an\tNpAE\nabandonere>d>>an\tNpO\nabandonere>d>eaddjá>i\tNaAE\nabandonere>d>eaddjá>i\tNAE\nabandonere>d>eaddjá>i\tNpAE\nabandonere>d>eaddji\tNaAE\nabandonere>d>eaddji\tNAE\nabandonere>d>eaddji\tNaO\nabandonere>d>eaddji>n\tNpAE\nabandonere>d>eaddji\tNO\nabandonere>d>eaddji\tNpO\nabandonere>d>eami\tNaO\nabandonere>d>eami\tNO\nabandonere>d>eami\tNpO\nabandonere>d>išgoahtá>n\tNABI\nabandonere>d>uvvo>goahtá>n\tNABI\nabess-\tNePABX\nabess.-\tNePABX\nabl-\tNePABX\naborigiinnalačča>t\tNAI\nabsoluhta>b>učča>t\tNAI\nabsoluhtalačča>t\tNAI\naddalanvuoigatvuođa>id\tGpBO\naddámuša>id\tGpBO\naddinbeai\tNAB\naddinbeai>-\tNAIX,NePABX\naddinvejolašvuođa>id\tGpBO\nadvokáhta gukto>de\tNIE\nadvokáhta gukto>det\tNIE\nadvokáhta gukto>me\tNIE\nagibeai\tNAB\nagibeai>-\tNAIX,NePABX\na.>:in\tWEIX\na.>:in-\tWIX,NePABX\na.>:i\tWEIX\na.>:i-\tWIX,NePABX\na.>:n\tWEIX\na.>:n-\tWIX,NePABX\nalmmustusbeai\tNAB\nalmmustusbeai>-\tNAIX,NePABX\na-\tNBX\nas>:ide\tWI\nas>:id\tWI\nas>:iguin\tWI\ná-\tNBX\nb>\tNI\nc-\tNBX\nčuohpan>laččaide\tNAIE\nčuohpan>laččaid\tNAIE\nčuohpan>laččaiguin\tNAIE\ndáppe\tNAPBX,NtPAB,NIX\ndieppe\tNAPBX,NtPAB,NIX\ndoppe\tNAPBX,NtPAB,NIX\nNSR\tNePE,WI\nNSR>:i\tNI,NePE\n", std::stringstream::in); return infile; } void debugoutputIntSetSet(std::set< std::set > intsetset) { for(std::set< std::set >::iterator it = intsetset.begin(); it != intsetset.end(); ++it) { for(std::set::iterator it2 = it->begin(); it2 != it->end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << std::endl; } } void debugoutputIntMapSetSet(std::map< std::set, std::set > intmapsetset) { for(std::map< std::set, std::set >::iterator it = intmapsetset.begin(); it != intmapsetset.end(); ++it) { std::cerr << "part1: "; for(std::set::iterator it2 = it->first.begin(); it2 != it->first.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << std::endl; std::cerr << "part2: "; for(std::set::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << std::endl; } } void debugoutputIntMapSet(std::map > afMap) { for(std::map >::iterator it1 = afMap.begin(); it1 != afMap.end(); ++it1) { std::cerr << it1->first << ": "; for(std::set::iterator it2 = it1->second.begin(); it2 != it1->second.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << std::endl; } std::cerr << std::endl; } void debugoutputAfMap(std::map< std::set, int> afMap) { for(std::map< std::set, int>::iterator it1 = afMap.begin(); it1 != afMap.end(); ++it1) { for(std::set::iterator it2 = it1->first.begin(); it2 != it1->first.end(); ++it2) { std::cerr << *it2 << " "; } std::cerr << ": " << it1->second << std::endl; } std::cerr << std::endl; }