in reply to Is the number before, in or after the interval? using spaceship operator <=>
Output:use constant ST => ('-1', ' =', ' 0', ' =', ' 1'); printf ' ' x 8 . "%s\n", join ' ', map sprintf('%2d', $_), -9 .. 10; while (<DATA>) { my ($l, $r) = split; printf "[%2d %2d] %s\n", $l, $r, join ' ', map { (ST)[ ($_ <=> $l) + ($_ <=> $r) + 2 ] } -9 .. 10; } __DATA__ 1 4 2 5 3 7 0 3 -1 5 -8 -2
I don't see why 0 should not be legal. <=> is not a ternary operator.-9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 [ 1 4] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 = 0 0 = 1 1 1 1 1 1 [ 2 5] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 = 0 0 = 1 1 1 1 1 [ 3 7] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 = 0 0 0 = 1 1 1 [ 0 3] -1 -1 -1 -1 -1 -1 -1 -1 -1 = 0 0 = 1 1 1 1 1 1 1 [-1 5] -1 -1 -1 -1 -1 -1 -1 -1 = 0 0 0 0 0 = 1 1 1 1 1 [-8 -2] -1 = 0 0 0 0 0 = 1 1 1 1 1 1 1 1 1 1 1 1
|
|---|