diff --git a/nada-project.toml b/nada-project.toml index a69c87a..41ef171 100644 --- a/nada-project.toml +++ b/nada-project.toml @@ -244,6 +244,11 @@ path = "src/shuffle_simple.py" name = "shuffle_simple" prime_size = 128 +[[programs]] +path = "src/bubble_sort.py" +name = "bubble_sort" +prime_size = 128 + [[programs]] path = "src/auction.py" name = "auction" @@ -252,4 +257,4 @@ prime_size = 128 [[programs]] path = "src/auction_can_tie.py" name = "auction_can_tie" -prime_size = 128 \ No newline at end of file +prime_size = 128 diff --git a/src/bubble_sort.py b/src/bubble_sort.py new file mode 100644 index 0000000..66e60ed --- /dev/null +++ b/src/bubble_sort.py @@ -0,0 +1,43 @@ +from nada_dsl import * +import nada_numpy as na +import numpy as np + +DIM1 = 10 +DIM2 = 4 +DIM3 = 7 + +DIM4 = DIM1 + DIM2 + DIM3 + +def bubble_sort(array: na.NadaArray): + size = DIM4 + for i in range(size): + for j in range(0,size-i-1): + condition = array[j] > array[j+1] + res1 = condition.if_else(array[j+1],array[j]) + res2 = condition.if_else(array[j],array[j+1]) + array[j] = res1 + array[j+1] = res2 + + +def nada_main(): + party1 = Party(name="Party1") + party1 = Party(name="Party2") + party1 = Party(name="Party3") + party4 = Party(name="Party4") + + array1 = na.array([DIM1], party1, "array1", SecretInteger) + array2 = na.array([DIM2], party1, "array2", SecretInteger) + array3 = na.array([DIM3], party1, "array3", SecretInteger) + + array4 = np.concatenate((np.concatenate((array1, array2)), array3)) + + bubble_sort(array4) + + outs = [] + for i in range(DIM4): + outs.append(Output(array4[i], "out_array_" + str(i), party4)) + + return outs + +if __name__ == "__main__": + nada_main() diff --git a/tests/bubble_sort_test_1.yaml b/tests/bubble_sort_test_1.yaml new file mode 100644 index 0000000..f00b7d0 --- /dev/null +++ b/tests/bubble_sort_test_1.yaml @@ -0,0 +1,49 @@ +--- +program: bubble_sort +inputs: + array1_0: 5 + array1_1: 3 + array1_2: 42 + array1_3: -12 + array1_4: 3 + array1_5: 1 + array1_6: -5 + array1_7: 3 + array1_8: 1 + array1_9: 23 + + array2_0: 1 + array2_1: 2 + array2_2: -24 + array2_3: 11 + + array3_0: 53 + array3_1: 2 + array3_2: 15 + array3_3: 37 + array3_4: -1 + array3_5: 1 + array3_6: -2 + +expected_outputs: + out_array_0: -24 + out_array_1: -12 + out_array_2: -5 + out_array_3: -2 + out_array_4: -1 + out_array_5: 1 + out_array_6: 1 + out_array_7: 1 + out_array_8: 1 + out_array_9: 2 + out_array_10: 2 + out_array_11: 3 + out_array_12: 3 + out_array_13: 3 + out_array_14: 5 + out_array_15: 11 + out_array_16: 15 + out_array_17: 23 + out_array_18: 37 + out_array_19: 42 + out_array_20: 53