Hi,
I can see I'm again too slow 
But I thought I'd share my solution too as I have a way of not using any loop or map, just basic vector operations.
f1<- function(x) {(x+1)*(x+1<=10)+10*(x+1>10)}
f2<- function(x) {(x+3)*(x+3<=10)+10*(x+3>10)}
n = 10
matrix((rep(f1(1:n), each = n) <= 1:n) *
(1:n <= rep(f2(1:n), each = n)),
nrow = n, byrow = T)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 0 1 1 1 0 0 0 0 0 0
#> [2,] 0 0 1 1 1 0 0 0 0 0
#> [3,] 0 0 0 1 1 1 0 0 0 0
#> [4,] 0 0 0 0 1 1 1 0 0 0
#> [5,] 0 0 0 0 0 1 1 1 0 0
#> [6,] 0 0 0 0 0 0 1 1 1 0
#> [7,] 0 0 0 0 0 0 0 1 1 1
#> [8,] 0 0 0 0 0 0 0 0 1 1
#> [9,] 0 0 0 0 0 0 0 0 0 1
#> [10,] 0 0 0 0 0 0 0 0 0 1
Created on 2021-12-06 by the reprex package (v2.0.1)
By the way, this implementation not necessarily faster, but I just took the challenge of coming up with a non-loop version
PJ