LINUX.ORG.RU
 

Task 1


0

1

На тот случай, если заданий никто не даст, пишу, что придумал с утра( по большей части, чтоб не забыть, а также, чтоб учесть все недостатки ).

Пусть будет текстовый файл такого формата:

object A
{
	color = "red";
	value = 100!;
	circle;
}

object B : A, C
{
	color = "green";
	circle;
}

object C
{
	value = time();
	square;
}

object D
{
	color = "blue";
	value = 100 + A.value;
	value2 = C.value * value;
}

show circle;
show A.value;
show value > 100!;

думаю задача очевидна, но конечно же поподробней:

object A
{
	color = "red";
	value = 100!;
	circle;
}

это описание объекта( не типа, а именно объекта ), у него есть поля, которые бывают трех типов:

circle - признак, не имеет значения, просто означает, что A это круг

color = "red" - текстовое поле со значением "red"

value = 100!; - числовое поле( о нем будет дальше )

Смотрим дальше:

object B : A, C
{
	color = "green";
	circle;
}

это наследование, тут все просто - все поля из A, C теперь есть и в B, если есть одинаковые поля, то приоритетность - B, С, А( по убыванию ), т.е. у B color = "green", а value = time()

Про чиcловые поля - они задаются в виде выражений, допустимые операции +-*/ и !( факториал ), естественно присутствуют скобки (), в качестве операндов любые целые числа( в десятичной системе ), также time() ( то же, что и в С ) - чтоб разнообразить результаты на итерациях, а также любое числовое значение из этого/другого объекта( A.value etc. ), в случае рекурсии в выражениях - возвращать 0

Последняя часть:

show circle;
show A.value;
show value > 100!;

тут все просто - выводит на экран объекты удовлетворяющие условию или их свойства show circle - у которых есть поле circle show A.value - выводит значение любого выражения, например A.value + B.value * 2 show value > 100!; - состоит из "имя поля" + "операция сравнения" + "аргумент"( любое выражение ), ищет все объекты по условию

имена объектов и свойств состоят только из a..A, z..Z, 0..9, имена регистрозависимые

текстовые значения могут быть длинной до 65535 символов

П.С. наверняка что-то упустил так как пишу все с головы, жду критики, вопросов, уточнений условия и т.п.

П.П.С. хотелось бы, чтоб mv тоже попробовал после утверждения задания( если таки будет оно, а не другое ) решить его на Lisp( задание вроде под Lisp подходит ) - заодно и скорость работы программ можно будет сравнить

П.П.П.С. думаю полезно в текстовый файл добавить два параметра:

iterations = 100000

log = off

СКАЖИ СВОЕМУ КОМПЬЮТЕРУ, ЧТОБЫ ЗАПЕР ДВЕРЬ

любительская автоматизация; устройство с открытой прошивкой
исходные тексты всех программ, открытые библиотеки
http://www.unicontrollers.com/products/unc01x

[#]  

Re: Task 1

show circle - у которых есть поле circle
show A.value - выводит значение любого выражения, например A.value + B.value * 2
show value > 100!; - состоит из "имя поля" + "операция сравнения" + "аргумент"( любое выражение ), ищет все объекты по условию

сбились каретки

**** ()
[#]  
rual_ilmarranen

Re: Task 1

1) наверное, неплохо бы было дать ссылку на исходную тему, ибо не все её читали.

2) А Вы теперь всегда комментарии будете в отдельную тему выносить?

3) А что сделать-то надо?

()
[#] Ответ на: Re: Task 1 от rual_ilmarranen 09.07.2009 15:04:20  

Re: Task 1

> 1) наверное, неплохо бы было дать ссылку на исходную тему, ибо не все её читали.

http://www.linux.org.ru/view-message.jsp?msgid=3855459

> 2) А Вы теперь всегда комментарии будете в отдельную тему выносить?


см. следующую тему ( шутка )

> А что сделать-то надо?


написать программу, которая прочитает такой файл и выдаст результат

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:07:09  
rual_ilmarranen

Re: Task 1

>>написать программу, которая прочитает такой файл и выдаст результат

какой результат? я пока вижу только входящие данные.

