• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 33,  comments - 33,  trackbacks - 0

            前做了一個(gè)簡(jiǎn)單實(shí)用的本地程序評(píng)測(cè)機(jī),用作學(xué)校某比賽的評(píng)測(cè)(該比賽不是在線比賽,而是做完后自己發(fā)代碼然后我們自己手動(dòng)萍。。囧),該程序是一個(gè)本地評(píng)測(cè)系統(tǒng),用戶(hù)輸入單文件代碼或可執(zhí)行程序,和輸入數(shù)據(jù)和正確的輸出數(shù)據(jù),系統(tǒng)根據(jù)這些數(shù)據(jù)對(duì)代碼或程序進(jìn)行評(píng)測(cè)。
            評(píng)測(cè)結(jié)果有:
            Accept   //通過(guò)
            Compile Error  //編譯錯(cuò)誤
            Worng Answer  //答案錯(cuò)誤
            Time Limit Exceeded //超時(shí)
            Memory Limit Exceeded //超內(nèi)存
            Presentation Error //輸出格式錯(cuò)誤
            System Error  //系統(tǒng)錯(cuò)誤
            下面簡(jiǎn)單聊聊實(shí)現(xiàn)的過(guò)程:

            一、實(shí)現(xiàn)細(xì)節(jié)
            1.1 編譯功能
            類(lèi):CompilerHelper
            函數(shù):static int compile(const std::string& sSourceFile, //源文件路徑
             const std::string& sOutputFile);//執(zhí)行代碼路徑
            流程如下:
            生成編譯器輸入?yún)?shù)(編譯器路徑、文件路徑、包含路徑、庫(kù)路徑)在config.txt定義
            -> 重定向in和out -> 創(chuàng)建進(jìn)程編譯->等待完畢后返回執(zhí)行結(jié)果

            1.2 評(píng)測(cè)功能
            需要獲得 執(zhí)行代碼路徑、輸入文件、期待輸出的答案文件、本次執(zhí)行程序的實(shí)際輸出文件、
            時(shí)間、內(nèi)存、是不是SPJ

            監(jiān)視器線程: 監(jiān)視進(jìn)程的執(zhí)行時(shí)間、使用內(nèi)存的信息
            流程:
            輸入信息-> 根據(jù)輸入文件產(chǎn)生輸入?yún)?shù)->創(chuàng)建進(jìn)程->監(jiān)視器開(kāi)啟->等待直到結(jié)束
            ->返回!=0?"System Error" : 記錄本次執(zhí)行所需要的時(shí)間和內(nèi)存->是否SPJ?啟動(dòng)spj比較器
            :啟動(dòng)文件比較器

            啟動(dòng)文件比較器: 比較實(shí)際的和答案的差異,完全相同的AC,只存在空格的差異為PE,其他情況的WA
            spj比較器: 使用自己編寫(xiě)的spj程序?qū)蓚€(gè)文件評(píng)測(cè)

            1.3 測(cè)試套件
            實(shí)現(xiàn)多個(gè)測(cè)試用例(多個(gè)輸入文件和輸出文件)
            可以通過(guò)配置文件進(jìn)行配置
            配置文件如下:
            [TestSuite]
            TestCaseCount=19 //用例個(gè)數(shù)
            IsSpecialJudge=0 //是否SPJ
            CodeFile=main.cpp //源文件,可設(shè)為NULL
            SPJExe=lowSPJ.exe //SPJ路徑
            ExecuteFile=NULL //如設(shè)置了就不啟用編譯功能
            [TestCase_n]  //第n個(gè)用例
            TimeLimit=1000  //時(shí)間限制
            MemoryLimit=65535 //內(nèi)存限制(KB)
            StdInputFile=data1.txt //輸入文件
            AnswerFile=output1.txt //答案
            每個(gè)用例將new一個(gè)judgerunner實(shí)例

            二、依賴(lài)庫(kù)
            個(gè)人開(kāi)發(fā)的mtLibrary中的Common、Thread、Process庫(kù)模塊

            三、運(yùn)行效果
            配置文件示例
            [TestSuite]
            TestCaseCount=19
            IsSpecialJudge=0
            CodeFile=main.cpp
            SPJExe=NULL
            [TestCase_1]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data1.txt
            AnswerFile=output1.txt
            [TestCase_2]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data2.txt
            AnswerFile=output2.txt
            [TestCase_3]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data3.txt
            AnswerFile=output3.txt
            [TestCase_4]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data4.txt
            AnswerFile=output4.txt
            [TestCase_5]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data5.txt
            AnswerFile=output5.txt
            [TestCase_6]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data6.txt
            AnswerFile=output6.txt
            [TestCase_7]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data7.txt
            AnswerFile=output7.txt
            [TestCase_8]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data8.txt
            AnswerFile=output8.txt
            [TestCase_9]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data9.txt
            AnswerFile=output9.txt
            [TestCase_10]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data10.txt
            AnswerFile=output10.txt
            [TestCase_11]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data11.txt
            AnswerFile=output11.txt
            [TestCase_12]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data12.txt
            AnswerFile=output12.txt
            [TestCase_13]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data13.txt
            AnswerFile=output13.txt
            [TestCase_14]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data14.txt
            AnswerFile=output14.txt
            [TestCase_15]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data15.txt
            AnswerFile=output15.txt
            [TestCase_16]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data16.txt
            AnswerFile=output16.txt
            [TestCase_17]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data17.txt
            AnswerFile=output17.txt
            [TestCase_18]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data18.txt
            AnswerFile=output18.txt
            [TestCase_19]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data19.txt
            AnswerFile=output19.txt

            這是運(yùn)行的效果,運(yùn)行后結(jié)果將保存帶JudgeResult.txt中


            posted on 2012-03-02 20:30 bennycen 閱讀(351) 評(píng)論(1)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            热RE99久久精品国产66热| av色综合久久天堂av色综合在| 亚洲精品无码久久久久去q| 亚洲欧美一级久久精品| 中文精品久久久久人妻不卡| 国产精品久久国产精品99盘| 91精品日韩人妻无码久久不卡| 久久久久香蕉视频| 性欧美丰满熟妇XXXX性久久久 | 日韩欧美亚洲综合久久影院Ds| 久久午夜福利无码1000合集| 亚洲精品无码成人片久久| 国产A级毛片久久久精品毛片| 久久久久久久综合综合狠狠| 99久久无色码中文字幕人妻| 久久久久人妻一区精品果冻| 久久精品国产亚洲av日韩| 久久影院亚洲一区| 欧美777精品久久久久网| 亚洲综合伊人久久大杳蕉| 国产成人久久777777| 中文精品久久久久人妻不卡| 久久久网中文字幕| 久久久国产精品福利免费| 日韩乱码人妻无码中文字幕久久| 品成人欧美大片久久国产欧美...| 日产精品久久久久久久性色| 亚洲精品无码久久久久AV麻豆| 88久久精品无码一区二区毛片 | 久久综合九色综合欧美就去吻| 久久精品国产亚洲AV香蕉| 亚洲熟妇无码另类久久久| 日本WV一本一道久久香蕉| 亚洲精品无码久久久久AV麻豆| 久久亚洲中文字幕精品一区四| 久久精品国产99国产精品澳门| 久久久无码人妻精品无码| 久久亚洲精品成人AV| 亚洲狠狠婷婷综合久久久久| 久久久久se色偷偷亚洲精品av | 国产V亚洲V天堂无码久久久|