Автор Тема: Задачка для собеседования  (Прочитано 26090 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #15 : Ноябрь 05, 2012, 11:36:00 am »
Вариант для случая, когда длина массивов неизвестна:
Процедура СравнитьМассивы2(Массив1, Массив2)
   
    Разница = 0;
    Индекс1 = 0;
    Индекс2 = 0;
   
    Пока Массив2[Индекс2] <> 0 Цикл
   
        Индекс2 = Индекс1 + Разница;
       
        Пока Массив1[Индекс1] <> Массив2[Индекс2] Цикл
            Сообщить(Массив2[Индекс2]);
            Индекс2 = Индекс2 + 1;
        КонецЦикла; 
       
        Разница = Индекс2 - Индекс1;
       
        Индекс1 = Индекс1 + 1;
       
    КонецЦикла;
   
КонецПроцедуры

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #16 : Ноябрь 05, 2012, 11:50:59 am »
ilovb - та же байда.. хвоста нет... в терминах инвариантов задачи не выполняется  not ( (a=0) and  (b[j]=0) )
« Последнее редактирование: Ноябрь 05, 2012, 11:52:38 am от DIzer »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #17 : Ноябрь 05, 2012, 11:54:19 am »
Я прогнал на тестах. Все правильно вроде.

Log:
28
----------------
38
39
30
----------------
48
----------------
58
59
50
----------------
68
----------------
78
79
70
----------------
80
81
82
83
84
85
86
87
----------------
« Последнее редактирование: Ноябрь 05, 2012, 11:56:26 am от ilovb »

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #18 : Ноябрь 05, 2012, 11:54:37 am »
Странный глюк не могу выправить , должно быть not ( (a =0) and  (b[j] = 0) )

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #19 : Ноябрь 05, 2012, 11:55:37 am »
блин...  a - не печатается...

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #20 : Ноябрь 05, 2012, 11:57:04 am »
a[i] не печатается..

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #21 : Ноябрь 05, 2012, 11:58:22 am »
a[i] не печатается..

Нужно пробелы ставить [ i ]  ;)

зы Это тэг италика срабатывает. Меня тоже уже задолбало :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #22 : Ноябрь 05, 2012, 12:01:01 pm »
...должно быть not ( (a[ i ] =0) and  (b[ j ] = 0) )
Не понял. Зачем?

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #23 : Ноябрь 05, 2012, 12:08:36 pm »
формальная констатация факта , что мы  не просмотрели все  элементы в массивах... -- но обратите внимание  - я его в тот момент, когда писал кусок НЕ ЗНАЛ  (ибо я  не въехал в задачу).

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #24 : Ноябрь 05, 2012, 12:16:51 pm »
Тык у меня же Массив2[Индекс2] <> 0

этого достаточно т.к.:
Длина(Массив2) >= Длина(Массив1)

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #25 : Ноябрь 05, 2012, 12:24:39 pm »
я говорил про свой алгоритм...  у вас он ДРУГОЙ (точнее , я решал задачу "в лоб",  вы заменяли координаты -соответственно и ВИД этого инварианта в ВАШЕЙ системе координат другой)
« Последнее редактирование: Ноябрь 05, 2012, 12:27:34 pm от DIzer »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #26 : Ноябрь 05, 2012, 12:36:49 pm »
Циклом дейкстры наверно так будет:
procedure compare(a, b)
   
    i = 0;
    j = 0;
   
    while true do
       
        if a[i] <> b[j] then
            message(b[j]);
            inc(j);
        elsif a[i] <> 0 then
            inc(i);
            inc(j);
        else
            break;
        endif;
       
    enddo
   
endprocedure

ps Самый простой код однако  ???

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #27 : Ноябрь 05, 2012, 12:42:09 pm »
Это практически вариант Valery Solovey. Только в более каноническом виде  :)

ps do loop в 1С нету, потому while true

DIzer

  • Гость
Re: Задачка для собеседования
« Ответ #28 : Ноябрь 05, 2012, 12:53:04 pm »
мне не нравится - напрягает (вариант Валерия также), правда это все цветочки , по сравнению с тем, что сделал Geniepro

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка для собеседования
« Ответ #29 : Ноябрь 05, 2012, 01:03:03 pm »
А на ruby эта задача решается так:
b - a
;D ;D ;D