Jump to content

Averages/Median: Difference between revisions

(add task to aarch64 assembly raspberry pi)
Line 2,208:
(defun median (list predicate)
(select-nth (floor (length list) 2) list predicate))</syntaxhighlight>
 
=={{header|Craft Basic}}==
<syntaxhighlight lang="basic">define limit = 10, iterations = 6
define iteration, size, middle, next
define point, top, high, low, pivot
 
dim list[limit]
dim stack[limit]
 
for iteration = 1 to iterations
 
gosub fill
gosub median
 
next iteration
 
end
 
sub fill
 
print "list: ",
 
erasearray list
 
let size = int(rnd * limit) + 1
 
if size <= 2 then
 
let size = 3
 
endif
 
for i = 0 to size - 1
 
let list[i] = rnd * 1000 + rnd
print list[i],
 
gosub printcomma
 
next i
 
return
 
sub median
 
gosub sort
 
print newline, "size: ", size, tab,
 
let middle = int((size - 1)/ 2)
print "middle: ", middle + 1, tab,
 
if size mod 2 then
 
print "median: ", list[middle]
 
else
 
let next = middle + 1
print "median: ", (list[middle] + list[next]) / 2
 
endif
 
print
 
return
 
sub sort
 
let low = 0
let high = size - 1
let top = -1
 
let top = top + 1
let stack[top] = low
let top = top + 1
let stack[top] = high
do
 
if top < 0 then
 
break
 
endif
 
let high = stack[top]
let top = top - 1
let low = stack[top]
let top = top - 1
 
let i = low - 1
for j = low to high - 1
 
if list[j] <= list[high] then
 
let i = i + 1
let t = list[i]
let list[i] = list[j]
let list[j] = t
 
endif
 
next j
 
let point = i + 1
let t = list[point]
let list[point] = list[high]
let list[high] = t
let pivot = i + 1
 
if pivot - 1 > low then
 
let top = top + 1
let stack[top] = low
let top = top + 1
let stack[top] = pivot - 1
 
endif
if pivot + 1 < high then
 
let top = top + 1
let stack[top] = pivot + 1
let top = top + 1
let stack[top] = high
 
endif
 
wait
 
loop top >= 0
 
print newline, "sorted: ",
 
for i = 0 to size - 1
 
print list[i],
gosub printcomma
 
next i
 
return
 
sub printcomma
 
if i < size - 1 then
 
print comma, " ",
 
endif
 
return</syntaxhighlight>
{{out| Output}}
<pre>
list: 290.66, 870.46, 880.86
sorted: 290.66, 870.46, 880.86
size: 3 middle: 2 median: 870.46
 
list: 910.91, 50.79, 790.58, 960.61
sorted: 50.79, 790.58, 910.91, 960.61
size: 4 middle: 2 median: 850.74
 
list: 570.31, 500.16, 490.97, 370.48, 240.18, 880.23, 190.61, 950.19
sorted: 190.61, 240.18, 370.48, 490.97, 500.16, 570.31, 880.23, 950.19
size: 8 middle: 4 median: 495.57
 
list: 120.87, 570.87, 570.85, 800.27, 200.04, 250.09, 870.04, 200.58, 800.61
sorted: 120.87, 200.04, 200.58, 250.09, 570.85, 570.87, 800.27, 800.61, 870.04
size: 9 middle: 5 median: 570.85
 
list: 810.33, 760.55, 420.22, 730.64, 350.96
sorted: 350.96, 420.22, 730.64, 760.55, 810.33
size: 5 middle: 3 median: 730.64
 
list: 40.12, 860.77, 960.29, 920.13
sorted: 40.12, 860.77, 920.13, 960.29
size: 4 middle: 2 median: 890.45
</pre>
 
=={{header|Crystal}}==
305

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.