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