()
[#] Ответ на: Re: Task 1 от rual_ilmarranen 09.07.2009 15:12:30  

Re: Task 1

show circle;
show A.value;
show value > 100!;

то что должно вывестись на экран

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:19:47  
rual_ilmarranen

Re: Task 1

по форматированию создалось впечатление, что это часть текстового файла.

()
[#] Ответ на: Re: Task 1 от rual_ilmarranen 09.07.2009 15:23:26  

Re: Task 1

> по форматированию создалось впечатление, что это часть текстового файла.

это там и будет - чтоб проверять быстродействие при большом кол-ве итераций, потому вводить руками не получится

**** ()
[#]  

Re: Task 1

факториал пожалуй лишний - конечно-же программа должна работать на голом С++, т.е. пришлось бы включать реализацию работы с большими числами - а это уже другая задача, вобщем вместо факториалов пусть будет sqrt(), все числа должны оставаться целыми

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:33:10  
jtootf

Re: Task 1

>конечно-же программа должна работать на голом С++

ты всё-таки исключительно фееричен

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:34:41  

Re: Task 1

> ты всё-таки исключительно фееричен

это если писать на С++( ну STL конечно тоже можно ), а то потом твой код прийдется два дня собирать со всякими бустами и т.п.

П.С. где справки?

**** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:34:41  

Re: Task 1

насчет задачи - согласен или есть возражения?

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:37:40  
jtootf

Re: Task 1

>это если писать на С++( ну STL конечно тоже можно ), а то потом твой код прийдется два дня собирать со всякими бустами и т.п.

это ты сейчас кому вообще написал? или тебе напомнить изначальную постановку задачи как language independent? да, давайте её ещё подкрыжим немного, потому как в C++ нет этого и этого (а ещё вот этого), а то нехорошие лисперы (или кто там ещё) откусят 10см ЧСВ. шапито!

>П.С. где справки?

у тебя снова испортилась память? на сегодня ничего не обещалось, свободен

***** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:40:59  
jtootf

Re: Task 1

>насчет задачи - согласен или есть возражения?

задача хорошая, но скажи на милость - сколько мне ждать утверждения ТЗ? а то вдруг ты его в комментариях ещё неделю уточнять будешь

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:44:58  

Re: Task 1

> это ты сейчас кому вообще написал? или тебе напомнить изначальную постановку задачи как language independent? да, давайте её ещё подкрыжим немного, потому как в C++ нет этого и этого (а ещё вот этого), а то нехорошие лисперы (или кто там ещё) откусят 10см ЧСВ. шапито!

что ж ты нервный такой, ну пиши на лиспе - я тебе ни слова не скажу

> у тебя снова испортилась память? на сегодня ничего не обещалось, свободен


к твоему званию тугодума добавилось еще одно - трепло, иначе ты хотя бы обозначил, когда исполнишь данное обещание

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:47:52  
jtootf

Re: Task 1

>что ж ты нервный такой, ну пиши на лиспе - я тебе ни слова не скажу

может ещё раз перечитаешь что я написал? а может ещё и подумаешь? это не больно, честное слово

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:49:29  

Re: Task 1

> может ещё раз перечитаешь что я написал? а может ещё и подумаешь? это не больно, честное слово

кроме попытки оскорбить смысла в твоем сообщении нет, вобщем если ты будешь писать на С/С++ - напишешь потом, что тебе надо было из сторонних библиотек, раз ты без них никак

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:56:11  
jtootf

Re: Task 1

>если ты будешь писать на С/С++ - напишешь потом, что тебе надо было из сторонних библиотек, раз ты без них никак

epic facepalm. ладно, проехали, не напрягай мозг

лучше скажи, что с заданием? это окончательный вариант, внезапных изменений "фича N, пожалуй, лишняя" уже не будет?

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:46:00  

Re: Task 1

> задача хорошая, но скажи на милость - сколько мне ждать утверждения ТЗ?

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

**** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:58:29  

Re: Task 1

> лучше скажи, что с заданием? это окончательный вариант, внезапных изменений "фича N, пожалуй, лишняя" уже не будет?

нет, разве что обоюдному согласию, если кто-то не согласен - остается как было, насчет неоднозначностей - см. выше

П.С. ес-но в случае ошибки синтаксиса в тексте файла - выводить сообщение об ошибке и строке, после чего завершить выполнение

**** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 15:58:29  

Re: Task 1

т.е. поехали?

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 16:01:56  
jtootf

Re: Task 1

>т.е. поехали?

да ехай, ехай, тебе-то кто мешает? :) будут вопросы и критика - сюда же и напишу

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 16:04:58  

Re: Task 1

> да ехай, ехай, тебе-то кто мешает? :)

давай пока придерживаться нормального стиля общения, а то у тебя вместо одного слова по два предложения

**** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 16:04:58  

Re: Task 1

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

**** ()
[#]  

Re: Task 1

не написал в ТЗ: если есть ссылка на еще не описанный объект( например object B : A, C ) - это не ошибка, все должно отрабатываться

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 16:06:24  
jtootf

Re: Task 1

>придерживаться нормального стиля общения

это ты вовремя вспомнил, да. борец за этику и мораль

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 16:14:24  

Re: Task 1

договорились

**** ()
[#]  
mironov_ivan

Re: Task 1

> в случае рекурсии в выражениях - возвращать 0

А не логичнее ли выдавать ошибку?

***** ()
[#] Ответ на: Re: Task 1 от jtootf 09.07.2009 16:14:24  

Re: Task 1

как оцениваешь по времени задачу( сколько времени тебе понадобится)?

**** ()
[#] Ответ на: Re: Task 1 от mironov_ivan 09.07.2009 16:18:53  

Re: Task 1

> А не логичнее ли выдавать ошибку?

в принципе да, jtootf, согласен?

**** ()
[#]  

Re: Task 1

"имя поля" + "операция сравнения" + "аргумент"( любое выражение ) - список операций сравнений: <,>,=,<>,>=,<=

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 15:56:11  
Absurd

Re: Task 1

>кроме попытки оскорбить смысла в твоем сообщении нет, вобщем если ты будешь писать на С/С++ - напишешь потом, что тебе надо было из сторонних библиотек, раз ты без них никак

Если автосгенерить разбор всего этого дела C++ - плагином к ANTLR это типа будет "использование сторонних библиотек" ?

*** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 16:13:11  
mipt_student

Re: Task 1

А если вот так:

object A : B
{
//...
}

object B : A
{
//...
}

* ()
[#] Ответ на: Re: Task 1 от Absurd 09.07.2009 18:01:23  

Re: Task 1

в принципе нет - распарсить тут и руками не сложно

**** ()
[#] Ответ на: Re: Task 1 от mipt_student 09.07.2009 18:01:37  

Re: Task 1

выдавать ошибку

**** ()
[#] Ответ на: Re: Task 1 от lester 09.07.2009 16:20:02  
jtootf

Re: Task 1

>согласен?

да

***** ()
[#]  

Re: Task 1

А если так:

object A
{
color = "red";
value = 100!;
circle;
}

object A
{
color = "green";
}

Ошибка? Или объект меняется соответственно?

*** ()
[#] Ответ на: Re: Task 1 от smh 10.07.2009 2:30:10  

Re: Task 1

ошибка

**** ()
[#] Ответ на: Re: Task 1 от smh 10.07.2009 2:30:10  

Re: Task 1

Если не ошибка, то есть объекты "открытые", то что будет в такой ситуации:

object A
{
color = "red";
value = 100!;
circle;
}

object B : A
{
color = "blue";
}

object A
{
color = "green";
}

B.color == "blue"? Или B.color == "green"?

*** ()
[#] Ответ на: Re: Task 1 от lester 10.07.2009 2:42:28  

Re: Task 1

А, ок.

*** ()
[#] Ответ на: Re: Task 1 от smh 10.07.2009 2:48:04  

Re: Task 1

> А, ок.

я надеюсь вы решили принять участие? :)

**** ()
[#]  

Re: Task 1

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

**** ()
[#]  

Re: Task 1

пока работает такое:

object A
{
   color = "red"; circle;
}

object B : A, C
{
   color = "green";
   value1 = sqrt( 20 ) + time();
}

object D : B, F
{
   color = "blue";
   value2 = C.value * value;
   value3 = 111;
}

object C { square; }
object E : D {}
object F { door; }

show door;

получаем результат( для дебужного варианта ):

Object A
        color = "red"
        circle
Object B : A, C
        color = "green"
        value1 = sqrt(20)+time()
        circle from A
        square from C
Object D : B, F
        color = "blue"
        value2 = C.value*value
        value3 = 111
        value1 = sqrt(20)+time() from B
        circle from B
        square from B
        door from F
Object C
        square
Object E : D
        color = "blue" from D
        value2 = C.value*value from D
        value3 = 111 from D
        value1 = sqrt(20)+time() from D
        circle from D
        square from D
        door from D
Object F
        door

Have property door:
D
E
F

завтра уже сделаю вычисление выражений

**** ()
[#] Ответ на: Re: Task 1 от lester 10.07.2009 2:49:21  

Re: Task 1

> я надеюсь вы решили принять участие? :)

Ага. Вечером гляну и может даже чего напишу. :-)

*** ()
[#]  

Re: Task 1

jtootf, ты как там? чтоб знать - дописывать сегодня или можно отложить

**** ()
[#] Ответ на: Re: Task 1 от lester 10.07.2009 20:26:23  
jtootf

Re: Task 1

>чтоб знать - дописывать сегодня или можно отложить

ты у меня теперь на каждый шаг разрешения спрашивать будешь? это твоё время и твоя программа. выбирай сам

>jtootf, ты как там?

вроде ничего, не кашляю, спасибо за любопытство

***** ()
[#] Ответ на: Re: Task 1 от jtootf 10.07.2009 20:35:09  

Re: Task 1

> ты у меня теперь на каждый шаг разрешения спрашивать будешь? это твоё время и твоя программа. выбирай сам

спрошу конкретней - сколько времени отведем для решени задачи? еще день/два/три?

**** ()
[#] Ответ на: Re: Task 1 от jtootf 10.07.2009 20:35:09  

Re: Task 1

или даже две недели? ;)

**** ()
[#]  

Re: Task 1

Если считаешь, что задача "долгая", можно урезать до:

object A
{
   fruit;
   green;
}

object B : A, C
{
   citrus;
}

object C
{
   edible;
}

show fruit;

**** ()
[#] Ответ на: Re: Task 1 от lester 10.07.2009 20:46:07  
jtootf

Re: Task 1

>сколько времени отведем для решени задачи? еще день/два/три?

я за задачу ещё не брался, не до неё было; в любом случае, лично меня больше интересует качество результата, так что твои сроки не ограничены ничем

anyway, одного дня от текущего момента уж точно достаточно

***** ()
[#] Ответ на: Re: Task 1 от lester 10.07.2009 21:59:26  
jtootf

Re: Task 1

>Если считаешь, что задача "долгая"

нет, не считаю

***** ()