Использование запросов Python: сеансы, файлы cookie и POST

Я обнаружил ошибку в своем первом сообщении, поэтому решил сесть и сделать математику. Я обнаружил, что числовая система, используемая для идентификации столбцов Excel, не является базой 26, как другой человек. Рассмотрим следующее в базе 10. Вы также можете сделать это с буквами алфавита.

Пробел: ...................... ... S1, S2, S3: S1, S2, S3 .................................... 0, 00, 000: .. A, AA, AAA .................................... 1 , 01, 001: .. B, AB, AAB .................................... ..., ..., ...: .. ..., ..., ... .................................... 9, 99 , 999: .. Z, ZZ, ZZZ Всего состояний в пространстве: 10, 100, 1000: 26, 676, 17576 Всего состояний: ............... 1110 ..... ........... 18278

Номера столбцов Excel в отдельных алфавитных пространствах с использованием базы 26. Вы можете видеть, что в общем случае прогрессия состояния является a, a ^ 2, a ^ 3, ... для некоторого основания а, а общее число состояний равно а + а ^ 2 + а ^ 3 + ....

Предположим, вы хотите найти общее количество состояний A в первых N пробелах. Формула для этого равна A = (a) (a ^ N - 1) / (a-1). Это важно, потому что нам нужно найти пространство N, соответствующее нашему индексу K. Если я хочу выяснить, где K лежит в системе чисел, мне нужно заменить A на K и решить для N. Решение N = log { base a} (A (a-1) / a +1). Если я использую пример a = 10 и K = 192, я знаю, что N = 2.23804 .... Это говорит мне, что K лежит в начале третьего пространства, так как он немного больше двух.

Следующим шагом является то, как точно определить, насколько далеко мы находимся в текущем пространстве. Чтобы найти это, вычтите из K A, сгенерированный с использованием пола N. В этом примере пол N равен двум. Итак, A = (10) (10 ^ 2 - 1) / (10-1) = 110, как и ожидалось, когда вы объединяете состояния первых двух пространств. Это нужно вычесть из K, потому что эти первые 110 состояний были бы учтены в первых двух пространствах. Это оставляет нас с 82 состояниями. Таким образом, в этой системе чисел представление 192 в базе 10 равно 082.

Код C # с базовым индексом нуля равен

    private string ExcelColumnIndexToName(int Index)
    {
        string range = string.Empty;
        if (Index < 0 ) return range;
        int a = 26;
        int x = (int)Math.Floor(Math.Log((Index) * (a - 1) / a + 1, a));
        Index -= (int)(Math.Pow(a, x) - 1) * a / (a - 1);
        for (int i = x+1; Index + i > 0; i--)
        {
            range = ((char)(65 + Index % a)).ToString() + range;
            Index /= a;
        }
        return range;
    }

// Old Post

Решение на основе нуля в C #.

    private string ExcelColumnIndexToName(int Index)
    {
        string range = "";
        if (Index < 0 ) return range;
        for(int i=1;Index + i > 0;i=0)
        {
            range = ((char)(65 + Index % 26)).ToString() + range;
            Index /= 26;
        }
        if (range.Length > 1) range = ((char)((int)range[0] - 1)).ToString() + range.Substring(1);
        return range;
    }
30
задан Steven M. Vascellaro 27 October 2017 в 21:13
поделиться