网站头部优化文字怎么做wordpress文字模板下载
2026/2/6 16:39:10 网站建设 项目流程
网站头部优化文字怎么做,wordpress文字模板下载,彩票网站定制,ui界面设计师题目描述 Loglan\texttt{Loglan}Loglan 是一种人造的逻辑语言#xff0c;用于测试语言学中的一些基本问题#xff08;如 Sapir-Whorf\texttt{Sapir-Whorf}Sapir-Whorf 假设#xff09;。它的语法明确#xff0c;文化中立#xff0c;形而上简洁。题目要求判断给定的字符串是…题目描述Loglan\texttt{Loglan}Loglan是一种人造的逻辑语言用于测试语言学中的一些基本问题如Sapir-Whorf\texttt{Sapir-Whorf}Sapir-Whorf假设。它的语法明确文化中立形而上简洁。题目要求判断给定的字符串是否为合法的Loglan\texttt{Loglan}Loglan句子。句子由单词和名字组成以句点.结束。单词以元音结尾名字以辅音结尾。单词分为两类小词little words\texttt{little words}little words定义句子结构。谓词predicates\texttt{predicates}predicates形式为CCVCV或CVCCV其中C表示辅音V表示元音。给出的语法规则如下已简化A ⇒ a | e | i | o | u MOD ⇒ ga | ge | gi | go | gu BA ⇒ ba | be | bi | bo | bu DA ⇒ da | de | di | do | du LA ⇒ la | le | li | lo | lu NAM ⇒ {all names} PREDA ⇒ {all predicates} sentence ⇒ statement | predclaim predclaim ⇒ predname BA preds | DA preds preds ⇒ predstring | preds A predstring predname ⇒ LA predstring | NAM predstring ⇒ PREDA | predstring PREDA statement ⇒ predname verbpred predname | predname verbpred verbpred ⇒ MOD predstring输入多个句子每句以.结尾输入以#结束。句子可跨行单词间可有多个空格。输出对每个句子输出Good或Bad!。解题思路本题是一个语法分析问题适合使用自顶向下或自底向上的解析方法。由于规则较为复杂且涉及递归我们可以采用递归下降或表驱动的解析方法。关键点分析单词分类首先需要识别每个单词的类型如A、MOD、BA、DA、LA、NAM、PREDA。递归结构多个语法规则是递归定义的例如preds和predstring。句子结构最终句子要么是statement要么是predclaim。方法选择两种实现代码都使用了自顶向下的递归判断但实现方式不同第一种为每个语法规则编写独立的判断函数通过递归和拆分单词向量进行验证。第二种使用表驱动的方法将规则编码在表中通过状态转换进行归约类似于一个简单的下推自动机。算法步骤以第一种为例读取输入按行读入去掉句点分割单词。分类判断isPREDA(word)检查是否为CCVCV或CVCCV。isPredstring(words)检查是否全部为PREDA。isPreds(words)递归检查preds结构。isPredname(words)检查LA predstring或NAM。isStatement(words)检查predname verbpred predname或predname verbpred。isPredclaim(words)检查predname BA preds或DA preds。最终判断句子为statement或predclaim即合法。代码实现第一种递归函数法// Loglan-A Logical Language// UVa ID: 134// Verdict: Accepted// Submission Date: 2016-01-01// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;// A a | e | i | o | uboolisA(charc){string vowelaeiou;returnvowel.find(c)!string::npos;}// MOD ga | ge | gi | go | guboolisMOD(string word){returnword.length()2word[0]gisA(word[1]);}// BA ba | be | bi | bo | buboolisBA(string word){returnword.length()2word[0]bisA(word[1]);}// DA da | de | di | do | duboolisDA(string word){returnword.length()2word[0]disA(word[1]);}// LA la | le | li | lo | luboolisLA(string word){returnword.length()2word[0]lisA(word[1]);}// NAM { all names }最后一个字母为辅音字母。boolisNAM(string word){return!isA(word.at(word.length()-1));}// PREDA { all predicates }满足 CCVCV 或者 CVCCV 的模式C 为辅音字母// V 为元音字母。使用位操作将字符位置编为一个二进制数进行判断。boolisPREDA(string word){if(word.length()!5)returnfalse;intbitOr0;for(inti0;i5;i)bitOr|((isA(word[i])?1:0)(4-i));return(bitOr5||bitOr9);}// predstring PREDA | predstring PREDAboolisPredstring(vectorstringwords){if(words.size()0)returnfalse;for(inti0;iwords.size();i)if(!isPREDA(words[i]))returnfalse;returntrue;}// preds predstring | preds A predstringboolisPreds(vectorstringwords){if(words.size()0)returnfalse;// 找到起始的 PREDA 或 Afor(intiwords.size()-1;i0;i--){if(isPREDA(words[i]))continue;elseif(words[i].length()1isA(words[i][0])){if(i0){vectorstringpreds(words.begin(),words.begin()i);returnisPreds(preds);}elsereturnfalse;}elsereturnfalse;}returntrue;}// predname LA predstring | NAMboolisPredname(vectorstringwords){if(words.size()0)returnfalse;if(!isLA(words.front())!isNAM(words.front()))returnfalse;if(words.size()1isNAM(words.front()))returntrue;if(isLA(words.front())){vectorstringpredstring(words.begin()1,words.end());returnisPredstring(predstring);}elsereturnfalse;returntrue;}// statement predname verbpred predname | predname verbpredboolisStatement(vectorstringwords){// 找到 verbpredinti,j;for(i0;i(words.size()-2);i)if(isMOD(words.at(i))){// 提取 verbpred 之前的 prednamevectorstringpredname(words.begin(),words.begin()i);// 找到构成 verbpred 在 MOD 之后的所有 PREDA若未到 words 的末端// 则句子可能是 statement 的第一种模式否则可能是第二种模式for(ji1;jwords.size();j)if(!isPREDA(words[j]))break;if(j(words.size()-1)){vectorstringnextPredname(words.begin()j,words.end());returnisPredname(predname)isPredname(nextPredname);}elsereturnisPredname(predname);}returnfalse;}// predclaim predname BA preds | DA predsboolisPredclaim(vectorstringwords){// DA predsif(isDA(words.front())){vectorstringpreds(words.begin()1,words.end());returnisPreds(preds);}// predname BA predsfor(inti0;iwords.size();i){if(isBA(words[i])){vectorstringpredname(words.begin(),words.begin()i);vectorstringpreds(words.begin()i1,words.end());returnisPredname(predname)isPreds(preds);}}returnfalse;}// sentence statement | predclaimboolisSentence(vectorstringwords){if(words.size()0)returnfalse;returnisStatement(words)||isPredclaim(words);}intmain(){vectorstringwords;string line,word;while(getline(cin,line),line!#){// 读入字符串将其转换为单词数组以便判定。stringnewLine(line);if(line.find(.)!string::npos)newLinenewLine.substr(0,newLine.find(.));istringstreamiss(newLine);while(issword)words.push_back(word);if(line.find(.)!string::npos){cout(isSentence(words)?Good:Bad!)endl;words.clear();}}return0;}第二种表驱动法// Loglan-A Logical Language// UVa ID: 134// Verdict: Accepted// Submission Date: 2016-04-12// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constintGROUPS14;constintNONE-1,A0,MOD1,BA2,DA3,LA4,NAM5,PREDA6,PREDSTRING7,PREDNAME8,PREDS9,VERBPRED10,PREDVERB11,PREDCLAIM12,STATEMENT13,SENTENCE14;vectorintS;vectorstringW;intT[GROUPS][4]{{PREDA,NONE,PREDA,PREDA},{PREDA,NONE,NONE,PREDSTRING},{NAM,NONE,NONE,PREDNAME},{LA,NONE,PREDSTRING,PREDNAME},{MOD,NONE,PREDSTRING,VERBPRED},{A,PREDSTRING,PREDSTRING,PREDSTRING},{PREDSTRING,NONE,NONE,PREDS},{DA,NONE,PREDS,PREDCLAIM},{BA,PREDNAME,PREDS,PREDCLAIM},{VERBPRED,PREDNAME,NONE,PREDVERB},{PREDVERB,NONE,PREDNAME,STATEMENT},{PREDVERB,NONE,NONE,STATEMENT},{STATEMENT,NONE,NONE,SENTENCE},{PREDCLAIM,NONE,NONE,SENTENCE}};intgetSymbol(string word){string vowelaeiou;if(word.length()1vowel.find(word[0])!word.npos)returnA;if(word.length()2vowel.find(word[1])!word.npos){if(word[0]g)returnMOD;if(word[0]b)returnBA;if(word[0]d)returnDA;if(word[0]l)returnLA;returnNONE;}if(vowel.find(word.back())word.npos)returnNAM;if(word.length()5){intbitOr0;for(inti0;i5;i)bitOr|((vowel.find(word[i])!word.npos?1:0)(4-i));if(bitOr5||bitOr9)returnPREDA;}returnNONE;}boolparse(){S.clear();for(inti0;iW.size();i){intsymbolgetSymbol(W[i]);if(symbolNONE)returnfalse;elseS.push_back(symbol);}returntrue;}boolgood(){if(!parse())returnfalse;for(inti0;iGROUPS;i)for(intj0;jS.size();){if((S[j]!T[i][0])||(~T[i][1](!j||S[j-1]!T[i][1]))||(~T[i][2](j(S.size()-1)||S[j1]!T[i][2]))){j;continue;}j~T[i][1]?S.erase(S.begin()j-1)-S.begin():j;j~T[i][2]?S.erase(S.begin()j1)-S.begin()-1:j;S[j]T[i][3];}return(S.size()1S[0]SENTENCE);}intmain(){string line,word;while(getline(cin,line),line!#){stringtemp(line);if(line.find(.)!string::npos)temptemp.substr(0,temp.find(.));istringstreamiss(temp);while(issword)W.push_back(word);if(line.find(.)!string::npos){cout(good()?Good:Bad!)endl;W.clear();}}return0;}总结本题考察了语法分析的基本能力适合作为编译原理的练习题。两种解法各有特点递归函数法直观易理解适合规则较少的情况。表驱动法代码简洁易于扩展适合规则较多且结构清晰的情况。在实际解题时建议先理解语法规则再选择合适的解析方法。本题的难点在于递归规则的判断和单词类型的准确识别。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询