本數據生成器由長春吉大附中實驗學校衣然@Yirannn同窗自主開發。開發者擁有並保留本產品的所有權利。對於任何未經其本人容許而將本產品用於任何盈利或非盈利用途的行爲,以及未註明版權的轉載,開發者保留追究其法律責任的權利。python
# ~/usr/bin/python3 # A Simple Data Generator For OIers By Yirannn # Made By Python # Have Fun to Generator Data ! import os import random import sys from time import time # 預處理 FErr = open("Err.Log", "w") sys.stderr = FErr # 輸入提示 print("請按以下格式補充留在本文件夾的文件") print("請注意 爲保證數據生成隨機,本程序會對main函數傳一個參數, 請使用該參數做爲隨機種子") print("輸入數據生成器 : Gen_1.cpp") print("輸出數據生成器 : Std_1.cpp") print("輸出數據對拍器 : Std_2.cpp") print("本程序編譯命令 : g++ %s.cpp -o %s.exe -O2 -std=c++11") Problem_Name = input("請輸入題目英文名,本程序將在程序根目錄下建立該名字文件夾並導出數據\n") while(Problem_Name == "") : Problem_Name = input("請輸入題目英文名,本程序將在程序根目錄下建立該名字文件夾並導出數據\n") print("若是須要 Spj 請把Spj程序命名爲 'Spj.cpp' 並放在根目錄下") Need_Spj = input("是否須要Special_Judge程序? 是請輸入 1 不然輸入 0") # 系統識別 Operator_System = 2 if os.name == "nt" else 1 Clear_Screen = "" Test = "" Exist = os.path.exists(Problem_Name) Error = False if Operator_System == 1 : Clear_Screen = "clear" Test = "diff " if (Exist != True) : os.system("mkdir " + "\"" + Problem_Name + "\"") else : Clear_Screen = "cls" Test = "fc " if (Exist != True) : os.system("md " + Problem_Name) if Need_Spj == 1 : os.system("g++ spj.cpp -o spj -O2") Test = "Spj " # 數據生成 while(True) : while True : try : From, End = input("請輸入數據編號範圍 生成完畢請輸入兩個0\n").split() break except : print("請輸入兩個正常的數字!") os.system(Clear_Screen) From = int(From) End = int(End) if End == 0 : break os.system("g++ data.cpp -o Gen_1.exe -O2 -Wl,--stack=40000000") os.system("g++ test.cpp -o Std_1.exe -O2") Execute = "./" if Operator_System == 1 else "" for i in range(From, End+1) : Num = str(i) RandomSeed = str(random.randint(1, 100000000)) os.system(Execute + "Gen_1.exe " + Num + " " + RandomSeed + " > " + Problem_Name + "/" + Num + ".in") Start_Time = time() os.system(Execute + "Std_1.exe < " + Problem_Name + "/" + Num + ".in > " + Problem_Name + "/" + Num + ".out") OverA_Time = time() # os.system(Execute + "Std_2.exe < " + Problem_Name + "/" + Num + ".in > " + Problem_Name + "/" + Num + ".ans") # OverB_Time = time() # Jud = os.system(Test + Problem_Name + "/" + Num + ".out " + Problem_Name + "/" + Num + ".ans") # if Jud != 0 : # RandomSeed = str(random.randint(1, 100000000)) # print("WA On Gen", Num) # print("正在嘗試從新生成一組數據,請稍候") # os.system(Execute + "Gen_1.exe " + Num + " "+ RandomSeed + " > " + Problem_Name + "/" + Num + ".in") # os.system(Execute + "Std_1.exe < " + Problem_Name + "/" + Num + ".in > " + Problem_Name + "/" + Num + ".out") # os.system(Execute + "Std_2.exe < " + Problem_Name + "/" + Num + ".in > " + Problem_Name + "/" + Num + ".ans") # Jud = os.system(Test + Problem_Name + "/" + Num + ".out " + Problem_Name + "/" + Num + ".ans") # if Jud != 0 : # print("您的數據生成器或者標程可能出問題了,請修改後再次生成!") # Error = True # sys.exit(1) # else : # print("AC On Gen ", Num, "Runtime : Std_1 : %f && Std_2 : %f" %(OverA_Time - Start_Time, OverB_Time - OverA_Time)) # os.system("rm " + Problem_Name + "/" + Num + ".ans") # if(Error) : # break # 感謝使用 os.system("del Gen_1.exe") os.system("del Std_1.exe") Exist = os.path.exists("Err.log") close(FErr) if(Exist) : os.system("rm Err.log")
數據生成器是python源文件。請使用者自行安裝python後使用python運行。並按其指示操做。c++
替學長感謝你們的使用和支持~dom