package core import ( "errors" "fmt" "go-nkode/util" ) func SelectKeyByAttrIdx(interfaceUser []int, passcodeIdxs []int, keypadSize KeypadDimension) ([]int, error) { selectedKeys := make([]int, len(passcodeIdxs)) for idx := range passcodeIdxs { attrIdx := util.IndexOf[int](interfaceUser, passcodeIdxs[idx]) if attrIdx == -1 { return nil, errors.New(fmt.Sprintf("index: %d out of range 0-%d", passcodeIdxs[idx], keypadSize.TotalAttrs()-1)) } keyNumb := attrIdx / keypadSize.AttrsPerKey if keyNumb >= keypadSize.NumbOfKeys { return nil, errors.New(fmt.Sprintf("index key number: %d out of range 0-%d", keyNumb, keypadSize.NumbOfKeys-1)) } selectedKeys[idx] = keyNumb } return selectedKeys, nil }