Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //словарь
- 'use strict';
- const fs = require('fs');
- const isPunctuator = (x) =>
- {
- return x === ' ' || x === '\n' || x === '\t' || x === '\r' || x === ','
- || x === '.' || x === '-' || x === ',' || x === '(' || x === ')'
- || x === ':' || x === ';' || x === '?' || x === '!' || x === '\''
- || x === '"';
- }
- const lexer1 = (path) =>
- {
- const data = fs.readFileSync(path, 'utf8');
- const arr = [];
- let wrd = false, lw;
- for (let i = 0; i < data.length; i++)
- {
- if (isPunctuator(data[i]))
- {
- if (wrd)
- {
- wrd = false;
- arr[lw] = true;
- }
- }
- else
- {
- if (wrd)
- lw += data[i];
- else
- {
- wrd = true;
- lw = data[i];
- }
- }
- }
- if (wrd)
- {
- wrd = false;
- arr[lw] = true;
- }
- return arr;
- }
- const lexer2 = (path, arr) =>
- {
- const data = fs.readFileSync(path, 'utf8');
- let wrd = false, lw, x = 1, y = 1;;
- for (let i = 0; i < data.length; i++)
- {
- if (data[i] === '\n')
- {
- y++;
- x = 1;
- }
- else
- x++;
- if (isPunctuator(data[i]))
- {
- if (wrd)
- {
- wrd = false;
- if (!arr[lw])
- console.log(y + ',\t' + x + '\t' + lw);
- }
- } else
- {
- if (wrd)
- lw += data[i];
- else
- {
- wrd = true;
- lw = data[i];
- }
- }
- }
- if (wrd) {
- wrd = false;
- if (!arr[lw])
- console.log(y + ',\t' + x + '\t' + lw);
- }
- return arr;
- }
- lexer2(process.argv[3], lexer1(process.argv[2]));
- //мемоизация + тесты
- 'use strict'
- const memFunc = (fun) => {
- let cache = {};
- return (...args) => {
- let n = args[0];
- if (n in cache){
- return cache[n];
- }
- else {
- let result = fun(n);
- cache[n] = result;
- return result;
- }
- }
- }
- const fib = memFunc((n) => {
- let num;
- if (n >= 2){
- num = fib(n - 1) + fib (n - 2);
- }else num = n;
- return num;
- });
- //console.log(fib(40))
- const trib = memFunc((n) => {
- let num;
- if (n < 2){
- return 0;
- }else if (n === 2)
- return 1;
- else num = trib(n - 1) + trib(n - 2) + trib(n - 3);
- return num;
- });
- console.log(trib(35));
- const factorial = memFunc((x) => {
- if (x == 0) {
- return 1;
- }
- else {
- return x * factorial(x - 1);
- }
- });
- //console.log(factorial(100));
- //тесты без мем.
- 'use strict'
- const fib = (n) => {
- let num;
- if (n >= 2) {
- num = fib(n - 1) + fib (n - 2);
- } else {
- num = n
- }
- return num;
- }
- //console.log(fib(40));
- const trib = (n) => {
- let num;
- if (n < 2){
- return 0;
- }else if (n === 2)
- return 1;
- else num = trib(n - 1) + trib(n - 2) + trib(n - 3);
- return num;
- };
- //console.log(trib(35));
- const factorial = (n) =>{
- if (n == 0) {
- return 1;
- }
- else {
- return n * factorial(n - 1);
- }
- };
- console.log(factorial(100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement