21

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

ADR написав:

Delphi (не провіряв вивід, але воно компілюється:)

Прихований текст

program ParseBuildings;
uses
  Classes;

var
  StrList: TStringList;
  I: Integer;
begin
  StrList := TStringList.Create;
  with StrList do
    try
      LoadFromFile('buildings.txt');
      NameValueSeparator := '    ';
      for I := 0 to Count -1 do
        if Pos('    ', ValueFromIndex[i]) = 0 then
          WriteLn(Names[i] + ' | ' + ValueFromIndex[i])
    finally
        StrList.Free;
    end;
end.

Компілюється - можливо. Але можете бодай комент підкинути? Бо щось я не вкурив тут...

I belong to the Dead Generation.

22

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

C#:

using System;
using System.IO; 

public class HelloWorld
{
    static public void Main ()
    {
        try
        {
            using (StreamReader reader = new StreamReader("t.html"))
            {
                String line;
                while ((line = reader.ReadLine()) != null)
                {
                    String[] items = line.Trim().Split(new Char[] {'\t'});
                    if (items.Length == 2)
                    {
                        Console.WriteLine("Street: " + items[0]);
                        Console.WriteLine("House: " + items[1]);
                        Console.WriteLine();
                    }
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
 
}

Output:

Street: вул. Сергія Єфремова
House: 1/2

Street: вул. 100-Р.Червоного Хреста
House: 1

Street: вул. 100-Р.Червоного Хреста
House: 2

Street: вул. 100-Р.Червоного Хреста
House: 3

Street: вул. 100-Р.Червоного Хреста
House: 2в

Street: вул. 2000-Ліття Різдва Христового
House: 4

Street: вул. 24 Серпня
House: 1

23

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Ruby:

counter = 1
file = File.new("t.html", "r")
while (line = file.gets)
    lines = line.strip.split("\t")
    if (lines.size == 2)
        puts "Street: #{line[0]}\nHouse: #{line[1]}\n\n"
    end
end
file.close

Output:

Street: вул. Сергія Єфремова
House: 1/2

Street: вул. 100-Р.Червоного Хреста
House: 1

Street: вул. 100-Р.Червоного Хреста
House: 2

Street: вул. 100-Р.Червоного Хреста
House: 3

Street: вул. 100-Р.Червоного Хреста
House: 2в

Street: вул. 2000-Ліття Різдва Христового
House: 4

Street: вул. 24 Серпня
House: 1

24

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Трохи спростив :)
Ruby:

IO.foreach "t.html" do |line|
    lines = line.strip.split("\t")
    puts (lines.size == 2) ? "Street: #{line[0]}\nHouse: #{line[1]}\n\n" : ""
end

P.S. Шкода, що end потрібно в кінці конструкцій використовувати.

Подякували: ADR, Bartash2

25

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Bartash написав:
ADR написав:

Delphi (не провіряв вивід, але воно компілюється:)

Прихований текст

program ParseBuildings;
uses
  Classes;

var
  StrList: TStringList;
  I: Integer;
begin
  StrList := TStringList.Create;
  with StrList do
    try
      LoadFromFile('buildings.txt');
      NameValueSeparator := '    ';
      for I := 0 to Count -1 do
        if Pos('    ', ValueFromIndex[i]) = 0 then
          WriteLn(Names[i] + ' | ' + ValueFromIndex[i])
    finally
        StrList.Free;
    end;
end.

Компілюється - можливо. Але можете бодай комент підкинути? Бо щось я не вкурив тут...

Так краще?

26

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

ADR написав:
Bartash написав:
ADR написав:

Delphi (не провіряв вивід, але воно компілюється:)

Прихований текст

program ParseBuildings;
uses
  Classes;

var
  StrList: TStringList;
  I: Integer;
begin
  StrList := TStringList.Create;
  with StrList do
    try
      LoadFromFile('buildings.txt');
      NameValueSeparator := '    ';
      for I := 0 to Count -1 do
        if Pos('    ', ValueFromIndex[i]) = 0 then
          WriteLn(Names[i] + ' | ' + ValueFromIndex[i])
    finally
        StrList.Free;
    end;
end.

Компілюється - можливо. Але можете бодай комент підкинути? Бо щось я не вкурив тут...

Так краще?

Значно ліпше, дякую. Тепер усе стало на місця в голові. :)

I belong to the Dead Generation.

27 Востаннє редагувалося Bartash (19.03.2013 08:06:28)

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Replace написав:

Трохи спростив :)
Ruby:

IO.foreach "t.html" do |line|
    lines = line.strip.split("\t")
    puts (lines.size == 2) ? "Street: #{line[0]}\nHouse: #{line[1]}\n\n" : ""
end

P.S. Шкода, що end потрібно в кінці конструкцій використовувати.

Скидається на те, що лавровий вінець дістанеться Рубінові у цій задачі:).

I belong to the Dead Generation.
Подякували: Replace1

28

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

оновив тему і додав голосування. Реально рубі тут дивиться елегантно  =)

29

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

На Python при бажанні теж можна код скоротити і вийде по кількості рядків як і в Ruby.

30

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Python:

lines = [line.strip().split('\t') for line in open('t.html')]
for line in lines:
    print len(line) == 2 and 'Street: ' + line[0] + '\nHouse: ' + line[1] + '\n' or ''

Виведення:

Street: вул. Сергія Єфремова
House: 1/2

Street: вул. 100-Р.Червоного Хреста
House: 1

Street: вул. 100-Р.Червоного Хреста
House: 2

Street: вул. 100-Р.Червоного Хреста
House: 3

Street: вул. 100-Р.Червоного Хреста
House: 2в

Street: вул. 2000-Ліття Різдва Христового
House: 4

Street: вул. 24 Серпня
House: 1

Хоча по кількості символів та кількості конструкцій Ruby всеодно краще. =)

Подякували: Bartash1

31

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

funivan написав:

оновив тему і додав голосування. Реально рубі тут дивиться елегантно  =)

Може, у першому пості теми варто поспойлити розв'язки? Бо повідомлення виходить досить громіздким. :)

I belong to the Dead Generation.

32

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

На Python при бажанні теж можна код скоротити і вийде по кількості рядків як і в Ruby.

Ну я не бачу смислу скорочувати код. На мою думку не в кількості рядків суть а в прозорості.
Наприклад ці два куски коду зовсім по різному читаються. Тобто менше конструкцій менше ф-цій викликається а в один рядок багато чого можна написати =))) А смисл?

lines = [line.strip().split('\t') for line in open('t.html')]
IO.foreach "t.html" do |line|
   lines = line.strip.split("\t")

Погоджуєтесь ?

Подякували: Replace, Torbins2

33

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Якщо уже ганятися за рядками, то більшість мов дозволяє взагалі усе в один рядок написати. Головне розділові знаки не забути.
А взагалі не дивно, що скриптові мови у задачі по обробці тексту виявилися кращими.

34

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

А взагалі не дивно, що скриптові мови у задачі по обробці тексту виявилися кращими.

таки так. Це цілком логічно =) Але побачити реалізацію на інших мовах теж цікаво ;)

35 Востаннє редагувалося Vo_Vik (19.03.2013 17:18:22)

Re: Обробка файлу PHP & Python & Ruby & С++ & Java та багато інших

Мене, наприклад, в подібних темах цікавить не краще-гірше. А просто побачити реалізації на різних мовах.