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(''));