Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
* Library for random()
|
||||
-include 'Random.sno'
|
||||
|
||||
* # String -> array
|
||||
define('s2a(str,n)i') :(s2a_end)
|
||||
s2a s2a = array(n); str = str ' '
|
||||
sa1 str break(' ') . s2a<i = i + 1> span(' ') = :s(sa1)f(return)
|
||||
s2a_end
|
||||
|
||||
* # Array -> string
|
||||
define('a2s(a)i') :(a2s_end)
|
||||
a2s a2s = a2s a<i = i + 1> ' ' :s(a2s)f(return)
|
||||
a2s_end
|
||||
|
||||
* # Knuth shuffle in-place
|
||||
define('shuffle(a)alen,n,k,tmp') :(shuffle_end)
|
||||
shuffle n = alen = prototype(a);
|
||||
sh1 k = convert(random() * alen,'integer') + 1
|
||||
eq(a<n>,a<k>) :s(sh2)
|
||||
tmp = a<n>; a<n> = a<k>; a<k> = tmp
|
||||
sh2 n = gt(n,1) n - 1 :s(sh1)
|
||||
shuffle = a :(return)
|
||||
shuffle_end
|
||||
|
||||
* # sorted( ) predicate -> Succeed/Fail
|
||||
define('sorted(a)alen,i') :(sorted_end)
|
||||
sorted alen = prototype(a); i = 1
|
||||
std1 i = lt(i,alen) i + 1 :f(return)
|
||||
gt(a<i - 1>,a<i>) :s(freturn)f(std1)
|
||||
sorted_end
|
||||
|
||||
* # Bogosort
|
||||
define('bogo(a)') :(bogo_end)
|
||||
bogo output = (i = i + 1) ': ' a2s(a)
|
||||
bogo = sorted(a) a :s(return)
|
||||
shuffle(a) :(bogo)
|
||||
bogo_end
|
||||
|
||||
* # Test and display
|
||||
bogo(s2a('5 4 3 2 1',5))
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue