We must state a couple assumptions:
1) The liars all told falsehoods (NONE of the liars were next to both a truth teller and a liar)
2) Exactly two of the truth tellers were mistaken, the rest were correct in stating that they sat next to both a liar and a truth teller.
Now, there's *one* possibility that's really easy, which is:
Solution A) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
But because we know that there are at least two truth tellers who attended the dinner, this answer is wrong.
We can also easily deduce that no two liars sat next to each other. The possibilities would be as follows:
...TFFT... <-- this would make both middle liars correct, and is disqualified
...TFFF... <-- this would make the leftmost liar correct, disqualified
...FFFT... <-- this would make the rightmost liar correct, disqualified
...FFFF... <-- this is plausible, but leads ONLY to Solution A, which is wrong.
Therefore, no two liars sat next to each other.
From that, we know that there are at MOST 22 liars, which means at LEAST 23 truth tellers. And that means that there are at least 21 truth tellers who were correct in their statements. As a result, we know that there are a minimum of 11 liars, because the 21 truth tellers all correctly reference at least one liar who was known to be at the dinner, but half of the accurate truth tellers may have been referencing the same liars.
So! Between 11 and 22 liars, proven.
We've shown that no liars can be seated next to each other. This means that *EVERY* liar must be seated in between TWO truth tellers. And, the vast majority of those truth tellers must in turn be seated next to *another* truth teller because the majority of truth tellers are correct in their assesments.
The only thing left are the anomolies. The anomolous truth tellers can either be seated as TTT or FTF. The remainder of people MUST be situated in the pattern: ...TTFTTFTTF... The pattern itself is therefore a multiple of 3.
Hence, we are left with possibilities:
insert a TTT and a TTT
insert a TTT and a FTF
insert a FTF and a FTF
But notice that by inserting a TTT into the pattern, we must NECESSARILY be adding *one* person (a truth teller) to a single phase of the pattern. And conversely, by inserting an FTF into the pattern, we must necessarily be REMOVING one person (a truth teller) from the pattern. So, let's reanalyze our possibilities:
insert a TTT and a TTT - wrong, this would add 2, and our total would not be a multiple of 3.
insert a TTT and a FTF - possible
insert a FTF and a FTF - wrong, this would remove 2, and our total would not be a multiple of 3.
As a result, we must take our base pattern of TTFTTFTTF, and insert a TTT and an FTF, in order to keep the total at 45. Where we add them is irrelevant.
If we start with our base pattern, we get that there must be twice as many truth tellers as liars, or 30 truth tellers and 15 liars. Then, we put in the necessary TTT, and we get 31 truth tellers and 15 liars. Finally, we put in the necessary FTF, and we go back to having 30 truth tellers and 15 liars.
Therefore, the solution of 30 truth tellers and 15 liars is unique.