Без заголовка
А я и не говорю что это ответ. Это всего лишь указатель направления, в котором следует копать в поисках ответа.
Для того чтобы решать обратную задачу, критерии должны быть четко формализованы.
В существующей ситуации критерии формализованы крайне слабо, и обучать им удается только на примерах, методом проб и ошибок, из уст в уста. Тем не менее - какую-то часть обучаемых обучить удается.
Кстати, есть подозрение что недоформализованность критериев в программировании фундаментальна. Потому как если бы критерии были четко формализованы, то эта формализация представляла бы собой готовую программу. А мы ставим задачу программу разработать.