Skip to main content
2 of 2
added 224 characters in body
Mr.Wizard
  • 273.1k
  • 34
  • 595
  • 1.4k

The first thing that came to mind:

list1 = {a1, a2, a3, a4, a5};
list2 = {{b1, c1}, {b2, c2}, {b3, c3}, {b4, c4}, {b5, c5}};

Rest@FoldList[Append, {}, Most@list1]

Rest[list1] / %

Flatten /@ Thread @ {Take[list2, Length@#], #} & /@ %       (* not too pretty *)
{{a2/a1}, {a3/a1, a3/a2}, {a4/a1, a4/a2, a4/a3}, {a5/a1, a5/a2, a5/a3, a5/a4}}

{{{b1, c1, a2/a1}}, {{b1, c1, a3/a1}, {b2, c2, a3/a2}}, {{b1, c1, a4/a1},
 {b2, c2, a4/a2}, {b3, c3, a4/a3}}, {{b1, c1, a5/a1}, {b2, c2, a5/a2},
  {b3, c3, a5/a3}, {b4, c4, a5/a4}}}
Mr.Wizard
  • 273.1k
  • 34
  • 595
  • 1.4k