My Visual Basic program produced this solution:

Physically label each of the coins with the letters A thru L. Then perform the following nine weighings of 6 coins against 6 coins on the broken scale:

Weighing 1: A C H I K L on the left, B D E F G J on the right.

Weighing 2: A C E F G K on the left, B D H I J L on the right.

Weighing 3: C E G H K L on the left, A B D F I J on the right.

Weighing 4: A B C D G H on the left, E F I J K L on the right.

Weighing 5: A F G H I K on the left, B C D E J L on the right.

Weighing 6: C D G I J K on the left, A B E F H L on the right.

Weighing 7: B C F G I L on the left, A D E H J K on the right.

Weighing 8: A D F G K L on the left, B C E H I J on the right.

Weighing 9: A B G J K L on the left, C D E F H I on the right.

The ordered results of the nine weighings produce a unique

identifier for the 12 coins, so you will know which are the 24g and

which the 25g coins, by referring to a manual list of possible ordered result sets. There are exactly 924 sets of ordered results for the nine weighings, each uniquely corresponding to one of the 924 possible ways that the coins A thu L could consist of six 24g and six 25g coins.

For example, if the results are:

Weighing 1: Equal

Weighing 2: Equal

Weighing 3: Right side heavier

Weighing 4: Equal

Weighing 5: Left side heavier

Weighing 6: Left side heavier

Weighing 7: Right side heavier

Weighing 8: Left side heavier

Weighing 9: Left side heavier

Then {A,D,G,I,J,K} weigh 24g, and {B,C,E,F,H,L} weigh 25g