Skip to content

Instantly share code, notes, and snippets.

@condor-bird
Created March 8, 2017 10:14
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save condor-bird/0dc03bbc0f118d0d60ec38cf6edca72b to your computer and use it in GitHub Desktop.
Save condor-bird/0dc03bbc0f118d0d60ec38cf6edca72b to your computer and use it in GitHub Desktop.
Converting numbers to latin letters, a combination of letters
/**
* Преобразование чисел в латинские буквы, комбинация букв
* @param {integer} num - число для преобразования
* @returns {string} возвращаемое значение буквы
*/
function numLetterLatin(num) {
var num_memo = num, // сколько осталось преобразовать после предыдущего шага
num_tail = num, // сколько останется преобразовать после этого шага
num_now = 0, // какое число преобразуем в букву
count = 0,
letter = 'A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z',
all_letter = letter.split('|'), // все буквы
len = all_letter.length, // количество букв
data = [], // массив преобразуется в строку
generateVar = function() {
num_tail = Math.floor(num_memo / len) * len;
num_now = num_memo - num_tail; // число, которое сейчас нужно преобразовать
if (num_now === 0) {
num_now = len;
num_tail -= len;
}
data.unshift(all_letter[num_now - 1] );
count++;
num_memo = num_tail / len;
if (num_tail > 0) {
generateVar();
}
}
generateVar();
return data.join('');
}
@Evgeny-
Copy link

Evgeny- commented Mar 23, 2017

Easier solution

function numToLetters(num) {
   var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   var len = letters.length;

   var res = [];

   //num -= 1; // if A must begin from 1 instead of 0

   while (num >= len) {
      res.push(letters[num % len]);

      num = Math.floor(num / len) - 1;
   }

   res.push(letters[num]);

   return res.reverse().join('');
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment