Finite tilings in one dimension
JavaScript (ES6), 74 73 70 bytes

Takes input as an array of 32-bit integers. Returns a boolean.

f=([n,...a],x)=&gt;n?[...f+''].some(_=&gt;n&amp;&amp;!(x&amp;n)&amp;f(a,x|n,n&lt;&lt;=1)):!(x&amp;-~x)


Or 66 bytes with inverted truthy/falsy values:

f=([n,...a],x)=&gt;n?[...Array(32)].every(_=&gt;x&amp;n|f(a,x|n,n*=2)):x&amp;-~x


Test cases



f=([n,...a],x)=&gt;n?[...f+''].some(_=&gt;n&amp;&amp;!(x&amp;n)&amp;f(a,x|n,n&lt;&lt;=1)):!(x&amp;-~x)

console.log('[Truthy]')
console.log(f([0b1]))
console.log(f([0b111]))
console.log(f([0b1,0b1]))
console.log(f([0b11,0b111,0b1111]))
console.log(f([0b101,0b11,0b1]))
console.log(f([0b101,0b11,0b101]))
console.log(f([0b10001,0b11001,0b10001]))
console.log(f([0b100001,0b1001,0b1011]))
console.log(f([0b10010001,0b1001,0b1001,0b101]))
console.log(f([0b10110101,0b11001,0b100001,0b1]))
console.log(f([0b110111,0b100001,0b11,0b101]))
console.log(f([0b1001101,0b110111,0b1,0b11,0b1]))

console.log('[Falsy]')
console.log(f([0b101]))
console.log(f([0b101,0b11]))
console.log(f([0b1,0b1001]))
console.log(f([0b1011,0b1011]))
console.log(f([0b11011,0b1001101]))
console.log(f([0b1001,0b11011,0b1000001]))
console.log(f([0b1001,0b11011,0b1000001,0b10101]))




How?

f = (                       // f = recursive function taking:
  [n, ...a],                //   n = next integer, a = array of remaining integers
  x                         //   x = solution bitmask, initially undefined
) =&gt;                        //
  n ?                       // if n is defined:
    [... f + ''].some(_ =&gt;  //   iterate 32+ times:
      n &amp;&amp;                  //     if n is not zero:
        !(x &amp; n)            //       if x and n have some bits in common,
        &amp;                   //       force invalidation of the following result
        f(                  //       do a recursive call with:
          a,                //         the remaining integers
          x | n,            //         the updated bitmask
          n &lt;&lt;= 1           //         and update n for the next iteration
        )                   //       end of recursive call
    )                       //   end of some()
  :                         // else (all integers have been processed):
    !(x &amp; -~x)              //   check that x is a continuous chunk of 1's