Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

jfen

H × W の盤面で遊ぶ一人用ゲームがある．このゲームはそれぞれのセルに 0 か 1 個のボールがあるのでそれを移動させるゲームである．あなたはこのゲームで遊んでいたが，ボールは非常に丸いため，セルからセルへ正確にボールを移動させるのが難しいことに気づいた．そこであなたは，命令通りにボールを動かしてくれるロボットを作ることにした．ここで，セルを表す表記として (y, x) という表記を用いる．これは y 行目の x 列目のセルを表す．

ロボットへの命令は 4 つの整数 a, b, c, d で与えられる．これは (a, b) にあるボールを (c, d) に移動することを表す．このとき，(a, b) にボールが存在し， (c, d) にボールが存在しないことが保証される．

盤面の状態は，"jfen" と呼ばれる次の記法で表される．

[1 行目のデータ]/[2 行目のデータ]/.../[H 行目のデータ]

この記法は盤面の各行を表すデータをスラッシュ区切りで連結したものである．各行のデータは文字列で表され，1 列目からW列目にあるセルの状態を左から順に記述している．この文字列は数字と文字 'b' で表され，数字が表す整数は連続した空白のセル数を，'b' はボールが存在するセルを表している．ここで，各行のデータで整数が連続してはならない．また，各行のデータに書かれている整数の総和と 'b' の個数の和は必ず W になる．

例として，次のような盤面状態を考える．空白のセルを '.' で表し，ボールが存在するセルを 'b' で表現している．この例の i 行目の左から j 文字目は盤面の i 行目の j 列目のセルの状態を表す．

....
.b.b
....

上記の盤面を jfen で表記すると次のようになる．

4/1b1b/4

ロボットに現在の盤面の状態と 1 つのボールを動かす命令を与えた時に，ロボットがボールを動かした後の盤面を出力するプログラムを作成せよ．このとき，出力する盤面は jfen 記法で出力せよ．

Input

入力は複数データセットからなる．
各データセットは以下の形式からなる．

S
a b c d

各データセットは 2 行からなり，最初の行には盤面の状態を表す jfen 形式の文字列 S が与えられる．ここで， 盤面のサイズは 2 ≤ W, H ≤ 9 を満たす．続く行にはロボットへの命令が与えられる．これは (a, b) にあるボールを (c, d) に移動させる命令を表す．また，入力の終わりは # で表される．

Output

出力は各データセットごとに命令を実行したあとの盤面の状態を jfen 記法で表した文字列 1 行である．出力行には他の文字があってはならない．

Sample Input

b1/1b
1 1 1 2
b5/bbbbbb
2 4 1 4
b2b2b/7
1 4 2 4
#

Output for Sample Input

1b/1b
b2b2/bbb1bb
b5b/3b3

1番目の入力の初期状態は次のようになる．

b．
.b

(1,1) のボールを (1,2) に移動させるので命令後の盤面は次のようになる．

.b
.b

Solution in Ruby (judge verdict: Wrong Answer)

def unjfen(s)
    s.split(?/).map {|row| row.each_char.map {|c| c == ?b ? ?b : [?.] * c.to_i}.flatten}
end

def jfen(rows)
    rows.map {|row| row.join.gsub(/\.+/){|e| e.size}} * ?/
end

loop do
    a = unjfen(gets.chomp)
    break if $_ =~ /#/
    i1, j1, i2, j2 = gets.split.map(&:to_i)
    a[i1-1][j1-1] = ?.
    a[i2-1][j2-1] = ?b
    p jfen(a)
end