Вы не вошли.
Задача: написать программу на любом известном вам языке программирования, с наименьшим количеством строчек, которая бы выводила в терминал содержимое файла в обратном порядке(в смысле последняя строка -> первая итп).
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума


Lord_Evil,
а если я напишу, скажем, на Ассемблере (ну, может, не совсем я, хехе, просто лабу такую проводил), а потом уберу переносы между строками, это будет считаться? 
all your post are belong to us.
Вне форума


/* This is REXX script */
call SysFileSearch '', 'filename.txt', 'a.'
do i=a.0 to 1 by -1
say a.i
end
Yesterday it worked.
Today it is not working.
Windows is like that.
Вне форума
Майор Очевидность, не, давай без халтурства
Нормальный вид кода, а не в одну строку через разделители типа ";" итп.
Добавлено спустя 01 мин 08 с:
ikkunan salvataja, ухты (= Что такое рекс?)
Кто короче может?
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума


sed -nr '1!G;h;$p'
Даже так
sed '1!G;h;$!d'Отредактировано petrun (15-02-11 21:05:01)
Анархия-мама сынов своих любит
Вне форума


#!/usr/bin/ruby -Ku
puts File.open(file).to_a.reverseУдовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю. (с) Рехтур. Взламывает анусы по ойпи.
Вне форума


(= Что такое рекс?)
Да было такое на МежДелМашевских мэйнфреймах. После оттуда в OS/2 перекочевало в качестве стандартного коммандного интерпертатора. Под линукс тоже есть, правда в сравнении с OS/2 в покоцаном виде, т.е. без расширений REXX utils, а первая строка в скрипте именно их использует. Называется Regina. Вообще то оператор используется для поиска совпадений в строке. Первый операнд искомая подстрока, второй источник, третий массив переменных, где результат будет храниться. В a.0 будет количество строк, в которых данная подстрока найдена, ну в данном случае всех. Дальше думаю понятно.
Yesterday it worked.
Today it is not working.
Windows is like that.
Вне форума
petrun, это три строки?
Добавлено спустя 03 мин 33 с:
ikkunan salvataja, спасибо, интересно 
Babusha, nice 
Добавлено спустя 04 мин 36 с:
Собсно мой вариант:
#!/usr/bin/perl -w
print reverse <STDIN>;Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума


это три строки?
Не думаю, что понятие "строка программы" тут ввобще применимо. Каждый "адрес-комманда" отделяется.
Добавлено спустя 01 мин 20 с:
Lord_Evil
Babusha
Читерить и использовать встроенный "reverse" нехорошо ж)
Анархия-мама сынов своих любит
Вне форума
petrun, объясни "как оно работает" 
Читерить и использовать встроенный "reverse" нехорошо ж)
Зато практично
Интересно, что вендовые коллеги нам покажут?)
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума


Читерить и использовать встроенный "reverse" нехорошо ж)
Ну значит придется подумать над алгоритмом переворачивания массива. 
Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю. (с) Рехтур. Взламывает анусы по ойпи.
Вне форума


Lord_Evil
Sed тупо применяет список команд к каждой строке файла.
1!G - ко всем строкам кроме первой добавить содержимое буфера (hold space)
h - заменить содержимое hold space на содежимое области обработки (pattern space)
$!d - удалить (не выводить на печать) все строки, кроме последней, в которой образуется нужный нам список, разделенный \n.
Анархия-мама сынов своих любит
Вне форума


Зато практично Интересно, что вендовые коллеги нам покажут?)
Наверное, можно короче, но первое что пришло в голову это:
$a = (Get-Content testfile.txt)
[array]::Reverse($a)
$a«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Наверное, можно короче, но первое что пришло в голову это:
На руби мне больше нравится. 
Отредактировано Babusha (15-02-11 21:42:11)
Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю. (с) Рехтур. Взламывает анусы по ойпи.
Вне форума


На руби мне больше нравится.
Для руби нужно что-то доставлять в винду, а PS уже «искаропки», да ещё и с IDE.
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Зато практично
если всё свелось к "reverse", то причём тут сообразительность?
Windows == УМВР 
Вне форума


причём тут сообразительность?
возможно, завтра покажу 
я в качестве языка избрал х86-й ассемблер.
поскольку по количеству строк ни с одним из высокоуровневых языков asm сравниться не может, акцент будет сделан на количество байт в результирующем бинарнике.
ОСью нам послужит Linux 32bit (чтобы протестировать могли и те, у кого до сих пор нет 64-разрядной машины).
промежуточный результат:
представляю вашему вниманию полноценный с точки зрения Linux ELF-файл, в собранном виде занимающий 127 байт, выводящий первые 4096 байт файла «filename.txt» из рабочего каталога:
BITS 32;
ORG 00400000h; <-- далее, "$$"
@ehdr: ; Elf32_Ehdr
DB 7Fh, "ELF"; e_ident
DB 1, 1, 1, 0;
@main:
STD;
MOV EBX, @name;
JMP @code;
DW 2; e_type
DW 3; e_machine
DD 1; e_version
DD @main; e_entry
DD @phdr - $$; e_phoff
DD 0; e_shoff
DD 0; e_flags
DW @ehsz; e_ehsize
DW @phsz; e_phentsize
@phdr: ; Elf32_Phdr
DD 1; e_phnum p_type
; e_shentsize
DD 0; e_shnum p_offset
; e_shstrndx
DD $$; p_vaddr
DD $$; p_paddr
DD @fisz+@dasz; p_filesz
DD @fisz+@dasz; p_memsz
DD 7; p_flags
DD 1000h; p_align
@code:
XOR ECX, ECX;
LEA EAX, [ECX+5];
INT 80h; <-- SYS_OPEN
MOV EBX, EAX;
LEA EAX, [ECX+3];
MOV EDX, @dasz;
MOV ECX, @data;
INT 80h; <-- SYS_READ
MOV EDX, EAX;
XOR EBX, EBX;
LEA EAX, [EBX+4];
INT 80h; <-- SYS_WRITE
LEA EAX, [EBX+1];
INT 80h; <-- SYS_EXIT
; <-- здесь будут константы:
@ehsz equ $ - @ehdr;
@phsz equ $ - @phdr;
@dasz equ 1000h;
@name: DB "filename.txt", 0;
; <-- константы закончились
@data:
@fisz equ $ - $$;компилировать так:
#!/bin/bash
rm ELF
yasm -f bin -o ELF ELF.asm
chmod a+x ELFздесь были использованы некоторые трюки, чью общую идею мне подсказала одна стародавняя статья про уменьшение размера ELF, как, например, построение заголовка вручную, использование под код не читаемых системой участков, частичное перекрытие сегментов, а также «ручное» распределение областей памяти (так, в приведённой программе, сегмент стека отсутствует как класс, и ESP становится обычным регистром общего назначения, а кодовый сегмент одновременно является буфером для данных из файла; тому, кто сумеет написать для данной версии эксплоит, выдам медальку
).
полезные ссылки: описание формата ELF.
завтра, скорее всего, допишу то, что требуется в ОП-посте.
[UPD:] feel the zen.
all your post are belong to us.
Вне форума
Babusha пишет:На руби мне больше нравится.
Для руби нужно что-то доставлять в винду, а PS уже «искаропки», да ещё и с IDE.
Ты кроме win7 какие-нибудь винды еще знаешь?
PS. только в win7 «искаропки», а в остальных его надо качнуть и больше чем для рубироида.
Вне форума


Или возраст не позволяет?
этим Вы нарушаете сразу два правила форума:
1. обсуждение личности участников
2. «наезд» на модератора
поскольку Вы у нас здесь новенький, предупреждение, на первый раз, выносить не буду.
но надеюсь, что впредь Вы будете не только троллить, но и вести адекватную дискуссию.
all your post are belong to us.
Вне форума
iUser пишет:Или возраст не позволяет?
этим Вы нарушаете сразу два правила форума:
1. обсуждение личности участников
2. «наезд» на модераторапоскольку Вы у нас здесь новенький, предупреждение, на первый раз, выносить не буду.
но надеюсь, что впредь Вы будете не только троллить, но и вести адекватную дискуссию.
Понял, исправлюсь.
===
По сабжу: не претендуя на лавры мегапрограммиста:
sort -r fileОбычная unix-консоль, на маке так, думаю и в линуксе тоже.
Отредактировано iUser (16-02-11 04:38:02)
Вне форума
petrun, "В рот мне ноги, Девид Блейн!" класс, где таким трюкам научиться?
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума
petrun, "В рот мне ноги, Девид Блейн!" класс, где таким трюкам научиться?
UNIX — универсальная среда программирования
В книге про sed и awk отдельные главы с детальным объяснением.
Отредактировано iUser (16-02-11 06:12:54)
Вне форума


а в остальных его надо качнуть и больше чем для рубироида
Для XP, например, это 5,9 мег. А Ruby как минимум 10. Так шо нинада ляля.
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума
Для XP, например, это 5,9 мег.
+ Фреймворк 
Забейте спорить. Я о конкретно нативных виндовых инструментах спрашивал, включая ВБ и Делфи.
Добавлено спустя 21 с:
iUser, спасибо, почитаю.
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума
#!/usr/bin/perl -w
print reverse <STDIN>;Так лучше.
#!/usr/bin/perl
print reverse <>;Корпорация Lightman group: Герцог, оптимизация графа, формальная логика, ЦОД и многое другое.
Вне форума
[ Сгенерировано за 0.010 сек, 7 запросов выполнено - Использовано памяти: 1.8 Мбайт (Пик: 1.88 Мбайт) ]