Open
Description
Hi,
during the development of the solution for the reverse-string
exercise, I noticed that the logs which were printed from within a recursive function did not end up under the right test case in the UI.
I was printing the remaining bytes of the string to see if the recursive function has the right start and end points for the string. The problem appears especially in the later test cases, like in the picture attached.
(module
(import "console" "log_mem_as_utf8" (func $log_mem_as_utf8 (param $byteOffset i32) (param $length i32)))
(memory (export "mem") 1)
(func (export "reverseString") (param $offset i32) (param $length i32) (result i32 i32)
(call $recursion (local.get $offset)(local.get $offset)(local.get $length))
(return (local.get $offset) (local.get $length))
)
(func $recursion (param $offset i32)(param $pointer i32) (param $remaining i32)
;; Store byte
(local $byte i32) (local.set $byte (i32.load8_s(local.get $pointer)))
(call $log_mem_as_utf8 (local.get $offset)(local.get $remaining))
(if (i32.le_u(local.get $remaining)(i32.const 1))
;; Store last byte at offset
(then (i32.store8(local.get $offset)(local.get $byte)))
(else
;; Call recursion if not last byte
(call $recursion
(local.get $offset)
(i32.add(local.get $pointer)(i32.const 1))
(i32.sub(local.get $remaining)(i32.const 1)))
;; Store byte at offset + remaining -1
(i32.store8(i32.add(local.get $offset)(i32.sub(local.get $remaining)(i32.const 1)))(local.get $byte))
)
)
)
)
Metadata
Metadata
Assignees
Labels
No labels