Aragaer
то есть алгоритм в лоб выглядит так:
для каждой строки
взять первое слово
для каждой строки
вывести первое, взятое раньше+второе, взятое сейчас
Кабачок
Aragaer
более того, для stdin даже не получается сразу угадать размер памяти для аллокации. Это не сильно замедлит программу, но код станет сложнее
Aragaer
realloc будет скорее всего увеличивать на одном и том же месте, без копирования
Dmitry
си тормозят на выхлопе тоже!
Dmitry
111
Кабачок
думаю можно делать mmap, все равно есть входной файл и выходной
Aragaer
ок
Alexander
0.93
Alexander
у меня
Dmitry
у тебя который код?
Alexander
сишка
Alexander
тот что выше был с более аккуратным выводом
Alexander
сейчас проверю, может чушь генерирую
Alexander
да, чушь
Dmitry
у меня с 12 до 4 секунд, сейчас найду, что с буферизацией сделать
Alexander
ну может просто переносов нету, но не знаю
Alexander
у меня goto included
Alexander
/me запер дверь на второй замок, ибо велоцерапторы это не шутка
Кабачок
какая-то реминисценция к jurassic park?
Aragaer
а можно еще пример входного файла для помучать?
Alexander
@greenest_pig xkcd
Alexander
@aragaer где-то в логах выше
Alexander
https://www.xkcd.com/292/
Aragaer
еще уточню - пробелы есть только в строках, между первым и вторым словом и он там ровно один
Alexander
1.04
Alexander
@aragaer да
Alexander
если что конец строки там \r\n
Alexander
но это пофиг
Dmitry
покажи код?
Alexander
\r можно включать в строку
Alexander
только не переставай после этого предлагать мне проекты с сишкой : ]
Alexander
https://pastebin.com/E7gVniNe
Dmitry
а он точно честный?
Alexander
нет
Alexander
тут очень много нечестности:
1. есть контанты типа max_lines и т.п.
2. считанное модифицируется inline
3. нету проверки того что write действительно все записал
Alexander
это вариант @eahqzsr, только чутка модифицированный
Dmitry
ага. но вообще у меня хороший прогноз по доведению моего кода
Dmitry
там опять уперлось в I/O
Dmitry
ща я туда свой рингбуфер вкорячу
Alexander
ну тут тоже
Alexander
я забил на ринг буфферы
Alexander
я просто пишу в буффер, если он кончился то дампаю его и дальше пишу с нуля
Alexander
надо бы честно написать, но там будет тупой цикл, который будет на 1 итерации выходить при той же скорости
Alexander
могу попробовать избавиться от констант
Dmitry
ща...
Alexander
это вроде не сложно, только realloc делать на исходную строку
Alexander
экспоненциальный какой
Alexander
но так лень
Alexander
наверное лучше пойти книжку почитать, сделать очередное задание из пирса и спать
Alexander
и придумать как сделать формочки для автоматической генерации интересных файлов и т.п. на сайт, чтобы делать репорты по таким олимпиадкам
Alexander
и может старые отрыть
Alexander
это проще чем начать писать "I want something strange" про haskell
Aragaer
мм.. да, почти пофиг, в результате тоже будет \r\n
Alexander
формально в питоновый вырезает \r
Alexander
но нам пофиг
Aragaer
... какого размера будет выходной файл для таких входных данных?
Alexander
10000 строк
Alexander
каждое слово по 5 символов, в примере
Alexander
а выходной сам считай
Aragaer
по 10 байт. 110кб чтле?
Aragaer
а
Alexander
@voidlizard в моём косяк какой-то
Alexander
wc -l не то показывает, но начало похоже на правду
Aragaer
да, у меня 20 тысяч
Alexander
миллион же должен быть
Alexander
n*n
Anonymous
??
Anonymous
у меня было больше миллиона
Alexander
10000*10000
Alexander
1у8 ,
Alexander
1e8
Dmitry
dmz@zen ~/tmp/bsfuck $ wc -l x2
100000000 x2
Alexander
у меня off by 1
Alexander
последняя строка не пишется
Alexander
вот так и бери чужие программы за базу
Alexander
починил
Alexander
1.05
Aragaer
100 миллионов, если по 10 тысяч