Вычисление заголовка столбца в Excel

Leetcode задача #168. Excel Sheet column title.
Задача помечена как простая, тем не менее, не сразу понял как её решать.

Дано число, это номер столбца для Excel таблицы, требуется сгенерировать его буквенное имя. Иными словами сопоставить 1 -> A, … 26 -> Z, 27 -> AA …

Вроде бы тривиальная задача о переводе из одной позиционной системы счисления (СС) в другую. Мы хотим перевести из СС с основанием 10 (0…9) в СС с основанием 26 (A…Z).

Нюанс задачи заключается в том, что индексация столбцов в Excel виртуально отбрасывает нас во времена, когда в математике не изобрели числа 0, т.е. примерно на 1,5 тыс. лет назад.

«А» не является в данном случае подобием нуля, т.к. обозначает столбец под номером 1. Потому запись вроде «AA» — трактуется не как ноль-ноль, а как 1 — 1.

Если взять столбец 27, и поделить его на разрядность, то мы получим 1, и еще 1 в остатке, или коротко можно записать вот так:

Что легко читается как A — A. Но если мы берем столбец 26 и проделываем с ним тоже самое:

То здесь вы уже не сможете сопоставить что либо внятное, т.к. нуля у вас нет в данной системе счисления. А должен получится результат «Z».

Что же делать?

Можно попробовать сместить нумерацию на единицу влево. И сказать, что А — это не единица, а ноль, B — это 1, и так далее Z — 25.

Вроде бы выправили ситуацию для этого случая, получилось «Z», который при смещении стал равен 25. Но вернемся снова к столбцу № 27:

Учитывая смещение, это нам даст «BA», вместо «AA». Опять не хорошо.

Этот пример лишь показывает, что «0» это не самая простая концепция в математике. Но подход со смещением, в принципе, верный, только требуется смещать каждый разряд, а не всё число. Произведя смещение однократно, мы делаем правильный шаг только для младшего из разрядов.

Давайте посмотрим на код (TS):

Мало букафф? Читайте есчо !

Задача: подсчета кол-ва возможных маршрутов

Июнь 25, 2023 г.

Решаем задачу с литкода №1575 Count All Possible Routes. Дан массив чисел, описывающий города. Указаны индексы стартового города (start) и города, куда нужно приехать (finish), а также запас топлива (fuel). Требуется найти кол-во путей, по которым ...

Читать

Задача о неперекрывающихся интервалах

Июнь 7, 2023 г.

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

Читать

Поиск выхода из лабиринта

Июнь 3, 2023 г.

Продолжаем разбор классических задач по программированию. На этот раз лабиринтовая задача, которая формулируется так - дан плоский лабиринт в виде двумерного массива, где стенка отмечена 1, а свободный участок как 0. Также дана начальная позиция игрока, ...

Читать

Игра в камни

Май 27, 2023 г.

Серия задач StoneGame на leetcode - образец игры, где требуется просчитать оптимальную стратегию. Выигрыш/проигрыш начинающего партию предопределен, и второй участник лишь может надеяться на ошибку первого. Но это не наш случай, т.к. по условию ...

Читать
 

Комментарии к «Вычисление заголовка столбца в Excel»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: