From 3d62f6910de8511d370b0ff7c5bfe47430d9cfa3 Mon Sep 17 00:00:00 2001 From: marcheanin Date: Wed, 24 May 2023 11:44:24 +0300 Subject: [PATCH] fix some bugs --- server/cmd/main.cpp | 6 +- server/internal/metrics/src/DiffLibImpl.cpp | 29 +++++++-- .../internal/metrics/testProgs/cpp/code3.txt | 65 ++----------------- .../internal/metrics/testProgs/cpp/code4.txt | 45 +++---------- 4 files changed, 39 insertions(+), 106 deletions(-) diff --git a/server/cmd/main.cpp b/server/cmd/main.cpp index 92ccf8b..60d9fef 100644 --- a/server/cmd/main.cpp +++ b/server/cmd/main.cpp @@ -45,14 +45,10 @@ int main(int argc, const char* argv[]) { std::vector > str_int_tokens2 = cppA2.getTokensNamesWithPosition(); std::vector > str_int_tokens1 = cppA1.getTokensNamesWithPosition(); - for (int i = 0; i < str_int_tokens1.size(); i++){ - std::cout << str_int_tokens1[i].first << " " << str_int_tokens1[i].second << std::endl; - } - //PythonAntlr pyA1 = PythonAntlr(fin3); //PythonAntlr pyA2 = PythonAntlr(fin4); - foundSame.setData2(str_int_tokens1, str_int_tokens2); + foundSame.setData2(str_int_tokens2, str_int_tokens1); // поменял местами токены на вводе std::pair res = foundSame.getTexts2(); std::vector tokens1 = cppA1.getTokensTypes(); diff --git a/server/internal/metrics/src/DiffLibImpl.cpp b/server/internal/metrics/src/DiffLibImpl.cpp index 7ecb00e..3a18d1c 100644 --- a/server/internal/metrics/src/DiffLibImpl.cpp +++ b/server/internal/metrics/src/DiffLibImpl.cpp @@ -173,8 +173,8 @@ std::pair FoundSame::getTexts2() { cases.push_back( {dist[i - 1][j - 1], {"C", r, h} } ); else cases.push_back({dist[i - 1][j - 1] + 1, {"R", r, h}}); - cases.push_back( { dist[i][j-1] + 1, {"D", r, {"#", h.second} } } ); - cases.push_back( { dist[i-1][j] + 1, {"I", {"%", r.second}, h} } ); + cases.push_back( { dist[i][j-1] + 1, {"D", r, {"#", r.second} } } ); + cases.push_back( { dist[i-1][j] + 1, {"I", {"%", h.second}, h} } ); dist[i][j] = cases[0].first; cache[i][j] = cases[0].second; @@ -192,6 +192,14 @@ std::pair FoundSame::getTexts2() { size_t i = n, j = m; while (i != 0 || j != 0){ std::string op = cache[i][j].op; + auto temp = cache[i][j]; + if (temp.token1.second > temp.token2.second) { + temp.token2.second = temp.token1.second; + } + else{ + temp.token1.second = temp.token2.second; + } + cache[i][j] = temp; alignment.push_back(cache[i][j]); if (op == "C" || op == "R"){ i--, j--; @@ -203,6 +211,11 @@ std::pair FoundSame::getTexts2() { } std::reverse(alignment.begin(), alignment.end()); + for (auto & a : alignment){ + std::cout << a.op << " {" << a.token1.first << " " << a.token1.second << "} {" + << a.token2.first << " " << a.token2.second << "}" << std::endl; + } + res_alignment2 = alignment; tokens2text2(); @@ -217,8 +230,10 @@ void FoundSame::tokens2text2() { for (auto & i : res_alignment2){ if (i.token1.second > line){ - res1 += '\n'; - line = i.token1.second; + while(line != i.token1.second){ + res1 += '\n'; + line++; + } } res1 += i.token1.first, res1 += " "; } @@ -231,8 +246,10 @@ void FoundSame::tokens2text2() { res2 += op, res2 += " "; } ops.clear(); - res2 += '\n'; - line = i.token2.second; + while(line < i.token2.second){ + res2+= '\n'; + line++; + } } ops.push_back(i.op); res2 += i.token2.first, res2 += " "; diff --git a/server/internal/metrics/testProgs/cpp/code3.txt b/server/internal/metrics/testProgs/cpp/code3.txt index 4ae8f50..81966bf 100644 --- a/server/internal/metrics/testProgs/cpp/code3.txt +++ b/server/internal/metrics/testProgs/cpp/code3.txt @@ -1,65 +1,12 @@ #include -#include using namespace std; -bool check1(vector s1, int i, int j){ - for (int k = 0; k < s1.size(); k++){ - if (s1[k] != i && s1[k] != j && s1[k] % i == 0 && j % s1[k] == 0){ - return 0; - } +int main() { + int a = 0, n; + cin >> n; + for (int i = 0; i < n; i++){ + a++; + cout << a; } - if (i % 2 == 0) { - i+=1; - i-=1; - } - return 1; -} - -int main(){ - long long n1; - cin >> n1; - vector s2; - for (int k = 1; k <= n1; k++){ - if (n1 % k == 0){ - s2.push_back(k); - } - } - - if (n % 2 == 0) { - n+=1; - n-=1; - } - - vector > ans; - for (int i = 0; i < s2.size(); i++){ - if (n % 2 == 0) { - n+=1; - n-=1; - } - } - for (int j = i + 1; j < s2.size(); j++){ - if (s2[j] % s2[i] == 0 && check1(s2, s2[i], s2[j])){ - ans.push_back({s[i], s[j]}); - } - if (n % 2 == 0) { - n+=1; - n-=1; - } - } - } - cout << "graph {"; - cout << '\n'; - for (int k = 0; k < s2.size(); k++){ - cout << s[k] << endl; - } - if (n % 2 == 0) { - n+=1; - n-=1; - } - for (int i = 0; i < ans.size(); i++){ - cout << ans[i].first << "--" << ans[i].second << endl; - } - cout << "}"; - cout << '\n'; } \ No newline at end of file diff --git a/server/internal/metrics/testProgs/cpp/code4.txt b/server/internal/metrics/testProgs/cpp/code4.txt index 844d2cd..ada154e 100644 --- a/server/internal/metrics/testProgs/cpp/code4.txt +++ b/server/internal/metrics/testProgs/cpp/code4.txt @@ -1,45 +1,18 @@ #include -#include -#include -#include -using namespace std; -const int inf = 1e9; +using namespace std; int main() { - int n, s, f; - cin >> n >> s >> f; - s--; f--; - vector d(n, inf), p(n); - vector u(n); - vector < vector > > g(n); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - int q; - scanf("%d", &q); - if (i > 0) { + int a = 0, n; + cin >> n; - } - } + if (n > 0 || n <= 0){ + n++; + n--; } - d[s] = 0; - for (int i = 0; i < n; ++i) { - int v = -1; - for (int j = 0; j < n; ++j) - if (!u[j] && (v == -1 || d[j] < d[v])) - v = j; - if (d[v] == inf) break; - u[v] = true; - for (auto j : g[v]) { - int to = j.first; - int len = j.second; - if (d[v] + len < d[to]) { - d[to] = d[v] + len; - p[to] = v; - } - } + for (int i = 0; i < n; i++){ + a++; + cout << a; } - cout << (d[f] == inf ? -1 : d[f]) << endl; - return 0; } \ No newline at end of file -- GitLab