Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 18.02.2015
Сообщений: 15

Переупорядочить строки

04.10.2015, 20:52. Показов 1448. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть, допустим, текстовый файл:
Строка 1
...
Строка n
и есть список некоторых целых чисел:
[3, 1, 2, 5, 4]
Как бы мне, взяв строки из первого файла, записать их в новый, отсортировав в порядке чисел списка?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2015, 20:52
Ответы с готовыми решениями:

Переупорядочить массив по убыванию
Помогите никак не могу доделать. Не могу вывести отсортированный массив в MSFlexGrid2 Элементы массива упорядочены по возрастанию...

Переупорядочить колонки DataGridView
Есть DataGridView. В нем надо переупорядочить колонки. Поступаем так: '----Упорядочиваем колонки Grid-а ...

Переупорядочить массив по возрастанию
) Дан одномерный массив А длиной М<=20, упорядоченный по убыванию. - пере упорядочить массив А по возрастанию его элементов, используя...

8
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
04.10.2015, 22:36
Лучший ответ Сообщение было отмечено bl1nd_cat как решение

Решение

Haskell
1
2
3
4
5
6
7
8
9
import System.IO
 
main = do
       handlei <- openFile "iii.txt" ReadMode
       contf   <- hGetContents handlei
       handleo <- openFile "ooo.txt" WriteMode
       mapM (hPutStrLn handleo) $ map (\ x -> (lines contf) !! (x-1)) [5,4,3,2,1]
       hClose handlei
       hClose handleo
В текущую директорию кладем файл iii.txt

Code
1
2
3
4
5
1111111111111111111
2222222222222222222
3333333333333333333
4444444444444444444
5555555555555555555
После выполнения кода получим файл ooo.txt

Code
1
2
3
4
5
5555555555555555555
4444444444444444444
3333333333333333333
2222222222222222222
1111111111111111111
2
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
04.10.2015, 23:47
Единственно, что бы я заменил - это одну строчку (убрать !! и заменить на sort - для длинных текстов должно быть быстрее, хотя не проверял)
Haskell
1
mapM (hPutStrLn handleo) . map snd . sort . zip [3,1,2,5,4] $ lines contf
1
 Аватар для Araneo
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
05.10.2015, 00:03
_Ivana, я уже думал, сорт осуществляет другое правило перестановок, увы. Не поставить третью строку на первое место, первую на вторую... А первую запихнуть на третье, вторую на первое...
Увы.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2015, 00:15
Возможно я не тот алгоритм сортировки реализовал, но я верю что его можно немножко допилить до правильного, именно с сортировкой, просто выбрать другое сравнение, скорее всего по паре интов + строка....
0
 Аватар для Araneo
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
05.10.2015, 00:35
Имхо, достаточно заменить структуру данных. И доставать не из списка, а из скажем Map уже лучше будет. А если вспомнить про IntMap...
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2015, 01:11
Araneo, вы правы, специализированный контейнер тут будет хорошо смотреться. Единственно что я хотел бы прокомментировать - надо правильно и грамотно соблюсти баланс ленивости-строгости при большом потоке входных данных. Но здесь для меня пока все темный лес: решал простейшую задачку с Тимуса - сортировка списка, тривиальная, но данных много и ограничения по памяти. Написал 4 разных алгоритма на разных контейнерах, каскадно-фреймовые и т.п. - не укладывалось в ограничения. Кто решил - принудительно как-то хитро форсили все через эмпирически подобранные интервалы... Ну да ладно, это я что-то далеко ушел от стартовой задачи ТС с его 5 строками. Хотя, если их будет побольше - то можно будет задуматься и об оптимизационных моментах...
0
1 / 1 / 0
Регистрация: 18.02.2015
Сообщений: 15
05.10.2015, 02:33  [ТС]
Спасибо
Единственное, мы получим исключение об отрицательном индексе, если список будет содержать 0.
0
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9
05.10.2015, 14:39
Цитата Сообщение от bl1nd_cat Посмотреть сообщение
есть список некоторых целых чисел
Не задано, как отображаются числа из списка на строки файла. Если предположить что элемент списка, это преобразуемый в символ первый элемент строки, пустые строки и строки, первые элементы которых отсутствуют в списке, в выходном списке будут вначале, то
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import System.IO
import Data.Function
import Data.List
import Data.Char
 
main :: IO () 
main = withFile "../iii.txt" ReadMode $ \ hI -> do
            contf   <- hGetContents hI
            let  z = ord '0'
                 s = map (chr.(+z)) [3, 1, 2, 5, 4]
                 cmp [] = -2
                 cmp (x:_) = case elemIndex x s of
                                (Just i) -> i
                                _ -> -1
                 ls = unlines $ sortBy (compare `on` cmp)  $ lines contf
            writeFile "../ooo.txt" ls
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2015, 14:39
Помогаю со студенческими работами здесь

Переупорядочить массив по убыванию в строках
Элементы массива упорядочены по возрастанию в строках. Переупорядочить массив по убыванию в строках.

Заданную последовательность слов переупорядочить в алфавитном порядке
Составить программу &quot;Заданную последовательность слов переупорядочить в алфавитном порядке&quot;, используя цикл

Переупорядочить массив по убыванию его элементов в строках
помогите доделать задание: 1.Организовать ввод элементов двумерного массива размерностью N*M из текстового файла(открытие файла через...

Слова переупорядочить так, чтобы первым было слово, длина которого минимальна
Слова в каждой записи переупорядочить так, чтобы первым было слово, длина которого минимально отличается или равна длине первого...

переупорядочить заданный одномерный массив так, чтобы его элементы шли в порядке возрастания их близости к целым числам
не могу сделать задачу.....помогите пожалуйста ))))))))) задача: переупорядочить заданный одномерный массив так, чтобы его элементы шли в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru