package main import ( "fmt" ) func createArr(nptr *int) *[][]int { arr := make([][]int, (1 << *nptr)) for i := range arr { arr[i] = make([]int, *nptr) } for row := 1; row < len(arr); row++ { copy(arr[row], arr[row-1]) column: for column := range arr[row]{ if arr[row][column] == 0 { arr[row][column] = 1 break column } else { arr[row][column] = 0 } } } return &arr } func konjunktion(arrptr *[][]int) *[4]int { var result [4]int for row := range *arrptr { result[row] = (*arrptr)[row][0]*(*arrptr)[row][1] } return &result } func xor(arrptr *[][]int) *[4]int { var result [4]int for row := range *arrptr { result[row] = ((*arrptr)[row][0]+(*arrptr)[row][1]) % 2 } return &result } func main() { n := 2 arrptr := createArr(&n) fmt.Println(*arrptr) konjunktionptr := konjunktion(arrptr) xorptr := xor(arrptr) fmt.Printf("konjunktion: %d\nxor: %d\n", *konjunktionptr, *xorptr) }