-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
copy を move に直す際にやりすぎてる #154
Comments
|
新しい issue を立てるつもりでしたがここの話と同じような気がしてきたのでここに書きます。 def f(n: int) -> int:
a = 0
b = 1
for _ in range(n):
c = (a + b) % 1000000007
a = b
b = c
return a
def solve(n: int) -> int:
return f(n) 上記のコードを変換した際に、 // ...
int64_t solve(int64_t n_0) {
int64_t x1_4 = 1;
int64_t x1_5 = 0;
for (int32_t i2 = 0; i2 < int32_t(n_0); ++ i2) {
int64_t x6 = jikka::mod::plus(jikka::modmat::floormod<2>(std::array<int64_t, 2>{x1_4, x1_5}, 1000000007)[1], jikka::modmat::floormod<2>(std::array<int64_t, 2>{x1_4, x1_5}, 1000000007)[0], 1000000007);
int64_t x7 = x1_4;
x1_4 = x6;
x1_5 = x7;
}
return x1_5;
}
// ... と正しいコードが得られるのに対し、 コメントアウトしていない 状態だと // ...
int64_t solve(int64_t n_0) {
int64_t x1_4 = 1;
int64_t x1_5 = 0;
for (int32_t i2 = 0; i2 < int32_t(n_0); ++ i2) {
int64_t x6 = jikka::mod::plus(jikka::modmat::floormod<2>(std::array<int64_t, 2>{x1_4, x1_5}, 1000000007)[1], jikka::modmat::floormod<2>(std::array<int64_t, 2>{x1_4, x1_5}, 1000000007)[0], 1000000007);
x1_4 = x6;
x1_5 = x1_4;
}
return x1_5;
}
// ... と正しくないコードが得られることを確認しました。
|
実装方針ミスが発覚したときの顔をしています 😇 |
確かに core 言語で書かれたコードを等価でない cpp に変換してから頑張る、というのはかなり筋が悪そうな気がするので、core を cpp に変換するタイミングで頑張るしかなさそうですね…… 😇 |
MoveSemantics.hs が以下のような C++ について
これを間違えて
に変換してるぽい
Originally posted by @kmyk in #153 (comment)
The text was updated successfully, but these errors were encountered: