Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.09.21;
Скачать: [xml.tar.bz2];

Вниз

Тестовые задания при приёме на работу   Найти похожие ветки 

 
Kerk ©   (2014-02-12 20:45) [120]


> если проекция это только отображение первого слоя

Да елки, проекция - это не отображение первого слоя! Ты на в школе на черчении спал чтоль? :)


 
Rouse_ ©   (2014-02-12 20:49) [121]


> Kerk ©   (12.02.14 20:45) [120]
> Да елки, проекция - это не отображение первого слоя! Ты
> на в школе на черчении спал чтоль? :)

Не спал, поэтому и не понимаю в чем затруднения в моей реализации алгоритма? :)


 
Rouse_ ©   (2014-02-12 20:53) [122]

Мне кажется лучше сделать так:
GEN++ даст входные матрицы проекций и тот результат, который должен получится.
Отсюда и будем плясать (бо сам уж заинтересовался - чеж там хитрого такого) :)
Ну а после этого и можно рассмотреть варианты решений.


 
Dennis I. Komarov ©   (2014-02-12 21:00) [123]


> Rouse_ ©   (12.02.14 19:39) [112]
>
> > GEN++ ©  
>
> Задача ясна, первое что на вскидку вижу, кубический массив
> заполненный единицами и три прохода по векторам (X, Y, Z)
> со скидыванием в ноль по входным матрицам. В итоге остаются
> инициализированные единицами только те ячейки куба, которые
> соответствуют трем входным матрицам.
> Судя по всему неопределенностей здесь нет и время на реализацию
> минут пятнадцать.
> Я где-то ошибся?


Ну да,
шаг 1 - на полный куб накладываем 0-проекции (пропилы и проелы)
шаг 2 - по каждой стороне проекции вычисляем количество "1" (недоелы)
шаг 3 - в том месте где sum(недоелы) >=3 возможны варианты (т.е. невидимый кубик)
шаг 4 - вычисление значение невидимого кубика из расчета всех проекций
шаг 5 - количество неопределенных кубиков ˆ2 есть количество вариантов


 
Dennis I. Komarov ©   (2014-02-12 21:03) [124]

шаг 3 - ..... >=2


 
Kerk ©   (2014-02-12 21:04) [125]


>  Rouse_ ©   (12.02.14 20:49) [121]
>
> > Kerk ©   (12.02.14 20:45) [120]
> > Да елки, проекция - это не отображение первого слоя! Ты
> > на в школе на черчении спал чтоль? :)
>
> Не спал, поэтому и не понимаю в чем затруднения в моей реализации
> алгоритма? :)

Положи тапок на лист бумаги, обведи его карандашом. Убери тапок. Что останется на бумаге? Рентген, верхний слой тапка или все же одна из его проекций? :)


 
Kerk ©   (2014-02-12 21:05) [126]


> Dennis I. Komarov ©   (12.02.14 21:00) [123]

Да, места, где точно, нули определить легко. Дальше перебор. Вся задача сводится к сокращению этого перебора. Копчиком чувствую, что нужно посмотреть в сторону алгоритмов решения судоку :)


 
Kerk ©   (2014-02-12 21:08) [127]

Если с тапком не получится, обведи банку с огурцами. Проверь видно ли на проекции, что в банке есть огурцы :)


 
Dennis I. Komarov ©   (2014-02-12 21:15) [128]


> Да, места, где точно, нули определить легко. Дальше перебор.
>  Вся задача сводится к сокращению этого перебора. Копчиком
> чувствую, что нужно посмотреть в сторону алгоритмов решения
> судоку :)

3. по сумме не нулевых элементов вычисляют где он не один, т.е. возможны различные варианты.
4. эти варианты накладываем на 0-проекции и на S-проекции - там где совпало с 0 или с 1 (на S) элемент однозначно определен, else может принимать оба значения (не противоречит исходным данным)

Все довольно однозначно, никаких переборов


 
Dennis I. Komarov ©   (2014-02-12 21:26) [129]


> Копчиком чувствую, что нужно посмотреть в сторону алгоритмов
> решения судоку

Я делал, там сложнее.

Сложнее тем, что при определенных исходных дальнейший ход вычислить математически никак и приходится делать предположение и опровергать его через какое-то кол-во итераций.

Тут есть однозначные проекции и куча вариантов ответов, а не единственный правильный.


 
Rouse_ ©   (2014-02-12 21:27) [130]

Сходил принял конячку - осмыслил решение :)

Допустим дано три проекции вида:

0000
0110
0110
0000


