Машина и пистолет не в красной коробке, значит, там мяч или кукла.
В синей коробке не кукла и не мяч, значит, или машина или пистолет.
В зеленой коробке не мяч, значит, мяч в красной или желтой.
Машина не в зеленой коробке, значит, она в синей или желтой.
Пистолет не в красной и не в желтой, значит он в синей или в зеленой.
Итак, получаем:
В красной коробке мяч или кукла.
В зеленой коробке пистолет или кукла.
В синей коробке машина или пистолет.
В желтой коробке мяч или машина.
Пока нельзя понять, где что, поэтому посмотрим на порядок коробок.
Коробка с мячом (красная или желтая) стоит между синей и куклой.
Коробка с пистолетом (зеленая или синяя) между желтой и красной.
1) Если коробка с пистолетом - синяя, стоит между желтой и красной,
а мяч лежит в красной, то порядок: кукла, красная, синяя, желтая.
Тогда кукла в зеленой, а машина в желтой. Противоречий нет.
2) Если коробка с пистолетом - синяя, стоит между желтой и красной,
а мяч лежит в желтой, то порядок: кукла, желтая, синяя, красная.
Тогда кукла в зеленой, а машина в красной. Противоречие.
3) Если коробка с пистолетом - зеленая, стоит между желтой и красной,
а мяч лежит в красной, то порядок: желтая, зеленая, красная, синяя.
Или порядок: синяя, красная, зеленая, желтая.
Тогда в зеленой и пистолет и кукла. Противоречие в обоих случаях.
4) Если коробка с пистолетом - зеленая, стоит между желтой и красной,
а мяч лежит в желтой, то порядок: синяя, желтая, зеленая, красная.
Тогда в зеленой и пистолет и кукла. Противоречие.
Таким образом, только в одном случае противоречия не будет:
Кукла в зеленой, машина в желтой, мяч в красной, пистолет в синей.