Интересно, существуют ли установленные шаблоны для этих или даже функций, доступных в основных или сторонних библиотеках, которые поддерживают это?шаблоны для последовательности «обратная инженерия»
Я написал сложную последовательность, используя выражение seq
, которое принимает время начала и список правил, диктующих, когда определенным событиям разрешено возникать в строке времени, идущей вперед, чтобы создать бесконечную последовательность. Легко поставить любое начальное значение DateTime
и просто начать шаг вперед. Результирующая последовательность представляет собой следующий этап: <DateTime>
, соответствующий событиям, отмеченным по времени.
Что бы я хотел сделать, так это быть в состоянии вернуться на эту теоретическую шкалу событий. Я хочу сказать: «Вернитесь на десять шагов и дайте мне эту DateTime», чтобы я знал, должен ли я применить результат к исходной последовательности в качестве ввода, я бы вернулся туда, где я начал.
Должен ли я просто изменить сложную логику, чтобы сделать эту работу? Или был бы способ, которым я могу эффективно «переборщить» свою форвардную логику, чтобы я мог продолжать подавать входные данные, пока не получаю результат, который правильно дает мне 10 шагов до указанного DateTime?
Я понимаю, что я плохо разбираюсь в этом, поэтому, возможно, упрощенный пример, чтобы помочь визуализировать то, что мне нужно. Предположим, что я создал последовательность ints с использованием некоторого логического шаблона. Давайте просто скажем, кратные 2, чтобы держать это просто:
let seq = [ 2; 4; 6; 8; 10; 12; 14; 16; 18; 20; ]
(Это лениво сгенерированную последовательность, используя мой предопределенный логику, хотя)
Я могу начать генерировать эту последовательность из любого из значений внутри нее легко, так учитывая 12 я могу продолжать идти вперед
let seqFrom12 = [ 12; 14; 16; 18; 20; ]
Я хочу, чтобы иметь возможность для любого возможного значения последовательности вычислить значение мне нужно поставить так, что X шагов приведет меня к другому значению в последовательности.
Так что я хочу, чтобы все значения последовательности, так что X = еще 3 шага приведет меня к значению 12 в последовательности. Поэтому мне нужно будет пересчитать до 10, затем 8, затем 6. Только в реальном сценарии гораздо сложнее применить обратную логику
Похоже, вы хотите реализовать функциональность отмены. Является ли это более-менее правильным? – mydogisbox
@mydogisbox Я это другой способ визуализации его наверняка –