Если их применить по трем осям получается куб в центре изначального, причем если убрать любой из его элементов - он будет соответствовать проекциям.
Т.е. имеем 4 варианта решения.

Отсюда строим алгоритм:
1. изначально бьем тунель из нулей по каждой оси
2. (тут два решения - умное и правильное)
2.1: умное - ищем группы кубов и убирая каждый из них - сверяемся с проекциями (оно нам надо?)
2.2: (правильное) Имея на руках только отсеченные кубы, бежим по ним всем и исключаем со сверкой с матрицами. Те кто не прошли сверку - в результат вывода не попадают.

Итого: время на реализацию 30 минут, время работы алгоритма менее секунды.


 
Dennis I. Komarov ©   (2014-02-12 21:34) [131]


> Сходил принял конячку - осмыслил решение :)

Тебя допинг-контроль спалил :)


 
Rouse_ ©   (2014-02-12 21:40) [132]


> Dennis I. Komarov ©   (12.02.14 21:34) [131]
> Тебя допинг-контроль спалил :)

Не - жена ща с полями Галуа разбирается, ей точно не до меня :)


 
Dennis I. Komarov ©   (2014-02-12 21:51) [133]


> шаг 5 - количество неопределенных кубиков ˆ2 есть количество
> вариантов

тут тоже не совсем верно, из этого количества надо вычесть количество вариантов, которые при исходных "0" в ряду дают "1" в проекции - такой вариант будет противоречить условию.


 
Dennis I. Komarov ©   (2014-02-12 21:54) [134]


> Допустим дано три проекции вида:
>
> 0000
> 0110
> 0110
> 0000


По нему 8 элементов однозначно не определены, но так как в любой проекции на них "1" в условиях не должно быть два "0" подряд


 
Rouse_ ©   (2014-02-12 21:58) [135]


> Dennis I. Komarov ©   (12.02.14 21:54) [134]
> По нему 8 элементов однозначно не определены

С какого перепугу?


 
Inovet ©   (2014-02-12 22:01) [136]

Проекции — это OR всех слоёв по оси. Я правильно понимаю?


 
Dennis I. Komarov ©   (2014-02-12 22:04) [137]


> Проекции — это OR всех слоёв по оси. Я правильно понимаю?

true


 
Dennis I. Komarov ©   (2014-02-12 22:08) [138]


> С какого перепугу?

Потому как все три проекции одинаковы (как я понял), и согласно им все крайние грани пусты. Остается внутри куб 2х2 из 8-ми элементов. Где я не прав?


 
GEN++ ©   (2014-02-12 22:09) [139]

>Rouse_ ©
>Kerk ©
Я Вам отправил на почту небольшую анимашку с тестовыми заданиями
и возможностью их ручного решения


 
GEN++ ©   (2014-02-12 22:09) [140]

>Rouse_ ©
>Kerk ©
Я Вам отправил на почту небольшую анимашку с тестовыми заданиями
и возможностью их ручного решения


 
Dennis I. Komarov ©   (2014-02-12 22:09) [141]


> Остается внутри куб 2х2 из 8-ми элементов

2х2х2 разумеется...


 
Rouse_ ©   (2014-02-12 22:10) [142]

Ну как минимум в том, что 2 х 2 = 8 :)


 
Rouse_ ©   (2014-02-12 22:11) [143]


> Dennis I. Komarov ©   (12.02.14 22:09) [141]
>
> > Остается внутри куб 2х2 из 8-ми элементов
>
> 2х2х2 разумеется...

Ой плин - эт я затупил - сори, конечно 8 :)))


 
Rouse_ ©   (2014-02-12 22:11) [144]


> GEN++ ©   (12.02.14 22:09) [140]

Угу спасибо - хорошая задачка для разминки мозга :)


 
Kerk ©   (2014-02-12 22:42) [145]


> GEN++ ©   (12.02.14 22:09) [139]

А, это от тебя письмо было :)
Я сразу не понял.


 
Dennis I. Komarov ©   (2014-02-12 22:49) [146]

так, ну решение далее такое (совсем без перебора не придумал):

5 - цикл по всем неопределенным вариантам, на каждом формируем S-проекции (обозначим S2). Далее сравниваем если в S2-проекции элемент "0", а в исходной "1", тогда данный вариант противоречит условию


 
Dennis I. Komarov ©   (2014-02-12 23:06) [147]

P.S.
Кстати, достаточно вычислить и проверить проекции S2 только этого элемента.


 
Юрий Зотов ©   (2014-02-13 00:01) [148]

