Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width">
- <title>JS Bin</title>
- </head>
- <body>
- <script id="jsbin-javascript">
- // ДАНО: Есть дерево, состоящее из двух типов узлов:
- // 1. УЗЕЛ: содержит две ветки { left: УЗЕЛ/ЛИСТ, right: УЗЕЛ/ЛИСТ }
- // 2. ЛИСТ: представляет собой строку
- // ТРЕБУЕТСЯ: Обойти дерево и вывести для каждого ЛИСТа следующую информацию:
- // <путь>: <3 самых длинных слова из строки>
- // ПРИМЕР ДАННЫХ
- var tree = {
- left: {
- left: "Первое предложение из произвольной строки",
- right: {
- left: "Другое произвольное предложение",
- right: "Еще одно следующее предложение, но не очень длинное"
- }
- },
- right: {
- left: {
- left: {
- left: "Еще одно не очень длинное предложение",
- right: ""
- },
- right: {
- left: "",
- right: "Еще одно не очень длинное предложение"
- }
- },
- right: {
- left: {
- left: "Предложение",
- right: "Еще одно следующее предложение, но не очень длинное"
- },
- right: {
- left: "Другое произвольное предложение",
- right: {
- left: "Два слова",
- right: "Еще одно следующее предложение, но не очень длинное"
- }
- }
- }
- }
- }
- // ЗДЕСЬ НАПИСАТЬ КОД. РЕЗУЛЬТАТ ВЫВЕСТИ ЧЕРЕЗ console.log
- read(tree);
- function dom(obj)
- {
- if (typeof(obj)=="string") return false;
- else return true;
- }
- function offer(obj){
- if (typeof(obj)=="string") return true;
- else return false;
- }
- function read(obj,path)
- { if (dom(obj))
- { if (path != '')
- path=path+'>>>';
- read(obj.left, path+'left');
- read(obj.right, path+'right');
- }
- else if (offer(obj))
- { var split11s = path + ': ' + Wordsconsole(obj,3);
- console.log(split11s); }
- return null;
- }
- function Wordsconsole(str, wordout) {
- var consoleout='';
- str = str.replace(/[.,!?;]/g, '');
- var wordstrok = str.split(' ');
- for (var i=1;i<=wordout;i++)
- {if ((wordstrok.length===0)||((wordstrok.length===1)&&(wordstrok[0]==='')))
- continue;
- var wordsdl=wordstrok.reduce(longer);
- consoleout = consoleout + wordsdl+'/ ';
- var word = wordstrok.indexOf(wordsdl);
- if(word != -1) {
- wordstrok.splice(word, 1);
- }
- }
- return consoleout;
- }
- function longer(champ, contender) {
- return (contender.length > champ.length) ? contender: champ;
- }
- </script>
- <script id="jsbin-source-javascript" type="text/javascript">// ДАНО: Есть дерево, состоящее из двух типов узлов:
- // 1. УЗЕЛ: содержит две ветки { left: УЗЕЛ/ЛИСТ, right: УЗЕЛ/ЛИСТ }
- // 2. ЛИСТ: представляет собой строку
- // ТРЕБУЕТСЯ: Обойти дерево и вывести для каждого ЛИСТа следующую информацию:
- // <путь>: <3 самых длинных слова из строки>
- // ПРИМЕР ДАННЫХ
- var tree = {
- left: {
- left: "Первое предложение из произвольной строки",
- right: {
- left: "Другое произвольное предложение",
- right: "Еще одно следующее предложение, но не очень длинное"
- }
- },
- right: {
- left: {
- left: {
- left: "Еще одно не очень длинное предложение",
- right: ""
- },
- right: {
- left: "",
- right: "Еще одно не очень длинное предложение"
- }
- },
- right: {
- left: {
- left: "Предложение",
- right: "Еще одно следующее предложение, но не очень длинное"
- },
- right: {
- left: "Другое произвольное предложение",
- right: {
- left: "Два слова",
- right: "Еще одно следующее предложение, но не очень длинное"
- }
- }
- }
- }
- }
- // ЗДЕСЬ НАПИСАТЬ КОД. РЕЗУЛЬТАТ ВЫВЕСТИ ЧЕРЕЗ console.log
- read(tree);
- function dom(obj)
- {
- if (typeof(obj)=="string") return false;
- else return true;
- }
- function offer(obj){
- if (typeof(obj)=="string") return true;
- else return false;
- }
- function read(obj,path)
- { if (dom(obj))
- { if (path != '')
- path=path+'>>>';
- read(obj.left, path+'left');
- read(obj.right, path+'right');
- }
- else if (offer(obj))
- { var split11s = path + ': ' + Wordsconsole(obj,3);
- console.log(split11s); }
- return null;
- }
- function Wordsconsole(str, wordout) {
- var consoleout='';
- str = str.replace(/[.,!?;]/g, '');
- var wordstrok = str.split(' ');
- for (var i=1;i<=wordout;i++)
- {if ((wordstrok.length===0)||((wordstrok.length===1)&&(wordstrok[0]==='')))
- continue;
- var wordsdl=wordstrok.reduce(longer);
- consoleout = consoleout + wordsdl+'/ ';
- var word = wordstrok.indexOf(wordsdl);
- if(word != -1) {
- wordstrok.splice(word, 1);
- }
- }
- return consoleout;
- }
- function longer(champ, contender) {
- return (contender.length > champ.length) ? contender: champ;
- }</script></body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement