Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,22 @@
|
|||
import math
|
||||
randomize()
|
||||
|
||||
proc shuffle[T](x: var openarray[T]) =
|
||||
for i in countdown(x.high, 0):
|
||||
let j = random(i + 1)
|
||||
swap(x[i], x[j])
|
||||
|
||||
proc isSorted[T](s: openarray[T]): bool =
|
||||
var last = low(T)
|
||||
for c in s:
|
||||
if c < last:
|
||||
return false
|
||||
last = c
|
||||
return true
|
||||
|
||||
proc bogoSort[T](a: var openarray[T]) =
|
||||
while not isSorted a: shuffle a
|
||||
|
||||
var a = @[4, 65, 2, -31, 0, 99, 2, 83, 782]
|
||||
bogoSort a
|
||||
echo a
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
function inOrder(sequence s)
|
||||
return s==sort(s) -- <snigger>
|
||||
end function
|
||||
|
||||
function bogosort(sequence s)
|
||||
while not inOrder(s) do
|
||||
? s
|
||||
s = shuffle(s)
|
||||
end while
|
||||
return s
|
||||
end function
|
||||
|
||||
? bogosort(shuffle({1,2,3,4,5,6}))
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
func in_order(a) {
|
||||
return true if (a.len <= 1);
|
||||
var first = a[0];
|
||||
a.ft(1).all { |elem| first <= elem ? do { first = elem; true } : false }
|
||||
}
|
||||
|
||||
func bogosort(a) {
|
||||
a.shuffle! while !in_order(a);
|
||||
return a;
|
||||
}
|
||||
|
||||
var arr = 5.of{ 100.rand.int };
|
||||
say "Before: #{arr}";
|
||||
say "After: #{bogosort(arr)}";
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import Darwin
|
||||
|
||||
func shuffle<T>(inout array: [T]) {
|
||||
for i in 1..<array.count {
|
||||
let j = Int(arc4random_uniform(UInt32(i)))
|
||||
(array[i], array[j]) = (array[j], array[i])
|
||||
}
|
||||
}
|
||||
|
||||
func issorted<T:Comparable>(ary: [T]) -> Bool {
|
||||
for i in 0..<(ary.count-1) {
|
||||
if ary[i] > ary[i+1] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func bogosort<T:Comparable>(inout ary: [T]) {
|
||||
while !issorted(ary) {
|
||||
shuffle(&ary)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue