diff --git a/gklearn/model_learning/parameters.py b/gklearn/model_learning/parameters.py new file mode 100644 index 0000000..b4c1d04 --- /dev/null +++ b/gklearn/model_learning/parameters.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Fri May 21 12:18:02 2021 + +@author: ljia +""" + +def dichotomous_permutation(arr, layer=0): + import math + +# def seperate_arr(arr, new_arr): +# if (length % 2) == 0: +# half = int(length / 2) +# new_arr += [arr[half - 1], arr[half]] +# subarr1 = [arr[i] for i in range(1, half - 1)] +# else: +# half = math.floor(length / 2) +# new_arr.append(arr[half]) +# subarr1 = [arr[i] for i in range(1, half)] +# subarr2 = [arr[i] for i in range(half + 1, length - 1)] +# subarrs = [subarr1, subarr2] +# return subarrs + + + if layer == 0: + length = len(arr) + if length <= 2: + return arr + + new_arr = [arr[0], arr[-1]] + if (length % 2) == 0: + half = int(length / 2) + new_arr += [arr[half - 1], arr[half]] + subarr1 = [arr[i] for i in range(1, half - 1)] + else: + half = math.floor(length / 2) + new_arr.append(arr[half]) + subarr1 = [arr[i] for i in range(1, half)] + subarr2 = [arr[i] for i in range(half + 1, length - 1)] + subarrs = [subarr1, subarr2] +# subarrs = seperate_arr(arr, new_arr) + new_arr += dichotomous_permutation(subarrs, layer=layer+1) + + else: + new_arr = [] + subarrs = [] + for a in arr: + length = len(a) + if length <= 2: + new_arr += a + else: +# subarrs += seperate_arr(a, new_arr) + if (length % 2) == 0: + half = int(length / 2) + new_arr += [a[half - 1], a[half]] + subarr1 = [a[i] for i in range(0, half - 1)] + else: + half = math.floor(length / 2) + new_arr.append(a[half]) + subarr1 = [a[i] for i in range(0, half)] + subarr2 = [a[i] for i in range(half + 1, length)] + subarrs += [subarr1, subarr2] + + if len(subarrs) > 0: + new_arr += dichotomous_permutation(subarrs, layer=layer+1) + + return new_arr + +# length = len(arr) +# if length <= 2: +# return arr + +# new_arr = [arr[0], arr[-1]] +# if (length % 2) == 0: +# half = int(length / 2) +# new_arr += [arr[half - 1], arr[half]] +# subarr1 = [arr[i] for i in range(1, half - 1)] +# else: +# half = math.floor(length / 2) +# new_arr.append(arr[half]) +# subarr1 = [arr[i] for i in range(1, half)] +# subarr2 = [arr[i] for i in range(half + 1, length - 1)] +# if len(subarr1) > 0: +# new_arr += dichotomous_permutation(subarr1) +# if len(subarr2) > 0: +# new_arr += dichotomous_permutation(subarr2) + +# return new_arr \ No newline at end of file