Сообщество Хекслета

Константин Бочинин 13 апреля 2017 →

Мне не хватило глубины погружения. Должен быть где-то рекурсивный процесс погружения и дальше подъем.

const typeOfTopTag = ([tag, inner, content]) => {
    if (Array.isArray(inner) || Array.isArray(content)) {
        return "wrapper";
    }
    if (typeof tag  === "string" && typeof inner === "string") {
        return "simple";
    }
    if (typeof tag  === "string" && typeof inner === "object" && typeof content === "string") {
        return "styled";
    }
};

const buildHtml = arr => {
  return arr.reduce((acc, node, i, [tag, inner, content]) => {
    if (typeOfTopTag(arr) === "simple") {
        return `<${tag}>${inner}</${tag}>`;
    }
    if (typeOfTopTag(arr) === "styled") {
        return `<${tag} class = "${inner.class}">${content}</${tag}>`;
    }
    if (typeOfTopTag(arr) === "wrapper" && Array.isArray(tag)) {
        return acc + buildHtml(node);
    }
    //**ТУТ ПРОВАЛИВАЮСЬ***
    if (typeof tag === "string") {
        return `<${tag}>` + '\n' + buildHtml(...inner) + '\n' + `</${tag}>`;
    }
  }, "");
};

На последнем if проваливаюсь html>meta>title и вылезти не могу. Как-то не так сделано :\ Вывод такой:

<html>
<meta>
<title>hello, hexlet!</title>
</meta>
</html>

В циклах был break (ну или что-то вроде) и дальше всплываешь на уровень выше, а тут как всплыть?

С вводом ниже все работает:

const Tag  = ['meta',      [    ['title', 'hello, hexlet!'], ]  ];
const Tag0 = ['h1', { class: 'header' }, 'html builder example'];
const Tag1 = ['title', 'hello, hexlet!'];
const Tag2 = [['title', 'hello, hexlet!'], ['title', 'hello, hexlet!']];
const Tag3 = [['title', 'hello, hexlet!'], ['title', 'hello, hexlet!'], ['title', 'hello, hexlet!']];
const Tag4 = ['div',[['span', 'span text2'], ['span', 'span text3'],]];
const Tag5 = ['h1', { class: 'header' }, 'html builder example'];

Rishat Sultanov 13 апреля 2017 →

Добрый день, пытаюсь реализовать задачку. Но по тестам что-то не проходит:

// removed

Тесты говорят

1) App\TestSolution::testSubRat
Failed asserting that -2 matches expected 9.

Может я сам алгоритм вычисления неправильно делаю? Я вычисляю car1 от car2 и cdr1 от cdr2 и потом заношу полученные результаты в отдельные переменные и создаю пару функцией cons. Правильно ли я мыслю ?

Степан Юрков 13 апреля 2017 →

Обе функции порождают ошибки, но задание не засчитывается, в чем проблема?

// removed

Антон Закарлюка 13 апреля 2017 →

Мой код:

// removed

На repl.it при вызове функции с различными аргументами работает, а здесь проверку не проходит, выдавая ошибку:

TypeError: (0 , _isBigOdd2.default) is not a function

      at Object.<anonymous>.test (__tests__/isBigOdd.test.js:4:60)

Не могли бы вы мне обьяснить, в чем моя ошибка?

Валерий Симонов 13 апреля 2017 →

Не понял задание. Можно на конкретном примере пояснить его суть? Что мы должны получить на выходе, если задается к примеру список из видео-урока: (1, (3, 4, (3, 2)))

$list = l(1, l(3, 4 , l(3, 2)));

т.е. по-сути надо перевернуть такое дерево? enter image description here

Вячеслав Дьяков 13 апреля 2017 →

Скажите, а курсы по SQL, вообще возможно на винде пройти, или обязательно что-то юниксподобное? Имеется ввиду psql + babun

Юрий Быков 13 апреля 2017 →

Такой подход делает сущность невалидной, а концепция DDD этого не позволяет, сущность должна быть валидна после инициализации.

const ticket = new FilmScreeningTicket(screening, user, place);
const errors = this.validate(ticket);

Почему решили использовать такой подход? Какие критерии для местонахождения валидации стоит учитывать?

Евгений Михайлов 13 апреля 2017 →

Здравствуйте. Почему для метода с тремя аргументами делается mv.visitMaxs(2, 2);

Разве maxLocals тут не должен быть 3?

Михаил Боткин 13 апреля 2017 →

День добрый.

А как с программной точки зрения происходит обработка такого экспорта. Если в первом случа - import * as name from './name'; - мы четко указали модуль и в вызове функции пропишем этот адрес name.someFunction() то программа заглянет в этот name, найдет там эту функцию и даст нам с ней работать.

А во стором случае import { someFunction, anotherFunction } from './name' ,если мы будем экспартировать n-модулей, и потом в запросах просто писать имя функций, программе нужно перебрать все наши n-импортируемые модули в поисках этой функции и только потом дать нам с ней работать? я правильно понял? на скорость обработки запроса это не влияет?

И второй вопрос: есть ли возможность комбинировать данный импорт,т.е. хочу вызвать все 100 функций+переменных из модуля (использовать *), но одну функцию/переменную переименовать fourthWeekday as fourthDay?

Максим Москаленко 12 апреля 2017 →

Здравствуйте!) Подскажите пожалуйста вычисление в моём решении, т.к. я не пойму момента, когда в условии "if (true)", то почему не вываливается "return 0;" и "не падает" вся рекурсия? =)

// removed

Заранее извиняюсь за то, что выложил в комментарий решение, удалите его после прочтения и ответа. Благодарю!

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Javascript, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →