Your truth table should have the same output as the programming pattern your classmates produced, but there is a subtle difference between them. Each row and column in a truth table can have an arbitrary position (not dependent on those around it) so you can put them in any order.
In general terms, a pattern is an ordered array or sequence. A PROM programming pattern is supposed to map all locations in the PROM in the order that it would normally be programmed. The programmer may have an address counter which can only access locations sequentially, and it may not accept a file format which has random addresses.
The TPB28L42 is a fuse-link PROM which is programmed by blowing titanium-tungsten metal links. An intact fuse represents logic high or '1', while a blown fuse is low or '0'. Therefore only '0' bits need to have their fuses blown. As blowing each fuse takes a lot of current (~250mA) bits can only be programmed one at a time. In your example only 8 fuses need to be blown, with the programmer selecting a different address and bit location for each one. Those fuses could be blown in any order, but the standard programming algorithm specifies doing it in sequence.
Many years ago I built a manual fuselink PROM programmer which had two rotary switches and a pushbutton. Blowing a wrong fuse would render the chip useless, so to make it easier to follow the fuse chart I would first select one bit, then switch through all the addresses that needed that bit programmed (pushing the button several times to blow each fuse). I would then switch to the next bit and repeat all the addresses. Having the chart arranged in an ordered pattern rather than a truth table made the process easier, as I could simply go down each column and across each row in sequence.