Прогнозы сбылись наполовину - это значит, что у каждого сбылось только одно предсказание, а второе нет. Возможные варианты.
1) Пусть Аня заняла 1 место, тогда Боря - не 2 место.
Тогда Аня заняла не 2 место, значит, Гена занял 3 место.
Значит, Гена не на последнем месте, а Вася - на 2.
Решение: Аня - 1, Вася - 2, Гена - 3, Боря - 4.
2) Пусть Аня заняла не 1 место, тогда Боря занял 2 место.
Значит, Аня не могла занять 2 место, а Гена занял 3 место.
Значит, опять Гена не на последнем месте, а Вася на 2.
Но у нас уже Боря на 2 месте, получаем противоречие.
Ответ: Аня - 1, Вася - 2, Гена - 3, Боря - 4.