Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2012, 08:30   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Plague
Сократил до 318 знаков
Здорово!
А про свой алгоритм решения расскажете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.07.2012, 08:32   #12
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

283 символа я в шоке
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 20.07.2012, 13:37   #13
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
чуток доработал своё первоначальное решение
Проверьте на
Код:
110
1
s-andriano вне форума Ответить с цитированием
Старый 20.07.2012, 14:37   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Проверьте на
Код:
110
1
Спасибо. Это действительно косячок был.

а вот теперь?
Код:
program MN;

function Digit1Less(const s1, s2 : string; i1, i2 : integer):boolean;
var ld : char;
begin
  Digit1Less := s1[i1]<s2[i2];
  if s1[i1]<>s2[i2] then Exit
  else {сюда  мы попали, если очередные элементы равны}
     begin
       repeat
         ld := s1[i1];
         while (i1<=Length(s1)) and (s1[i1]=ld) do Inc(i1);
         if i1>Length(s1) then i1 := Length(s1);
         while (i2<=Length(s2)) and (s2[i2]=ld) do Inc(i2);
         if i2>Length(s2) then i2 := Length(s2);
       until (s1[i1]<>s2[i2]) or ((i1=Length(s1)) and (i2=Length(s2)));
       Digit1Less := s1[i1]<s2[i2];
    end;
end;


var
  s1, s2 : string[255];
  i, l, i1, i2 : Integer;

begin
    assign(input, 'input.txt'); reset(input);
    assign(output, 'output.txt'); rewrite(output); 

    ReadLn (s1);
    ReadLn (s2);

    i1 := 1;
    i2 := 1;
    l :=  Length(s1)+Length(s2);
    for i:=1 to l do
      if (i1<=Length(s1)) and (i2<=Length(s2)) then
        if Digit1Less(s1, s2, i1, i2)
            then begin Write(s1[i1]); Inc(i1) end
            else begin Write(s2[i2]); Inc(i2) end
      else
        if i1<=Length(s1)
            then begin Write(s1[i1]); Inc(i1) end
            else begin Write(s2[i2]); Inc(i2) end;

     WriteLn;
end.

и ещё.
Бинго! Поздравляю!
мой предыдущий код успешно прошёл все тесты на ACMP.ru
это означает, что ваш контр-пример находит ошибки, которые пропускают остальные тесты на acmp.ru!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.07.2012, 15:06   #15
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Супер Поздравляю!!!
Пока ТС не отпишется, свое решение не буду выкладывать!
А то опять начнется "явные минусы" и никто спасибо даже не скажет)))
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 20.07.2012, 17:10   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я нигде не проверял, так что, если у кого есть желание, проверьте:
Код:
var
  i,j,k,l,m:integer;
  s,q:string;
begin
  j:=1;
  k:=1;
  readln(s);
  l:=length(s);
  readln(q);
  m:=length(q);
  for i:=1 to l+m do
    if k>m then begin write(s[j]); inc(j) end
    else if j>l then begin write(q[k]); inc(k) end
    else if copy(s,j,l-j+1)+copy(q,k,m-k+1)<copy(q,k,m-k+1)+copy(s,j,l-j+1)
      then begin write(s[j]); inc(j) end
      else begin write(q[k]); inc(k) end
end.
s-andriano вне форума Ответить с цитированием
Старый 20.07.2012, 19:26   #17
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Господа Всем огромное спасибо!

2 TinMan по истине очень странно! Без добавления проверки на 0, программа не проходила...

2 Plague Вы кажется ошибаетесь, я спасибо всегда говорил. А про явные ошибки, прошу простить!
Poma][a вне форума Ответить с цитированием
Старый 20.07.2012, 19:43   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от 'Poma
2 TinMan по истине очень странно! Без добавления проверки на 0, программа не проходила...
Это говорит о том, насколько качественно подобраны тесты: реальные ошибки не обнаруживает, зато о мнимых - сигнализирует.
По-хорошему, об обоих этих вариантах следовало бы написать разработчику тестов.
s-andriano вне форума Ответить с цитированием
Старый 20.07.2012, 20:15   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Это говорит о том, насколько качественно подобраны тесты: реальные ошибки не обнаруживает, зато о мнимых - сигнализирует.
По-хорошему, об обоих этих вариантах следовало бы написать разработчику тестов.
Вот пытаюсь достучаться до администратора.
Цитата:
Сообщение от s-andriano Посмотреть сообщение
Я нигде не проверял, так что, если у кого есть желание, проверьте
Прошло

Так проблема не с тестами, а у меня....
Код:
if r > r1 then
        rfin := r1
    else
        rfin := r;

    for i := 1  to Length(rfin) do
        Write (rfin[i])
end.
Вот так работает
Код:
if r > r1 then
        WriteLn (r1)
    else
        WriteLn (r);
    end.
Не работает
А почему, не знаю....
С 0 была моя ошибка, TinMan большущее Вам спасибо!
И Огромное Спасибо Всем! Очень интересные решения, вот будет чем заняться.

Последний раз редактировалось Poma][a; 21.07.2012 в 13:17.
Poma][a вне форума Ответить с цитированием
Старый 21.07.2012, 11:42   #20
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Не работает
А почему, не знаю....
Ромаха, фрагменты твои выглядят по меньшей мере странно (например: цикл до длины fin, а распечатываешь rfin). И вообще - ошибка может быть наведенной.. Пока не приведешь полный код, ответа не жди )).

Мужики, а поделитесь сокровенным знанием: что вы называете "символом"? Скажем - необязательные пробелы (неразделительные) включаются? Или, скажем, концы строк? Или же - это просто размер файла? выразитесь яснее, плз..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему то не считает минимальное число Alekzinder Помощь студентам 0 06.05.2012 02:18
минимальное число членов сумма которых АнюточкаАА Паскаль, Turbo Pascal, PascalABC.NET 1 10.04.2012 19:33
Минимальное число выше главной диагонали... Oliveyra Общие вопросы C/C++ 9 21.04.2011 22:31
Минимальное число Progs1024 Паскаль, Turbo Pascal, PascalABC.NET 14 11.10.2009 21:21