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
Zj0tPnN7CnI9cy5kdXAKbD1zLmluZGV4KD9cbikrMQooMC4uLnMuc2l6ZSkubWFwe3xpfApzW2ldPD8wfHxyW2ldPXJbaV08PzE/Py46W2ktMSxpKzEsaS1sLGkrbF0ubWFwe3xufG48MD8/MDpzW25dfHw/MH0ubWF4PnJbaV0/Py06c1tpXX0Kcn0KCgpyZXF1aXJlICdtaW5pdGVzdC9hdXRvcnVuJwoKZGVzY3JpYmUgJyNmJyBkbwogIGl0ICdwYXNzZXMgdGVzdCBjYXNlICMxJyBkbwogICAgZlsKJzg5ODc3ODc2NTQzMjEwMAo3ODc2Njc2NTQzMjExMDAKNjc3NjU2NTQzMjExMjEwCjY3ODc2NTQzMjExMjMyMQo1Njc2NTQzMjExMjMyMTAnXQoubXVzdF9lcXVhbCBcCictOS0tLTgtLS0tLS0tLi4KLS0tLS0tLS0tLS0tLS4uCi0tLS0tLS0tLS0tLS0tLgotLTgtLS0tLS0tLS0zLS0KLS0tLS0tLS0tLS0zLS0uJwogIGVuZAoKICBpdCAncGFzc2VzIHRlc3QgY2FzZSAjMicgZG8KICAgIGZbCic3ODk4Cjg3ODcKNzY3Ngo2NTY1J10KLm11c3RfZXF1YWwgXAonLS05LQo4LS0tCi0tLS0KLS0tLScKICBlbmQKCiAgaXQgJ3Bhc3NlcyB0ZXN0IGNhc2UgIzMnIGRvCiAgICBmWwonMDAwMDEKMDAwMDAKMDAwMDAKMTAwMDAnXQoubXVzdF9lcXVhbCBcCicuLi4uMQouLi4uLgouLi4uLgoxLi4uLicKICBlbmQKCiAgaXQgJ3Bhc3NlcyB0ZXN0IGNhc2UgIzQnIGRvCiAgICBmWwonMzQ1NjU0MzIxMDAxMDAwMDAwMDAKNDU2NzY1NDMyMTAwMDAwMDAwMDAKNTY3ODc2NTQzMjEwMDAwMDAxMTAKNDU2NzY1NDMyMTAwMDAwMDEyMjEKMzQ1NjU0MzIxMDAwMDAwMTIzMjEKMjM0NTQzMjEwMDAwMDAxMjM0MzIKMTIzNDMyMTAwMDAwMDEyMzQ1NDMKMDEyMzIxMDAwMDAwMTIzNDU2NTQKMDAxMjEwMDAwMDAwMTEyMzQ1NDMKMDAwMTAwMDAwMDAxMjExMjM0MzInXQoubXVzdF9lcXVhbCBcCictLS0tLS0tLS0uLjEuLi4uLi4uLgotLS0tLS0tLS0tLi4uLi4uLi4uLgotLS04LS0tLS0tLS4uLi4uLi0tLgotLS0tLS0tLS0tLi4uLi4uLS0yLQotLS0tLS0tLS0uLi4uLi4tLS0tLQotLS0tLS0tLS4uLi4uLi0tLS0tLQotLS0tLS0tLi4uLi4uLS0tLS0tLQouLS0tLS0uLi4uLi4tLS0tLTYtLQouLi0tLS4uLi4uLi4tLS0tLS0tLQouLi4tLi4uLi4uLi0yLS0tLS0tLScKICBlbmQKZW5k