[perl] Сделать строку длиной N символов, добавив пробелы между словами
split по пробелу, и склеиваешь обратно
#!/usr/bin/perl
$string = 'Hello, it\'s me';
$N = 20;
@words = split (/ /, $string);
$i = $#words;
for ($counter = 0; $counter < $N - length($string); $counter++) {
@spaces[rand($i)]++;
}
for ($counter = 0; $counter < $i ; $counter++ ) {
$newstring .= @words[$counter]." " x (@spaces[$counter] + 1);
}
$newstring .= @words[$i];
print $newstring."\n";
Можно написать и лучше наверняка, но пусть это профессионалы делают
#!/usr/bin/perl
$string = 'Hello, it\'s me';
$N = 20;
@words = split (/ /, $string);
$i = $#words;
for ($counter = 0; $counter < $N - length($string); $counter++) {
$words[rand($i)] .= ' ';
}
$newstring = join ' ', @words;
print $newstring.".\n";
О, ништяк
Не факт, что я бы додумался до конструкции.
$words[rand($i)] .= ' ';
То, что у меня крутилось в голове, было сложнее.
Причем так, чтобы места, куда ставить пробел, выбирались случайно. Иначе в тексте, состоящем из многих строк, появятся области с более разреженным текстом.неверно
причем ни туда ни обратно...
нужно специально выбирать места
Будешь выбирать случайно, конда-нибудь получишь все пробелы после первого слова. Расставлять пробелы нужно равномерно.
Оставить комментарий
Elina74
Есть ли более-менее стандартная библиотека?Есть строка - набор слов из букв. Слова разделены пробелами. Общая длина строки меньше N.
Нужно между отдельными словами вставить пробелы. Столько раз, чтобы общая длина стала равна N.
Причем так, чтобы места, куда ставить пробел, выбирались случайно. Иначе в тексте, состоящем из многих строк, появятся области с более разреженным текстом.