Задача: превратить HTML-страницу в гору!
Когда HTML-страницы имеют отступ, они могут выглядеть следующим образом:
<div>
<div>
<div>
</div>
<div>
<div>
</div>
</div>
</div>
</div>
Но, честно говоря, гора является более представительным для этой структуры.
Таким образом, мы можем переписать это как:
/\
/\/ \
/ \
/ \
Внешние косые черты слева и справа соответствуют внешнему элементу div - каждая пара тегов HTML должна быть представлена как /
для начального тега, так и \
для конечного тега - внутри все теги «выше» и имеют одинаковую структуру.
Входные данные:
- Здесь не будет
<!DOCTYPE>
- Там не будет самозакрывающихся тегов, например,
<img />
или<br />
- Там могут быть атрибуты или содержимое внутри тегов
- Там могут быть пробелы или табуляции - ваша программа должна игнорировать эти
- Между
<
или</
и именем тега не должно быть пробелов - Весь ввод будет действительным HTML
Выходные данные - гора, представляющая теги, как указано выше.
Больше тестов:
Входные данные:
<div id="123"> HI </div><a><span></span></a>
Выход:
/\
/\/ \
Входные данные:
<body id="<"></body>
Выход:
/\
</ div>
? или мы можем предположить, что косая черта всегда рядом сdiv
<
или</
(до имени тега) не допускаются - однако могут существовать пробелы для атрибутов, например<div id="aDiv">
>
такие , как<a >b</a >
.)Ответы:
HTML + CSS + JavaScript, 39 + 141 + 20 = 200 байт
Визуально выводит на веб-страницу. Чтобы позволить этому работать со специальными элементами, такими как
<body>
, все буквы на входе заменяются.HTML + CSS + JavaScript, 10 + 103 + 20 = 133 байта
Решение, которое работает, если в тегах нет содержимого.
источник
Javascript + JQuery,
275246 байтСохранено 29 байт благодаря Рику Хичкоку
Довольно наивное решение проблемы. Анализирует HTML с JQuery
$(string)
, а затем рекурсивно строит боковую гору с форматом:Затем вращает полученную строку против часовой стрелки и сообщает результат.
Показать фрагмент кода
источник
j=(a,b,c,i)=>{s=(c=' '.repeat(b))+'/\n';for(i
...for(c=0;c<s.length;c++)
кfor(c=0;s[c];c++)
for(i=0;i<a.children.length;i++)
наfor(i=0;a.children[i];i++)
HTML + JavaScript (ES6), 8 + 192 = 200 байт
JS
HTML
Показать фрагмент кода
Меньше гольфа
источник
id=E
элемент HTML, поскольку вы полагаетесь на него, чтобы код работал?05AB1E ,
382623 байтаПопробуйте онлайн!
Я все еще играю в гольф. Предполагается, что в HTML вы всегда будете использовать 4 пробела для отступа, и не работает с «не красивым» HTML. Не знаете, как обращаться с частью «контент», если она недействительна, отредактируйте вопрос, чтобы показать пример с узлом, имеющим контент.
источник
Древесный уголь , 28 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
h
Переменная используется для отслеживания мы ли внутри кавычек.Зациклите строку в обратном порядке.
Включите символ тока.
Если это так,
"
переключите флаг кавычки.Если это
<
и мы не в кавычках, тогда ...Если следующий символ (предыдущий в цикле, потому что мы делаем цикл в обратном порядке) - это
/
, то ...Двигайся вверх и нарисуй
\
влево, еще ...Нарисуйте
/
и двигайтесь вниз и влево.Запомните символ для следующей итерации цикла.
источник