Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#1 15-02-11 20:31:54

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
LinuxChrome 9.0

Вопрос на сообразительность

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


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#2 15-02-11 20:45:54

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 9.0

Re: Вопрос на сообразительность

Lord_Evil,
а если я напишу, скажем, на Ассемблере (ну, может, не совсем я, хехе, просто лабу такую проводил), а потом уберу переносы между строками, это будет считаться? smile


all your post are belong to us.

Вне форума

#3 15-02-11 20:50:25

ikkunan salvataja
Участник
Здесь с 30-01-10
Сообщений: 2,803
LinuxFirefox 3.6

Re: Вопрос на сообразительность

/* 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.

Вне форума

#4 15-02-11 20:51:28

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
LinuxChrome 9.0

Re: Вопрос на сообразительность

Майор Очевидность, не, давай без халтурства smile Нормальный вид кода, а не в одну строку через разделители типа ";" итп.

Добавлено спустя 01 мин 08 с:
ikkunan salvataja, ухты (= Что такое рекс?)
Кто короче может?


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#5 15-02-11 21:01:34

petrun
Участник
Здесь с 22-10-09
Сообщений: 3,172
LinuxFirefox 4.0

Re: Вопрос на сообразительность

sed -nr '1!G;h;$p'

Даже так

sed '1!G;h;$!d'

Отредактировано petrun (15-02-11 21:05:01)


Анархия-мама сынов своих любит

Вне форума

#6 15-02-11 21:06:19

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
LinuxChrome 9.0

Re: Вопрос на сообразительность

#!/usr/bin/ruby -Ku
puts File.open(file).to_a.reverse

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

Вне форума

#7 15-02-11 21:07:46

ikkunan salvataja
Участник
Здесь с 30-01-10
Сообщений: 2,803
LinuxFirefox 3.6

Re: Вопрос на сообразительность

Lord_Evil пишет:

(= Что такое рекс?)

Да было такое на МежДелМашевских мэйнфреймах. После оттуда в OS/2 перекочевало в качестве стандартного коммандного интерпертатора. Под линукс тоже есть, правда в сравнении с OS/2 в покоцаном виде, т.е. без расширений REXX utils, а первая строка в скрипте именно их использует. Называется Regina.  Вообще то оператор используется для поиска совпадений в строке. Первый операнд искомая подстрока, второй источник, третий массив переменных, где результат будет храниться. В a.0 будет количество строк, в которых данная подстрока найдена, ну в данном случае всех. Дальше думаю понятно.


Yesterday it worked.
Today it is not working.
Windows is like that.

Вне форума

#8 15-02-11 21:08:50

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
LinuxChrome 9.0

Re: Вопрос на сообразительность

petrun, это три строки?

Добавлено спустя 03 мин 33 с:
ikkunan salvataja, спасибо, интересно smile
Babusha, nice wink

Добавлено спустя 04 мин 36 с:
Собсно мой вариант:

#!/usr/bin/perl -w
print reverse <STDIN>;

Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#9 15-02-11 21:16:16

petrun
Участник
Здесь с 22-10-09
Сообщений: 3,172
LinuxFirefox 4.0

Re: Вопрос на сообразительность

Lord_Evil пишет:

это три строки?

Не думаю, что понятие "строка программы" тут ввобще применимо. Каждый "адрес-комманда" отделяется.

Добавлено спустя 01 мин 20 с:
Lord_Evil
Babusha
Читерить и использовать встроенный "reverse" нехорошо ж)


Анархия-мама сынов своих любит

Вне форума

#10 15-02-11 21:20:27

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
LinuxChrome 9.0

Re: Вопрос на сообразительность

petrun, объясни "как оно работает" smile

petrun пишет:

Читерить и использовать встроенный "reverse" нехорошо ж)

Зато практично big_smile Интересно, что вендовые коллеги нам покажут?)


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#11 15-02-11 21:26:36

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
LinuxChrome 9.0

Re: Вопрос на сообразительность

Читерить и использовать встроенный "reverse" нехорошо ж)

Ну значит придется подумать над алгоритмом переворачивания массива.  smile


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

Вне форума

#12 15-02-11 21:35:46

petrun
Участник
Здесь с 22-10-09
Сообщений: 3,172
LinuxFirefox 4.0

Re: Вопрос на сообразительность

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


Анархия-мама сынов своих любит

Вне форума

#13 15-02-11 21:36:01

Svart Testare
Великий Человек
Откуда: Вселенной
Здесь с 05-10-09
Сообщений: 5,481
Сайт
Windows 7Internet Explorer 9.0

Re: Вопрос на сообразительность

Lord_Evil пишет:

Зато практично  Интересно, что вендовые коллеги нам покажут?)

Наверное, можно короче, но первое что пришло в голову это:

$a = (Get-Content testfile.txt)
[array]::Reverse($a)
$a

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

Вне форума

#14 15-02-11 21:41:30

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
LinuxChrome 9.0

Re: Вопрос на сообразительность

Наверное, можно короче, но первое что пришло в голову это:

На руби мне больше нравится.  smile

Отредактировано Babusha (15-02-11 21:42:11)


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

Вне форума

#15 15-02-11 21:42:52

Svart Testare
Великий Человек
Откуда: Вселенной
Здесь с 05-10-09
Сообщений: 5,481
Сайт
Windows 7Internet Explorer 9.0

Re: Вопрос на сообразительность

Babusha пишет:

На руби мне больше нравится.

Для руби нужно что-то доставлять в винду, а PS уже «искаропки», да ещё и с IDE.


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

Вне форума

#16 16-02-11 01:51:59

shell32
XP fan
Здесь с 28-08-10
Сообщений: 235
UbuntuChromium 8.0

Re: Вопрос на сообразительность

Lord_Evil пишет:

Зато практично

если всё свелось к "reverse", то причём тут сообразительность?


25a12bc13076.gif  Windows == УМВР tongue

Вне форума

#17 16-02-11 02:24:32

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 9.0

Re: Вопрос на сообразительность

shell32 пишет:

причём тут сообразительность?

возможно, завтра покажу smile
я в качестве языка избрал х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 становится обычным регистром общего назначения, а кодовый сегмент одновременно является буфером для данных из файла; тому, кто сумеет написать для данной версии эксплоит, выдам медальку big_smile).
полезные ссылки: описание формата ELF.

завтра, скорее всего, допишу то, что требуется в ОП-посте.

[UPD:] feel the zen.


all your post are belong to us.

Вне форума

#18 16-02-11 03:26:53

iUser
Забанен
Откуда: Apple Store
Здесь с 16-02-11
Сообщений: 58
Сайт
MacintoshSafari 3.2

Re: Вопрос на сообразительность

Svart Testare пишет:
Babusha пишет:

На руби мне больше нравится.

Для руби нужно что-то доставлять в винду, а PS уже «искаропки», да ещё и с IDE.

big_smile Ты кроме win7 какие-нибудь винды еще знаешь?
PS. только в win7 «искаропки», а в остальных его надо качнуть и больше чем для рубироида.

Вне форума

#19 16-02-11 03:45:25

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 9.0

Re: Вопрос на сообразительность

iUser пишет:

Или возраст не позволяет?

этим Вы нарушаете сразу два правила форума:
1. обсуждение личности участников
2. «наезд» на модератора

поскольку Вы у нас здесь новенький, предупреждение, на первый раз, выносить не буду.
но надеюсь, что впредь Вы будете не только троллить, но и вести адекватную дискуссию.


all your post are belong to us.

Вне форума

#20 16-02-11 04:13:07

iUser
Забанен
Откуда: Apple Store
Здесь с 16-02-11
Сообщений: 58
Сайт
MacintoshSafari 3.2

Re: Вопрос на сообразительность

Майор Очевидность пишет:
iUser пишет:

Или возраст не позволяет?

этим Вы нарушаете сразу два правила форума:
1. обсуждение личности участников
2. «наезд» на модератора

поскольку Вы у нас здесь новенький, предупреждение, на первый раз, выносить не буду.
но надеюсь, что впредь Вы будете не только троллить, но и вести адекватную дискуссию.

Понял, исправлюсь.

===

По сабжу: не претендуя на лавры мегапрограммиста:

sort -r file

Обычная unix-консоль, на маке так, думаю и в линуксе тоже.

Отредактировано iUser (16-02-11 04:38:02)

Вне форума

#21 16-02-11 05:23:33

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
Windows XPOpera

Re: Вопрос на сообразительность

petrun, "В рот мне ноги, Девид Блейн!" класс, где таким трюкам научиться?


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#22 16-02-11 06:10:38

iUser
Забанен
Откуда: Apple Store
Здесь с 16-02-11
Сообщений: 58
Сайт
MacintoshSafari 3.2

Re: Вопрос на сообразительность

Lord_Evil пишет:

petrun, "В рот мне ноги, Девид Блейн!" класс, где таким трюкам научиться?

UNIX — универсальная среда программирования
В книге про sed и awk отдельные главы с детальным объяснением.

Отредактировано iUser (16-02-11 06:12:54)

Вне форума

#23 16-02-11 08:28:52

Svart Testare
Великий Человек
Откуда: Вселенной
Здесь с 05-10-09
Сообщений: 5,481
Сайт
Windows 7Internet Explorer 9.0

Re: Вопрос на сообразительность

iUser пишет:

а в остальных его надо качнуть и больше чем для рубироида

Для XP, например, это 5,9 мег. А Ruby как минимум 10. Так шо нинада ляля.


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

Вне форума

#24 16-02-11 08:35:39

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
LinuxOpera 11.00

Re: Вопрос на сообразительность

Svart Testare пишет:

Для XP, например, это 5,9 мег.

+ Фреймворк smile
Забейте спорить. Я о конкретно нативных виндовых инструментах спрашивал, включая ВБ и Делфи.

Добавлено спустя 21 с:
iUser, спасибо, почитаю.


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#25 16-02-11 09:35:34

Keeper
Angel
Здесь с 13-07-10
Сообщений: 232
Сайт
LinuxChrome 5.0

Re: Вопрос на сообразительность

#!/usr/bin/perl -w
print reverse <STDIN>;

Так лучше.

#!/usr/bin/perl 
print reverse <>;

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 0

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.010 сек, 7 запросов выполнено - Использовано памяти: 1.8 Мбайт (Пик: 1.88 Мбайт) ]