phase29ad(p0): split pattern6 ok vs contract fixtures

This commit is contained in:
2025-12-28 17:30:34 +09:00
parent 432a8436c7
commit 9c44e990a9
11 changed files with 171 additions and 27 deletions

View File

@ -1,5 +1,5 @@
// Phase 29ac P2: Pattern6 match scan OK minimal
// Expect: find_missing_step("abc", "b") -> 1
// Phase 29ad P0: Pattern6 match scan contract violation
// Expect: JoinIR freeze (step update missing)
static box Main {
find_missing_step(s, ch) {
@ -8,7 +8,6 @@ static box Main {
if s.substring(i, i + 1) == ch {
return i
}
i = i + 1
}
return -1
}

View File

@ -0,0 +1,19 @@
// Phase 29ac P2: Pattern6 match scan OK minimal
// Expect: find_ok("abc", "b") -> 1
static box Main {
find_ok(s, ch) {
local i = 0
loop(i < s.length()) {
if s.substring(i, i + 1) == ch {
return i
}
i = i + 1
}
return -1
}
main() {
return Main.find_ok("abc", "b")
}
}

View File

@ -1,5 +1,5 @@
// Phase 29ac P1: Pattern6 reverse scan OK minimal
// Expect: last_index_bad_step("abc", "b") -> 1
// Phase 29ad P0: Pattern6 reverse scan contract violation
// Expect: JoinIR freeze (reverse step must be i = i - 1)
static box Main {
last_index_bad_step(s, ch) {
@ -8,7 +8,7 @@ static box Main {
if s.substring(i, i + 1) == ch {
return i
}
i = i - 1
i = i - 2
}
return -1
}

View File

@ -0,0 +1,19 @@
// Phase 29ac P1: Pattern6 reverse scan OK minimal
// Expect: last_index_ok("abc", "b") -> 1
static box Main {
last_index_ok(s, ch) {
local i = s.length() - 1
loop(i >= 0) {
if s.substring(i, i + 1) == ch {
return i
}
i = i - 1
}
return -1
}
main() {
return Main.last_index_ok("abc", "b")
}
}