Случайная перестановка строк
Проблема
Требуется скопировать файл и случайным образом переставить строки копии.
Решение
Прочитайте все строки в массив, перетасуйте элементы массива и запишите полученную перестановку:
# Используется функция shuffle
while (<INPUT>) {
push(@lines, $_);
}
@reordered = shuffle(@lines);
foreach (@reordered) {
print OUTPUT $_;
}
Комментарий
Самое простое решение — прочитать все строки файла и переставить их в памяти. Смещения строк
в файле неизвестны, поэтому нельзя перетасовать список с номерами строк и затем извлечь строки в
порядке их появления в файле. Впрочем, даже при известных смещениях такое решение, вероятно,
будет работать медленнее, поскольку придется многократно перемещаться по файлу функцией
seek
вместо простого последовательного чтения.
См. также
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|