lines. Уберите из неё комментарии двух видов:
- // начинает **строчный** комментарий: он и всё правее него до конца строки удаляются.
- /* начинает **блочный** комментарий: удаляется всё до ближайшего следующего */, даже через несколько строк. Закрывающая пара не может перекрываться с открывающей: в /*/ комментарий ещё не закрыт. Переводы строк внутри блока тоже удаляются, поэтому части строк до и после блока склеиваются.
Действует тот комментарий, что начался раньше: // внутри блока ничего не значит, как и /* внутри любого комментария. Кавычек в смысле строковых литералов можно не учитывать — они не защищают текст от удаления.
Верните код без комментариев в том же виде — списком строк. Строки, ставшие пустыми, в ответ не включайте.lines=["x = 1; // init", "/* tmp", "y = 2; */ z = 3;", "// done"] → ['x = 1; ', ' z = 3;']
От первой строки остаётся x = 1; (пробел перед комментарием сохраняется). Блочный комментарий съедает вторую строку и начало третьей, остаётся z = 3;. Последняя строка — целиком комментарий и пропадает.
lines=["go(/*a", "b*/1);"] → ['go(1);']
Блочный комментарий захватывает и перевод строки, поэтому две строки склеиваются в одну: go(1);.
lines=["a/*/b*/c", "d // e /* f"] → ['ac', 'd ']
/*/ ещё не закрывает комментарий — он кончается на */ после b. Во второй строке /* стоит внутри строчного комментария и ничего не открывает.
lines=["x = 1; // init", "/* tmp", "y = 2; */ z = 3;", "// done"]
['x = 1; ', ' z = 3;']
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 85 тестов на сервере, включая скрытые.