24 lines
877 B
Text
24 lines
877 B
Text
middle_three_digits = proc (n: int) returns (string)
|
|
signals (too_small, even_length)
|
|
s: string := int$unparse(int$abs(n))
|
|
if string$size(s) < 3 then signal too_small end
|
|
if string$size(s) // 2 = 0 then signal even_length end
|
|
return(string$substr(s, string$size(s)/2, 3))
|
|
end middle_three_digits
|
|
|
|
start_up = proc ()
|
|
po: stream := stream$primary_output()
|
|
tests: sequence[int] := sequence[int]$
|
|
[123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345,
|
|
1,2,-1,-10,2002,-2002,0]
|
|
|
|
for test: int in sequence[int]$elements(tests) do
|
|
stream$putright(po, int$unparse(test) || ": ", 11)
|
|
|
|
stream$putl(po, middle_three_digits(test))
|
|
except
|
|
when too_small: stream$putl(po, "Too small")
|
|
when even_length: stream$putl(po, "Even length")
|
|
end
|
|
end
|
|
end start_up
|