typePersonPositionstruct{xAxisintyAxisint}funcGenerateWalk(minutesint)([]string,error){personPosition:=PersonPosition{0,0}varwalkingRoute[]stringifminutes%2!=0{returnwalkingRoute,errors.New("Minutes must be even number, otherwise you can't end on starting point")}rand.Seed(time.Now().UnixNano())directions:=[]string{"n","s","e","w"}fori:=0;i<minutes;i++{personYAxis:=personPosition.yAxispersonXAxis:=personPosition.xAxisdistanceFromHome:=abs(personYAxis)+abs(personXAxis)timeToGoHome:=minutes-iifpersonYAxis>=0&&timeToGoHome==distanceFromHome{directions=removeItemFromArray(directions,"n")}ifpersonYAxis<=0&&timeToGoHome==distanceFromHome{directions=removeItemFromArray(directions,"s")}ifpersonXAxis>=0&&timeToGoHome==distanceFromHome{directions=removeItemFromArray(directions,"e")}ifpersonXAxis<=0&&timeToGoHome==distanceFromHome{directions=removeItemFromArray(directions,"w")}direction:=rand.Intn(len(directions))route:=directions[direction]walkingRoute=append(walkingRoute,route)switchroute{case"n":personPosition.yAxis+=1case"s":personPosition.yAxis-=1case"e":personPosition.xAxis+=1case"w":personPosition.xAxis-=1}}returnwalkingRoute,nil}funcremoveItemFromArray(array[]string,itemstring)[]string{fori,v:=rangearray{ifv==item{returnappend(array[:i],array[i+1:]...)}}returnarray}funcabs(xint)int{ifx<0{return-x}returnx}
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Discussion on: Daily Challenge #5 - Ten Minute Walk
For further actions, you may consider blocking this person and/or reporting abuse