Здравствуйте. Вот есть такой код:
 int maxShuffle = buffer.Length - 3;
          
                for (int i = 0; i < buffer.Length; ++i)
                {
                    for (int idx = 1; idx <= maxShuffle; ++idx)
                    {
                        if (i - idx >= 0)
                        {
                            buffer[i] ^= buffer[i - idx];
                        }
                    }
                }
                for (int i = buffer.Length - 1; i >= 0; --i)
                {
                    for (int idx = 1; idx <= maxShuffle; ++idx)
                    {
                        if (i + idx < buffer.Length)
                        {
                            buffer[i] ^= buffer[i + idx];
                        }
                    }
                }
На вход подаются данные
31, 1, 18, 17, 18, 17, 3, 30, 26, 25, 15, 2, 20, 2, 24, 2, 28, 3, 27, 1
На выходе получаю такое:
2, 9, 16, 0, 0, 17, 15, 25, 7, 21, 27, 27, 0, 12, 0, 4, 1, 24, 3, 4
Меня интересут как обратить этот код?? Чтобы из нижнего варианта получался исходный. Это вообще возможно??