- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
: %fib
( left right count limit -- result )
2dup u<= if 2drop swap drop exit then
1+ 2swap tuck + 2swap recurse ;
: fib
( n -- n )
1 2 0 -rot 2swap %fib ;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+125
: %fib
( left right count limit -- result )
2dup u<= if 2drop swap drop exit then
1+ 2swap tuck + 2swap recurse ;
: fib
( n -- n )
1 2 0 -rot 2swap %fib ;
Где там ForthGovno?
LispGovno 03.08.2013 22:10 # −13
wvxvw 03.08.2013 23:11 # −14
kipar 05.08.2013 10:59 # −13
bormand 05.08.2013 11:07 # −14
roman-kashitsyn 05.08.2013 11:18 # −13
Фибоначчиевы кучи не требуют вычисления чисел в рантайме, числа используются только при анализе. Да и вообще эти кучи используются редко, ибо сливают pairing heaps.
Быть может, при написании аллокаторов кто-то использовал... Есть у кого примеры?
bormand 05.08.2013 11:57 # −11
Именно на практике и считал... на практике по алгоритмическому языку паскаль ;)
wvxvw 05.08.2013 14:24 # −12
Код был написан для ПЕ, а именно, второго задания.
roman-kashitsyn 05.08.2013 14:52 # −12
P.S. что есть ПЕ?
wvxvw 05.08.2013 16:01 # −14
ПЕ = PE = Project Euler
roman-kashitsyn 05.08.2013 16:10 # −14
3.14159265 05.08.2013 15:02 # −14
Хм. Тоже, единтсвенное что пришло в голову. Я видел захардкоженый (наверняка кодогенерированный) вариант.
bormand 05.08.2013 18:22 # +1
> Код был написан для ПЕ
Что и требовалось доказать.
LispGovno 05.08.2013 15:14 # −14
Чем отличается от обычной кучи?
roman-kashitsyn 05.08.2013 15:34 # −14
inkanus-gray 03.08.2013 22:16 # −11
wvxvw 04.08.2013 13:06 # −12
Это более менее описывает происходящее (не тестировал).
Louie_Louie 12.07.2019 02:26 # 0
Во-первих именование, что значит "%"? Вспомогательные слова принято называть (вот-так).
Во-вторых, стековый комментарий располагается на той же строчке, где и начало опеделения, через 2 пробела, а ещё он не соответствует реальным параметрам, что только запутывает: у первого слова должно быть ( left right limit count -- result ), слова работают с беззнаковыми числами, поэтому у второго должно быть ( u1 -- u2 ), а не n (это значит знаковое).
В-третьих много лишних и бесполезных действий: SWAP DROP — это NIP , 1 2 0 -ROT — это 0 1 2.
Вот исправленная версия:
http://ideone.com/NK9ydn Или с локалками, если тяжело вращать в голове стек:
http://ideone.com/TyW0If Но вообще на императивном языке лучше писать императивно:
http://ideone.com/qrTUo5