ABC302
https://atcoder.jp/contests/abc302/tasks/abc302_b
8方向に隣接する値を確認してから、さらに特定の条件を満たすか探す
code: ruby
h, w = gets.split.map(&:to_i)
arr = Array.new(w+1){ '0' }
h.times { arr << gets.chomp.split('').unshift('0') }
dx = -1, -1, -1, 0, 0, 1, 1, 1
dy = -1, 0, 1, -1, 1, -1, 0, 1
# h方向のindex
(1..h).each { |i|
# w方向のindex
(1..w).each { |j|
# (i, j)の隣接する8方向のindex
8.times { |k|
str = ''
# 縦横斜め方向の5つ連続する値を取得
5.times { |t|
x = i + t * dxk
y = j + t * dyk
# 配列外や負の値はbreak
break if ( x < 0 || x > h || y < 0 || y > w)
str << arrxy
}
if str == 'snuke'
5.times { |t|
x = i + t * dxk
y = j + t * dyk
puts x, y.join(' ')
}
exit
end
}
}
}
#AtCoder #ABC302 #配列