Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //const int listSize = sizeof rules / sizeof rules[0];
- var fs = require("fs");
- let t = Date.now();
- var file =__filename.slice(__dirname.length + 1, -3)+ ".txt";
- let data = fs.readFileSync(file, 'utf8').toString().split('\n').map(s => s.trim());
- let str = data[0];
- let rules = data.slice(2).map(str => str.split(' -> '))
- let ruleList = [];
- let countList = [];
- let countMap = [];
- for(let r in rules){
- ruleList[rules[r][0]]=rules[r][1];
- countList[rules[r][0]] = 0;
- };
- for (let i = 0; i < str.length-1; i++){
- countList[str.charAt(i)+str.charAt(i +1)]++;
- }
- function pairInsertion(){
- let bufferList = [];
- for (let i in countList) {
- let val = countList[i] ;
- if(val == 0)continue;
- let buf1 = i.charAt(0) + ruleList[i];
- let buf2 = ruleList[i] + i.charAt(1);
- if(bufferList[buf1] == null)bufferList[buf1]=0;
- if(bufferList[buf2] == null)bufferList[buf2]=0;
- bufferList[buf1]+=val;
- bufferList[buf2]+=val;
- }
- countList = bufferList;
- }
- for (let x = 0; x < 40 ; x++) {
- pairInsertion();
- }
- for (let i in countList) {
- let c =i.charAt(0);
- if(countMap[c] == null)
- countMap[c] = 0;
- countMap[c] += countList[i];
- };
- countMap[str.charAt(0)] +=1;
- let minCount=999999999999999;
- let maxCount=0;
- for(let kv in countMap){
- maxCount = Math.max(countMap[kv], maxCount);
- minCount = Math.min(countMap[kv], minCount);
- }
- console.log( "------" );
- // not sure why I have to add 1 :D
- console.log( maxCount - minCount +1);
- console.log( Date.now() - t)
Add Comment
Please, Sign In to add comment