clean up answer

This commit is contained in:
Nico 2021-12-01 19:47:19 +00:00
parent 09a3b8a955
commit ed1870640c
1 changed files with 7 additions and 5 deletions

View File

@ -16,7 +16,10 @@ Prev is defined as being 9999, larger than any of the values in the file, so the
then loop through the file counting up. Retro has a nice word, for-each-line, that does the looping.
~~~
'input1 [ s:to-number dup @prev gt? [ &count v:inc ] if !prev &lines v:inc ] file:for-each-line
'input1 [ s:to-number dup
@prev gt? [ &count v:inc ] if
!prev
&lines v:inc ] file:for-each-line
@count n:put ASCII:LF c:put
~~~
@ -33,15 +36,14 @@ part 2 is a bit harder as we can't just iterate through the file like part 1 as
then, for each line in the file, we need to read that line and the next 2 lines, then seek back to the line straight after it. The only way I could think to do this is counting the amount of bytes we seek forward (using the length of the lines read) and then seeking that many bytes back, which is a bit of a pain. This is a terrible solution. This loop reads the 3 lines out of the file, adds up the values, and then uses the same logic as part 1 to find upwards changes from the previous window.
I'm not happy with this solution, but it works. Retro users, help me get better!
I'm not happy with this solution, but it works. Retro users, help me get better!
~~~
'seek-to var
@lines #2 - [
@f file:read-line dup s:length #1 + &seek-to v:inc-by s:to-number
@f file:read-line s:to-number
@f file:read-line s:to-number + +
#02 [ @f file:read-line s:to-number ] times
+ +
dup @prev gt? [ &count v:inc ] if !prev
@seek-to @f file:seek ] times