# import array $n = 5 # розміри шахівниці $dx = [2, 1,-1,-2,-2,-1, 1, 2] $dy = [1, 2, 2, 1,-1,-2,-2,-1] $h = Array.new($n*$n) {|j| -1 } # розв'язок def step (x,y,i) if (i == $n*$n) return true; end for k in 0...$dx.length next_x = x + $dx[k] next_y = y + $dy[k] if ((next_x >= 0) and (next_x < $n) and (next_y >= 0) and (next_y < $n)) if ($h[next_x*$n+next_y] == -1) $h[next_x*$n + next_y] = i if step(next_x, next_y, i+1) return true else $h[next_x*$n+next_y] = -1 end end end end return false end $h[0]=0 if (not step(0, 0, 1)) print("Розв'язків немає") else print("Є щонайменше такий розв'язок:\n") for i in 0...$n s="" for j in 0...$n if ($h[i*$n+j]<10) s+=" " else s+=" " end s+=$h[i*$n+j].to_s end print(s+"\n") end end