ответ Хоббса от Code Golf: Лазеры решали совершенно другую проблему, но часть решения была о том, как «вращать» многострочную строку, и это могло бы быть полезно здесь.
Во-первых, не помещайте каждый бит в отдельную строку, просто отделяйте биты от разных строк ввода в разных строках. Поместите многострочную строку в $_
.
$_ = '0000111111110000
1111000000001111';
Теперь выполните следующий код:
$_ = do {
my $o;
$o .= "\n" while s/^./$o.=$&,""/meg;
$o };
(подстановка в алгоритме Хоббса началась с s/.$/.../
. Используя s/^./.../
, он становится алгоритмом для транспонирования, а не для вращения)
Ввод:
$_ = '0000111111110000
1111000000001111';
Выход:
01
01
01
01
10
10
10
10
10
10
10
10
01
01
01
01
Этот алгоритм легко обобщается на любое числостроки и столбцы во входных данных.
входные данные:
$_='ABCDE
12345
FGHIJ
67890';
выходные данные:
A1F6
B2G7
C3H8
D4I9
E5J0