Учитывая последовательность o
s, представляющих точки, соедините их вертикально или горизонтально
Примеры
Входные данные:
o o
o
Выход:
o---o
|
|
o
Входные данные:
o o o
o
Выход:
o---o----o
|
o
спекуляция
Если вы хотите, чтобы ввод с пробелами образовывал прямоугольник, укажите это в своем ответе
На
o
входе будут только пробелы и переводы строк- Там всегда будет пара точек для подключения
- Нет двух
o
s будет непосредственно рядом - Точки должны быть связаны с
|
и-
, для вертикальных и горизонтальных соединений соответственно - Точечные соединения не будут перекрываться
Ответы:
Japt,
3329 байтПроверьте это онлайн!
Как это устроено
источник
Рубин,
137133 байтаЭто абсолютно ужасно. Все еще пытаюсь в гольф.
Введите как прямоугольник с мягкой подкладкой, пожалуйста.
Новая строка для «читабельности»:
источник
\b
вместо(?=o)
?Сетчатка , 80 байт
Ввод должен быть дополнен.
Попробуйте онлайн!
объяснение
Первый этап довольно прост, он просто превращает все пробелы в дефисы, которые находятся между двумя
o
s в одной строке.Второй этап охватывает
|
с. Это немного сложнее и требует балансировки групп . Сзадипроверяет, что есть
o
ранее в том же столбце. Помните, что взгляды следует читать справа налево.(.)*
хранит горизонтальное положение совпадения,\D*¶
проверяет пропуски на любой символ в предыдущих строках,o
буквально совпадает. Затем(?(1)!)^(?<-1>.)*
убедитесь, что горизонтальное положение этогоo
же.Взгляд вперед
Делает то же самое в обратном направлении.
источник