В тему - сегодня возник спор, в процессе которого выяснилось, что два профессиональных программиста не понимают механизмов передачи параметров по ссылке и по значению. Я в шоке.


 
Sha ©   (2014-02-13 00:16) [149]

> GEN++ ©   (12.02.14 10:41) [108]
> Есть варианты где число решений превышает 100
> На это достаточно скоростной код тратит 3-4 минуты

Че-то много)
Можешь хоть один такой вариант привести?


 
Styx   (2014-02-13 00:20) [150]


> Ориентация естественно известна но решение в три строки?
> ???????

Тогда cube[i,j,k]=p1[i,j]*p2[j,k]*p3[i,k] обязательно будет решением.
Но если нужно найти все возможные решения и/или проверить проекции на совместимость - тогда, конечно, не три строки.


 
Sha ©   (2014-02-13 00:22) [151]

> Юрий Зотов ©   (13.02.14 00:01) [148]
> два профессиональных программиста не понимают механизмов передачи параметров

потамушта задурили людям головы всякой хренью вместо преподавания основ


 
Inovet ©   (2014-02-13 00:26) [152]

> [149] Sha ©   (13.02.14 00:16)
> Можешь хоть один такой вариант привести?

Керк приводил

> [114] Kerk ©   (12.02.14 19:56)

4*4*4*4=256 вариантов только с 1 единицей в каждом слое отнимем из всего 2^(4*4*4*4). Так что ли? Что-то много получилось.


 
Sha ©   (2014-02-13 00:33) [153]

> Inovet ©   (13.02.14 00:26) [152]
> Керк приводил

мне кажется, что на расчет приведенного им варианта
потребуется гораздо меньше 3-4х минут


 
Inovet ©   (2014-02-13 00:43) [154]

> [153] Sha ©   (13.02.14 00:33)
> мне кажется, что на расчет приведенного им варианта
> потребуется гораздо меньше 3-4х минут

Я понять не могу — надо все возможные варианты представить в каком-то виде или только их количество. Ну первое, получается, в реальности вообще невозможно сделать.


 
Sha ©   (2014-02-13 01:06) [155]

> Inovet ©   (13.02.14 00:43) [154]
> Ну первое, получается, в реальности вообще невозможно сделать.

Почему невозможно?
Например, представить кубик 4х4х4 как 4 слоя размером 4х4.
Хотя мне больше нравится как int64 )


 
Inovet ©   (2014-02-13 01:25) [156]

> [155] Sha ©   (13.02.14 01:06)

Куда эти кубики складывать? Я про это.


 
Inovet ©   (2014-02-13 01:26) [157]

> [155] Sha ©   (13.02.14 01:06)
> )

А, ну да.


 
Dennis I. Komarov ©   (2014-02-13 11:56) [158]

Может кто-нить накодит "input-output" в GUI?

Стандартизируем условие:
AX, AY, AZ: array[0..N-1, 0..N-1] of Byte;  // Проекции куба


 
Sha ©   (2014-02-13 12:30) [159]

Так это самое сложное в этой задаче)
И потом очень важно выбрать представление данных, упрощающее алгоритм.
Мне кажется промежуточная развертка куба в строку или массив подойдет больше, хотя, конечно, могу ошибаться.


 
Dennis I. Komarov ©   (2014-02-13 13:25) [160]


> Так это самое сложное в этой задаче)

скорее самое нудное и долгое, а время нема...

> И потом очень важно выбрать представление данных, упрощающее
> алгоритм.
> Мне кажется промежуточная развертка куба в строку или массив
> подойдет больше, хотя, конечно, могу ошибаться.

Я думал... ИМХО так проще для понимания алгоритма. Этот кубик можно упаковать в 8 байт, а проекцию в два, но не удобно для восприятия.
И сильно привяжется к N=4



Страницы: 1 2 3 4 5 вся ветка

Форум: "Прочее";
Текущий архив: 2014.09.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.81 MB
Время: 0.016 c
15-1392050673
petr
2014-02-10 20:44
2014.09.21
Что-нить похожее на DevExpress, но на java


11-1244031341
igg
2009-06-03 16:15
2014.09.21
Контекстное меню и ComboBox


15-1392299840
alex_
2014-02-13 17:57
2014.09.21
задача на С++


2-1382155371
Павел
2013-10-19 08:02
2014.09.21
Звук при нажатие хоткея


15-1392274278
KSergey
2014-02-13 10:51
2014.09.21
Системы ведения изменяющихся документов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский