:: Игры Разума
Re: Вопросы на собеседовании 8
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Ну ежели речь пошла о девятке, то мона и "визуально"
_Screen.AddObject("tmr4Piva", "MyTimer")
DEFINE CLASS MyTimer AS Timer
Interval = 60
Enabled = .T.
PROCEDURE Init
Create Cursor test (Sys2015 c(10))
ENDPROC
PROCEDURE Timer
IF RECCOUNT("test")<=100
insert into test values (Sys(2015))
ENDIF
ENDPROC
ENDDEFINE


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Это и не в девятке можно сделать
Кстати - а как я узнаю что выполненеие закончилось ?


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Да мое показали уже - или рекурсия или таймер, собственно интересно было сделать цикл в одну строку вызова, только Nesting Level победить в рекурсии не смог без цикла, только потому что внутри нужен был перезапуск самой себя, это для итерации более 100 - таймер нормально отработал, но опятбь же с оговоркой


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Цитата:
Это и не в девятке можно сделать
Речь шла о визуальности языка и не боле того
Цитата:
Кстати - а как я узнаю что выполненеие закончилось ?
Ставь Interval = 1, и к тому времени когда тебя посетит эдакая мысль, все уже закончится



------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 1 раз(а). Последнее : Foxtrot, 12.03.07 10:04
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Вариант с рекурсией - но не более 100 или в 9-ке не более 500 - хоть и декларировано 64000
Create Cursor test (Sys2015 c(10))
lcCommand='insert into test values (Sys(2015))'
=Rex(lcCommand,100)
Procedure Rex(tcCommand, tnCount)
If tnCount > 0
tnCount = tnCount - 1
_vfp.docmd(tcCommand)
Rex(tcCommand,@tnCount)
EndIf

Вариант расширенный - который победить не мог - но уровень вложенности рекурсии не превышает 2 уровней, но это внеконкурсной решение
Create Cursor test (Sys2015 c(10))
lcCommand='insert into test values (Sys(2015))'
=Rex2(lcCommand,10000,0)
Procedure Rex2(tcCommand, tnCount,tnLevel)
tnLevel=Iif(VarType(tnLevel)="N",tnLevel,0)
tnLevel = tnLevel + 1
do while tnCount > 0
tnCount = tnCount - 1
&tcCommand
If tnLevel > 2
Rex2(tcCommand,@tnCount,@tnLevel)
EndIf
EndDo
tnLevel = tnLevel + 1

Вариант с таймером - только я его до написания темы не пробовал - поэтому выпал за лимит кол-ва строк Ну и налететь на Clear Events в рабочей проге - просто опасно
Create Cursor test (Sys2015 c(10))
lcCommand='insert into test values (Sys(2015))'
o=CreateObject("MyTime",lcCommand,1000)
Define Class MyTime as Timer
Interval=1
Command=""
Count=0
Procedure Init(tcCommand, tnCount)
With this
.Command=tcCommand
.Count=tnCount
Read Events
EndWith
Procedure Timer
With this
If .Count > 0
.Count=.Count-1
_vfp.DoCmd(.Command)
Else
.Enabled=.F.
Clear Events
EndIf
EndWith
EndDefine

Собственно хотелось сделать более менее универсальное средство - абстрагируясь от таблиц, но условие было не корректным


------------------
Часто бывает так, что есть над чем задуматься, а нечем.




Исправлено 1 раз(а). Последнее : piva, 12.03.07 10:06
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Dik

Сообщений: 327
Откуда: Москва
Дата регистрации: 11.10.2000
А вот такой заход:
PUBLIC gnAddRec as Integer
gnAddRec = 100
CREATE CURSOR test (Sys2015 c(10))
INSERT INTO test VALUES (Sys(2015))
INSERT INTO test SELECT AddRec() FROM test
PROCEDURE AddRec
IF RECCOUNT('test') < gnAddRec / 2
INSERT INTO test VALUES (Sys(2015))
ENDIF
RETURN Sys(2015)
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
Мне с таймером очень понравилось, в принципе универсальное решение на выполнение/заполнение любых циклических операци.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Dik

Сообщений: 327
Откуда: Москва
Дата регистрации: 11.10.2000
Добавление нечетного количества не предлагать
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Если только как-то дать знать что выполнение закончилось - и переменная объекта не будет локальной - ибо выполнение умрет вместе с переменной.
А мне больше понравилось внеконкурсное решение, только блин DO While обойти не смог, но в рабочем варианте - это не так уж и важно. Зато рекурсия болтается в двух-трех уровнях стека


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004



------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Это означает, что я прошел собеседование?
PS: мобыть открыть раздел "Игры разума"?


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Думаю - будет не плохо


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
CREATE CURSOR test (f1 C(10))
DIMENSION aaa(1000,1)
aaa = ""
APPEND FROM ARRAY aaa
REPLACE ALL f1 WITH SYS(2015)
GO TOP
BROWSE NOWAIT

На какую ставку возьмете
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Нет такой программы, которую нельзя было бы уменьшить
CREATE CURSOR test (f1 C(10))
_Screen.AddProperty("aaa[1000,1]", SYS(2015))
APPEND FROM ARRAY _Screen.aaa
GO TOP
BROWSE NOWAIT


------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 1 раз(а). Последнее : Foxtrot, 13.03.07 07:08
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
А где команда Insert ?
Черт - надо было написать в lcCommand что-нибудь типа CreateObject("Form")


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
А у меня получилось в одну строчку
CREATE CURSOR test (f1 C(10))
INSERT INTO test SELECT TOP 1000 SYS(2015) FROM (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T1, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T2, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T3, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T4, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T5, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T6, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T7, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T8, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T9, (SELECT COUNT(*) FROM test UNION ALL SELECT COUNT(*) FROM test) T10 ORDER BY 1
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
piva
Автор

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004



------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Snick

Сообщений: 5949
Откуда: Москва
Дата регистрации: 21.05.2001
А строка-то больше 80-ти символов получилась - на перфокарту не влазит!
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Snick
А строка-то больше 80-ти символов получилась - на перфокарту не влазит!
На перфоленту влезет.
Ratings: 0 negative/0 positive
Re: Вопросы на собеседовании 8
Snick

Сообщений: 5949
Откуда: Москва
Дата регистрации: 21.05.2001
У меня клей ПВА кончился.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2000-2024 Fox Club 
Яндекс.Метрика