2009-09-12 3 views
0

Я хочу программу, которая делает то, что я сказал в названии.Учитывая вход и желаемый результат, выясните необходимое преобразование

Я понимаю, что это довольно неопределенная проблема. Я также понимаю, что выяснение того, как преобразовать любой ввод в любой вывод практически невозможно, но похоже, что обработка некоторых простых случаев должна быть осуществимой.

Чтобы дать конкретный пример (в Python):

>>> def find_transform(start, desired): 
>>>  # Insert magic here 

>>> find_trasform([1,2,3], [3,2,1]) 
"reverse" 

>>> find_trasform([1,2,3,4], [[1,2], [3,4]]) 
"divide 2" 

Я подозреваю, что есть официальное слово для такого рода вещи, но я не знаю, что это такое.

+0

Вы действительно просите людей написать код для вас? –

+0

«Я подозреваю, что есть официальное слово для такого рода вещей, но я не знаю, что это такое». Magic: P Серьезно, хотя, для чего вы планируете использовать это? Какие типы преобразований вам нужны для выяснения? –

+0

@Krugar Нет, я спрашиваю, есть ли область обучения или библиотека или что-то в этом роде. @Pynt У меня сейчас нет конкретного использования, но я могу представить несколько способов, которыми это может быть полезно. –

ответ

1

Ну, этот термин называется Отображение данных. Это обширная область, которая может служить нескольким целям, включая ваши.

Инструменты для такой задачи трудно освоить, поэтому не ожидайте, что это будет легко. В этом конкретном случае вы будете искать Методы сопоставления данных. Они включают в себя сочетание эвристики и для того, чтобы найти соответствующие отношения.

К счастью, ваши примеры хорошо выражены математически и остаются верными для каждого элемента наборов данных. Таким образом, вы можете начать решать эту проблему, пытаясь проанализировать математические отношения между парными элементами и попытаться проверить любые найденные отношения на оставшихся парах.

EDIT: последний пример добавляет новое измерение. Так что это тоже должно наблюдаться. Если вы придерживаетесь прогрессивной взаимосвязи между наборами, как это имеет место (сначала установите связь между установками 1 и 2, затем между установками 2 и 3) все будет хорошо. Это может даже помочь более быстро доказать отношения, так как вам не нужно так часто переписываться. Но более сложные отношения между наборами могут заставить вас справиться с гораздо более сложной задачей. Старайтесь держать его простым.

+0

Cool. Спасибо за руководство. –

+0

интересный маленький большой проект, который у вас там есть. Повеселись. –