71 lines
1.5 KiB
Text
71 lines
1.5 KiB
Text
sub sort(tabla())
|
|
local items, i, t1, t2, s
|
|
|
|
items = arraysize(tabla(), 1)
|
|
|
|
repeat
|
|
s = true
|
|
for i = 1 to items-1
|
|
if tabla(i, 1) > tabla(i+1, 1) then
|
|
t1 = tabla(i, 1) : t2 = tabla(i, 2)
|
|
tabla(i, 1) = tabla(i + 1, 1) : tabla(i, 2) = tabla(i + 1, 2)
|
|
tabla(i + 1, 1) = t1 : tabla(i + 1, 2) = t2
|
|
s = false
|
|
end if
|
|
next
|
|
until(s)
|
|
end sub
|
|
|
|
sub normalize(tabla())
|
|
local items, i, t
|
|
|
|
items = arraysize(tabla(), 1)
|
|
|
|
for i = 1 to items
|
|
if tabla(i, 1) > tabla(i, 2) then
|
|
t = tabla(i, 1)
|
|
tabla(i, 1) = tabla(i, 2)
|
|
tabla(i, 2) = t
|
|
end if
|
|
next
|
|
|
|
sort(tabla())
|
|
end sub
|
|
|
|
sub consolidate(tabla())
|
|
local items, i
|
|
|
|
normalize(tabla())
|
|
items = arraysize(tabla(), 1)
|
|
|
|
for i = 1 to items - 1
|
|
if tabla(i + 1, 1) <= tabla(i, 2) then
|
|
tabla(i + 1, 1) = tabla(i, 1)
|
|
if tabla(i + 1, 2) <= tabla(i, 2) then
|
|
tabla(i + 1, 2) = tabla(i, 2)
|
|
end if
|
|
tabla(i, 1) = void : tabla(i, 2) = void
|
|
end if
|
|
next
|
|
end sub
|
|
|
|
// data 1, 1.1, 2.2
|
|
// data 2, 6.1, 7.2, 7.2, 8.3
|
|
// data 2, 4, 3, 2, 1
|
|
// data 4, 4, 3, 2, 1, -1, -2, 3.9, 10
|
|
data 5, 1,3, -6,-1, -4,-5, 8,2, -6,-6
|
|
|
|
void = 10^30
|
|
read items
|
|
|
|
dim tabla(items, 2)
|
|
|
|
for i = 1 to items
|
|
read tabla(i, 1), tabla(i, 2)
|
|
next
|
|
|
|
consolidate(tabla())
|
|
|
|
for i = 1 to items
|
|
if tabla(i, 1) <> void print tabla(i, 1), "..", tabla(i, 2);
|
|
next
|