JSFiddle - React, Tailwind, and code Playground

by Alexandru Mihai

JavaScript

let symbolMapper={
	'A':0,
  'C':1,
  'G':2,
  'T':3,
  0:'A',
  1:'C',
  2:'G',
  3:'T'
}
function LastSymbol(pattern){
	return pattern.slice(-1);
}
function Prefix(pattern){
	return pattern.slice(0,-1);
}
function SymbolToNumber(symbol){
	return symbolMapper[symbol];
}
function NumberToPattern(index,k){
	if(k==1){
  	return symbolMapper[index];
  }
  prefixIndex = parseInt(index/4);
  return symbolMapper[index - 4*prefixIndex] + NumberToPattern(prefixIndex, k-1);
}
function PatternToNumber(pattern){
	if(pattern.length==0)
  	return 0;
  let symbol = LastSymbol(pattern);
  return 4 * PatternToNumber(Prefix(pattern))+ SymbolToNumber(symbol);
}
function computingFrequencies(text,k){
	frequencyArray = [],length = text.length;
	for(i=0;i<Math.pow(4,k);i++)
  	frequencyArray[i] = 0;
  for(i=0;i<length-k+1;i++){
  	let pattern = text.slice(i,i+k);
    let j = PatternToNumber(pattern);
    frequencyArray[j]++;
  }
  return frequencyArray.join(' ');
}
console.log('result: '+NumberToPattern(7865,8).split('').reverse().join(''));