aboutsummaryrefslogtreecommitdiff
path: root/src/table.h
blob: 9f0ec63b69ec10af534f92e31a5d5ede706d6298 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "lua.h"
#include "util.h"

#define i_swap(A,B) double temp = A; A = B; B = temp;

int l_len(lua_State*);          //[double+int] -> i
int l_reverse(lua_State*);      //[double+int] -> arr[N]
int l_greatest(lua_State*);     //[double+int] -> i
int l_least(lua_State*);        //[double+int] -> i
int l_shuffle(lua_State*);      //[double+int] -> arr[N]

//comparison sorts
int l_quicksort(lua_State*);    //[double+int] -> arr[N] (greatest -> least)
int l_mergesort(lua_State*);    //[double+int] -> arr[N] (greatest -> least) 
int l_shellsort(lua_State*);    //[double+int] -> arr[N] (greatest -> least)
int l_bubblesort(lua_State*);   //[double+int] -> arr[N] (greatest -> least)
int l_heapsort(lua_State*);     //[double+int] -> arr[N] (greatest -> least)

//non-comparison sorts
int l_countingsort(lua_State*); //[int], arr[N] >= 0 -> arr[N] (greatest -> least)

//esoteric sorts
int l_miraclesort(lua_State*);  //[double+int] -> arr[-∞<=N<=∞] (greatest -> least)
int l_stalinsort(lua_State*);   //[double+int] -> arr[?<=N] (greatest -> least)
int l_slowsort(lua_State*);     //[double+int] -> arr[N] (greatest -> least)
int l_bogosort(lua_State*);     //[double+int] -> arr[N] (greatest -> least)


static const luaL_Reg array_function_list [] = {
      {"len",l_len},
      {"reverse",l_reverse},
      {"greatest",l_greatest},
      {"least",l_least},
      {"shuffle",l_shuffle},

      {"quicksort",l_quicksort},
      {"mergesort",l_mergesort},
      {"shellsort",l_shellsort},
      {"bubblesort",l_bubblesort},
      {"heapsort",l_heapsort},

      {"countingsort",l_countingsort},

      {"miraclesort",l_miraclesort},
      {"stalinsort",l_stalinsort},
      {"slowsort",l_slowsort},
      {"bogosort",l_bogosort},

      {NULL,NULL}
};