|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 15, 2004 21:16:39 vaskovich А что значит то 9 байт.. иначе 10? Каждый будет понимать как хочет, иначе, например, если там лежить не 0 а 117 то вообще ничего неполучится. Как понимать то? Что ты однобайтовой инструкцией туда (в edi - 4) её поместишь? Или что? |
|
|
Дата: Июн 15, 2004 21:37:37 ozzman Ох-ох, запутался я совсем.. :( Протрейсил все до конца, ничего странного и неправильного не увидел. The Svin Да, твоя правда. Это мои проблемы с русским языком. Просто изначально у меня еще был другой код на 10 байт
mov edi,addr ; 5
sub eax,eax ; 2
cld ; 1
stosd ; 1
inc eax ; 1
@@: stosd ; 1
add eax,[edi-8] ; 3
jnc @b ; 2
10 байт всмысле без учета загрузки адреса и cld. если там лежить не 0 а 117 то вообще ничего неполучится. Вот именно. Если бы мы могли дать гарантию, что там всегда лежит ноль, то можно было б использовать мой первый вариант, а оказывается гарантий у нас никаких. |
|
|
Дата: Июн 16, 2004 03:43:25 · Поправил: S_T_A_S_
Ну ладно, на загрузку адреса и сброс флага как ни крути, уйдёт 6 байт. (хотя, как представлен адрес не сказано) Далее, Jcc - ещё 2 байта. Получение чисел F0 и F1, похоже, меньше 4х байтов не сделать. Собственно, операции вычисления и заполнения массива - 4 байта: Байт на запись, и 3 на сложение - меньше как сделать? Если использовать регистр, то нужна команда обмена, если [EDI], то появляется байт disp8. Итого 16 байт. Что тут можно уменьшить-то? Можно заменить EDI на ESP, тогда мы избавимся от CLD. Но стек движется в сторону уменьшения адресов, что не соответствует условию.. Возможно, задача предполагает использовать рекурсию или формулу Бине для вычисления, но inho всё это отрицательно скажется на размере. Вывод - captain cobalt опять что-то скрывает ? :). |
|
|
Дата: Июн 16, 2004 03:48:13 формулу Бине для вычисления Ух ты. А это что за зверь? |
|
|
Дата: Июн 16, 2004 03:55:42 · Поправил: S_T_A_S_ Fn=(((Ö5+1)/2)n-((1-Ö5)/2)n)/Ö5 Fn=(((sqr(5)+1)/2)n-((1-sqr(5))/2)n)/sqr(5) Fn=((Ö5/2+0.5)n-(0.5-Ö5/2)n)/Ö5 ЗЫ Запутаться можно в скобочках, надеюсь, хоть где-то правильно =) |
|
|
Дата: Июн 16, 2004 18:01:50 Золотое сечение? Выглядит похоже... |
|
|
Дата: Июн 16, 2004 19:29:06 Вот блин! Где-то у меня валялся совершенно дзенский алгоритм для поиска чисел Фибоначчи на замечательном и прогрессивном языке - прологе. Но, к сожалению, я никак не могу его отыскать.. :((( |
|
|
Дата: Июн 17, 2004 08:10:47 · Поправил: S_T_A_S_ Золотое сечение вроде бы так: x/(R-x)=R/x x2+R*x-R2=0 окуда: x=R*(Ö5-1)/2 x=R*Ö5/2-0.5 |
|
|
Дата: Июн 17, 2004 08:17:23 Вот ещё про числа Фибоначчи: черенки деревьев примыкают к стеблю по спирали, которая проходит между двумя соседними листьями: 1/3 полного обороьта у орешника 2/5 - у дуба 3/8 - у тополя 5/13 - у ивы. Хотя это мало помогает при решении Микроупражнения %) |
|
|
Дата: Июн 17, 2004 22:30:41 S_T_A_S_ Никак нет, именно это имеет значимую роль в решении, ща в лес с рулеткой и ноутом пойду, там все и соберу :-) |
|
|
Дата: Авг 19, 2004 14:18:26 · Поправил: Daniil Когда учился в школе вывел вот такую формулу. Вроде как она приближённая, но начиная с какого индекса начаинает говорить неправду - не знаю, так как тестил только на МК-52. :) Fn = [ Фn-1*(1-1/(Ф+2)) ], где Ф=(sqrt(5)+1)/2 (золотое сечение). Квадратные скобки - округление (т.е. round, а не int). Можно записать по другому Ф=(sqrt(5)+1)/2 ;золотое сечение Q=1-1/(F+2) ;спец-коэффициент, подобран опытным путём и интуицией Fn = [ Фn-1 ]*Q |
|
|
Дата: Авг 19, 2004 14:22:36 S_T_A_S_ окуда: x=R*(Ö5-1)/2 Не совсем. Уравнение квадратное - имеет два решения. 0,6180339887 и 1,6180339887 Отличаются они на единицу и являются обратными друг другу. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063 |