f=->s{
r=s.dup
l=s.index(?\n)+1
(0...s.size).map{|i|
s[i]<?0||r[i]=r[i]<?1??.:[i-1,i+1,i-l,i+l].map{|n|n<0??0:s[n]||?0}.max>r[i]??-:s[i]}
r}


require 'minitest/autorun'

describe '#f' do
  it 'passes test case #1' do
    f[
'898778765432100
787667654321100
677656543211210
678765432112321
567654321123210']
.must_equal \
'-9---8-------..
-------------..
--------------.
--8---------3--
-----------3--.'
  end

  it 'passes test case #2' do
    f[
'7898
8787
7676
6565']
.must_equal \
'--9-
8---
----
----'
  end

  it 'passes test case #3' do
    f[
'00001
00000
00000
10000']
.must_equal \
'....1
.....
.....
1....'
  end

  it 'passes test case #4' do
    f[
'34565432100100000000
45676543210000000000
56787654321000000110
45676543210000001221
34565432100000012321
23454321000000123432
12343210000001234543
01232100000012345654
00121000000011234543
00010000000121123432']
.must_equal \
'---------..1........
----------..........
---8-------......--.
----------......--2-
---------......-----
--------......------
-------......-------
.-----......-----6--
..---.......--------
...-.......-2-------'
  end
end