fork download
  1. f=
  2. ->s{Z=(s.split'
  3. ')<<[]
  4. K=[]
  5. F=->i,j,f{k=Z[i][j]
  6. K[i]||=0
  7. k==?^?2.times{|m|F[i+1,j+m,f/2]}:!k ?K[j]+=f :F[i+1,j+(k==?/?0:1),f]}
  8. F[0,0,1.0]
  9. K}
  10.  
  11.  
  12. test=[
  13. "",
  14. "^",
  15. "/",
  16. "\\",
  17. "/
  18. ^^",
  19. "^
  20. ^^
  21. ^^^",
  22. "\\
  23. /\\
  24. //\\",
  25. "^
  26. \\^
  27. ^^\\
  28. \\^/^",
  29. "^
  30. /^
  31. ^^/
  32. /\\/\\
  33. ^^/^\\
  34. ^\\^\\/^
  35. \\^^^\\^/"
  36. ]
  37.  
  38. test.map{|x|[x,f[x]]}.each{|x|puts x[0];p x[1];puts''}
Success #stdin #stdout #stderr 0.01s 7416KB
stdin
Standard input is empty
stdout
[1.0]

^
[0.5, 0.5]

/
[1.0, 0]

\
[0, 1.0]

/
^^
[0.5, 0.5, 0]

^
^^
^^^
[0.125, 0.375, 0.375, 0.125]

\
/\
//\
[0, 0, 0, 1.0]

^
\^
^^\
\^/^
[0, 0.1875, 0.5625, 0.125, 0.125]

^
/^
^^/
/\/\
^^/^\
^\^\/^
\^^^\^/
[0, 0.09375, 0.28125, 0.4375, 0.1875, 0, 0, 0]

stderr
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F
prog.rb:2: warning: already initialized constant Z
prog.rb:4: warning: already initialized constant K
prog.rb:5: warning: already initialized constant F