diff options
| author | Derick Huth <derickhuth@gmail.com> | 2015-09-24 12:22:41 -0600 | 
|---|---|---|
| committer | Derick Huth <derickhuth@gmail.com> | 2015-09-24 12:22:41 -0600 | 
| commit | 4631ad76927d433da5d55c3c373a1dfd0f74c9d4 (patch) | |
| tree | f8dcba88576ec95e403f0c14efd80e970f30a260 /test-chill/unit-tests/cprog | |
| parent | 6eb2b89896da66a77d0dcdf2d72b98c122826949 (diff) | |
| parent | 0cff3f9a3c4ccd434900162ebef4bd814850f481 (diff) | |
| download | chill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.tar.gz chill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.tar.bz2 chill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.zip | |
Merge pull request #7 from dhuth/master
V0.2.1
Diffstat (limited to 'test-chill/unit-tests/cprog')
| -rw-r--r-- | test-chill/unit-tests/cprog/Makefile | 17 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/MergeSorter.cc | 77 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/MergeSorter.h | 14 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/QuickSorter.cc | 83 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/QuickSorter.h | 14 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/Sorter.cc | 8 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/Sorter.h | 16 | ||||
| -rw-r--r-- | test-chill/unit-tests/cprog/main.cc | 45 | 
8 files changed, 0 insertions, 274 deletions
| diff --git a/test-chill/unit-tests/cprog/Makefile b/test-chill/unit-tests/cprog/Makefile deleted file mode 100644 index f5f2608..0000000 --- a/test-chill/unit-tests/cprog/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -OBJS = $(patsubst %.cc, %.o, $(wildcard *.cc)) - -.PHONY: all -all: sorter - -$(OBJS): %.o: %.cc -	g++ -g -fprofile-arcs -ftest-coverage -c $< -o $@ - -.PHONY: sorter -sorter: $(OBJS) -	g++ -g -fprofile-arcs -ftest-coverage -o bin/sorter $(OBJS) - -.PHONY: clean -clean: -	rm -f *.o -	rm -f *.gcno *.gcda *.gcov -	rm -f bin/sorter diff --git a/test-chill/unit-tests/cprog/MergeSorter.cc b/test-chill/unit-tests/cprog/MergeSorter.cc deleted file mode 100644 index 6e747a3..0000000 --- a/test-chill/unit-tests/cprog/MergeSorter.cc +++ /dev/null @@ -1,77 +0,0 @@ -#include "MergeSorter.h" - -/* Python -def msort(lst, start, end, pindent = 0): -    if start == end: -        return -    center = start + ((end - start) // 2) -    print(' '*pindent + "SPLIT {}|{}".format(lst[start:center+1], lst[center+1:end+1])) -    msort(lst, start, center, pindent+1) -    msort(lst, center+1, end, pindent+1) -    left = list(lst[start:center+1]) -    right = list(lst[center+1:end+1]) -    print(' '*pindent + "MERGE {}|{}".format(lst[start:center+1], lst[center+1:end+1])) -    i,j = 0, 0 -    for k in range(start, end+1): -        if i >= len(left): -            lst[k] = right[j] -            j += 1 -            print(' '*(pindent+1) + 'pull j: {} {} {}'.format(lst[start:k+1], left[i:], right[j:])) -        elif j >= len(right): -            lst[k] = left[i] -            i += 1 -            print(' '*(pindent+1) + 'pull i: {} {} {}'.format(lst[start:k+1], left[i:], right[j:])) -        elif left[i] > right[j]: -            lst[k] = right[j] -            j += 1 -            print(' '*(pindent+1) + 'pull j: {} {} {}'.format(lst[start:k+1], left[i:], right[j:])) -        else: -            lst[k] = left[i] -            i += 1 -            print(' '*(pindent+1) + 'pull i: {} {} {}'.format(lst[start:k+1], left[i:], right[j:])) -    print(' '*pindent + "-- {}".format(lst[start:end+1])) -         - -if __name__ == '__main__': -    import random as r -    x = [int(r.random()*12) for i in range(7)] -    print(x) -    msort(x, 0, len(x)-1) -    print(x) -*/ - -static void mergesort(std::vector<int>& lst, int start, int end) { -    if(start == end) return; -    int center = start + (end-start)/2; -    mergesort(lst, start, center); -    mergesort(lst, center+1, end); -    std::vector<int> left = std::vector<int>(lst.begin()+start, lst.begin()+(center+1)); -    std::vector<int> right = std::vector<int>(lst.begin()+(center+1),lst.begin()+(end+1)); -    int i = 0; -    int j = 0; -    for(int k = start; k < (end+1); k++) { -        if (i >= left.size()) { -            lst[k] = right[j++]; -        } -        else if(j >= right.size()) { -            lst[k] = left[i++]; -        } -        else if(left[i] > right[j]) { -            lst[k] = right[j++]; -        } -        else { -            lst[k] = left[i++]; -        } -    } -} - -MergeSorter::MergeSorter() { -    this->name = std::string("mergesort"); -} - -MergeSorter::~MergeSorter() { -} - -void MergeSorter::sort(std::vector<int>& list) const { -    mergesort(list, 0, list.size()-1); -} diff --git a/test-chill/unit-tests/cprog/MergeSorter.h b/test-chill/unit-tests/cprog/MergeSorter.h deleted file mode 100644 index e2ed391..0000000 --- a/test-chill/unit-tests/cprog/MergeSorter.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef MERGE_SORTER_H -#define MERGE_SORTER_H - -#include <vector> -#include "Sorter.h" - -class MergeSorter : public Sorter { -public: -    MergeSorter(); -    virtual ~MergeSorter(); -    virtual void sort(std::vector<int>& list) const; -}; - -#endif diff --git a/test-chill/unit-tests/cprog/QuickSorter.cc b/test-chill/unit-tests/cprog/QuickSorter.cc deleted file mode 100644 index 3ade346..0000000 --- a/test-chill/unit-tests/cprog/QuickSorter.cc +++ /dev/null @@ -1,83 +0,0 @@ -#include "QuickSorter.h" - -/* Python - -def swap(l, i, k): -    v = l[i] -    l[i] = l[k] -    l[k] = v -    print(str(l)) - -def partition(l, start, end): -    print("PARTITION {} [{}:{}]".format(l, start, end)) -    p_value = l[end] -    p_index = end-1 -     -    for i in range(start, end): -        while(i < p_index and l[i] >= p_value): -            swap(l, i, p_index) -            p_index -= 1 -        while(i >= p_index and l[i] < p_value): -            swap(l, i, p_index) -            p_index += 1 -    swap(l, p_index, end) -    print("DONE {}|[{}]|{}:{}".format(l[start:p_index], l[p_index], l[p_index+1:end+1], p_value)) -    return p_index - -def qsort(l, i, k): -    if i < k: -        p = partition(l, i, k) -        qsort(l,i,p-1) -        qsort(l,p+1,k) - -if __name__ == "__main__": -    import random as r -    x = [int(r.random()*12) for i in range(12)] -    print(x) -    qsort(x, 0, len(x)-1) -    print(x) -     -*/ - -static void swap(std::vector<int>& list, int i, int k) { -    int v = list[i]; -    list[i] = list[k]; -    list[k] = v; -} - -static int partition(std::vector<int>& list, int i, int k) { -    int pivot_value = list[k]; -    int pivot_index = k - 1; -     -    for(int index = i; index < k; index++) { -        while((index < pivot_index) && (list[index] >= pivot_value)) { -            swap(list, index, pivot_index); -            pivot_index--; -        } -        while((index >= pivot_index) && (list[index] < pivot_value)) { -            swap(list, index, pivot_index); -            pivot_index++; -        } -    } -    swap(list, pivot_index, k); -    return pivot_index; -} - -static void quicksort(std::vector<int>& list, int i, int k) { -    if(i < k) { -        int p = partition(list, i, k); -        quicksort(list, i, p-1); -        quicksort(list, p+1, k); -    } -} - -QuickSorter::QuickSorter() { -    this->name = std::string("quicksort"); -} - -QuickSorter::~QuickSorter() { -} - -void QuickSorter::sort(std::vector<int>& list) const { -    quicksort(list, 0, list.size()-1); -} diff --git a/test-chill/unit-tests/cprog/QuickSorter.h b/test-chill/unit-tests/cprog/QuickSorter.h deleted file mode 100644 index 81919dd..0000000 --- a/test-chill/unit-tests/cprog/QuickSorter.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef QUICK_SORTER_H -#define QUICK_SORTER_H - -#include <vector> -#include "Sorter.h" - -class QuickSorter : public Sorter { -public: -    QuickSorter(); -    virtual ~QuickSorter(); -    virtual void sort(std::vector<int>& list) const; -}; - -#endif diff --git a/test-chill/unit-tests/cprog/Sorter.cc b/test-chill/unit-tests/cprog/Sorter.cc deleted file mode 100644 index a1ae5ec..0000000 --- a/test-chill/unit-tests/cprog/Sorter.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include "Sorter.h" - -Sorter::Sorter() { -} - -Sorter::~Sorter() { -} - diff --git a/test-chill/unit-tests/cprog/Sorter.h b/test-chill/unit-tests/cprog/Sorter.h deleted file mode 100644 index abf8f82..0000000 --- a/test-chill/unit-tests/cprog/Sorter.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SORTER_H -#define SORTER_H - -#include <string> -#include <vector> - -class Sorter { -public: -    Sorter(); -    virtual ~Sorter(); -     -    std::string name; -    virtual void sort(std::vector<int>& list) const = 0; -}; - -#endif diff --git a/test-chill/unit-tests/cprog/main.cc b/test-chill/unit-tests/cprog/main.cc deleted file mode 100644 index 3fe960b..0000000 --- a/test-chill/unit-tests/cprog/main.cc +++ /dev/null @@ -1,45 +0,0 @@ -#include <cstdio> -#include <cstdlib> -#include <map> -#include <string> -#include <vector> - -#include "Sorter.h" -#include "QuickSorter.h" -#include "MergeSorter.h" -//#include "InsertionSorter.h" -//#include "ShellSorter.h" - -void read_vector(std::vector<int>& vec, int start, int stop, char** argv) { -    for(int i = start; i < stop; i++) { -        vec.push_back((int)strtol(argv[i],NULL,0)); -    } -} - -void print_vector(std::vector<int>& vec) { -    printf("["); -    for(std::vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++) { -        printf(" %d ", *iter); -    } -    printf("]\n"); -} - -void addsorter(std::map<std::string, Sorter*>& m, Sorter* s) { -    m[s->name] = s; -} - -int main(int argc, char** argv) { -    std::map<std::string, Sorter*> sorter_map; -    std::vector<int> vec; -     -    read_vector(vec, 2, argc, argv); -    print_vector(vec); -     -    addsorter(sorter_map, new QuickSorter()); -    addsorter(sorter_map, new MergeSorter()); -    //addsorter(sorter_map, new InsertionSorter()); -    //addsorter(sorter_map, new ShellSorter()); -    sorter_map[std::string(argv[1])]->sort(vec); -    print_vector(vec); -} - | 
