Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн фев 17, 2020 14:37

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Пн фев 10, 2020 12:56 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 64
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Victor__v писал(а):
А можно проще, без закидонов.

Можно, но смысл не в том, чтобы предоставить наиболее компактное решение, а в том, чтобы набрать маленьких программ, на которых можно погонять свои Форт-системы.



За это сообщение автора zma поблагодарил: Hishnik
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Пн фев 10, 2020 13:43 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 64
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Задача: вычислить N-е число Фиббоначи
Тип задачи: базовые операции, циклы
Решение:
Код:
: fib ( n -- fib )  0 1 rot 0 ?do  over + swap  loop drop ;
( Использование ) 10 fib .

Страница задачи: http://rosettacode.org/wiki/Fibonacci_sequence


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Пн фев 10, 2020 14:03 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 952
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Кажется, кто-то просил факториал :)
Пойдёт только на нативных системах
Цитата:
: 0->N 0 2>R BEGIN 2R@ XOR WHILE R@ RP@ 2 CELLS + @ EXECUTE RP@ 1+! REPEAT RDROP RDROP RDROP ; \ n -- iter: 0|1|2|....n-1
: FACT 1 SWAP 0->N 1+ * ; \ n -- n!

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вт фев 11, 2020 04:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6881
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Код:
0 TEXTEDIT.SHOW
0 100 800 300 0 TEXTEDIT.RECT

: PRINT
  0 TEXTEDIT.APPENDLINE
;

CREATE $BUF 256 ALLOT

: .
0 $BUF 32 FILL
$BUF >STR
$BUF PRINT
;

: RUN
  2 99 DO
    I . " bottles of beer on the wall" PRINT
    I . " bottles of beer" PRINT
    " Take one down and pass it around" PRINT
  -1 +LOOP

    " 1 bottle of beer on the wall" PRINT
    " 1 bottle of beer" PRINT
    " Take one down and pass it around" PRINT
    " No more bottles of beer on the wall, no more bottles of beer." PRINT
    " Go to the store and buy some more, 99 bottles of beer on the wall." PRINT
;

RUN


P.S. По итогам теста поправлен +LOOP, который не захватывал последнюю итерацию, если шаг цикла был отрицательным.


Вложения:
rosetta_99_bottles.png
rosetta_99_bottles.png [ 14.04 Кб | Просмотров: 250 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Ср фев 12, 2020 19:17 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6881
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Факториал, с учетом особенностей Форта:

Код:
: FACT
  1 + 1 DO I LOOP
  BEGIN
    *
  DEPTH 2 < UNTIL
;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 02:30 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1149
Благодарил (а): 3 раз.
Поблагодарили: 43 раз.
Hishnik писал(а):
Факториал, с учетом особенностей Форта:

Код:
: FACT
  1 + 1 DO I LOOP
  BEGIN
    *
  DEPTH 2 < UNTIL
;

Лишнее - каждый раз в цикле проверять глубину стека.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 04:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6881
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
KPG писал(а):
Лишнее - каждый раз в цикле проверять глубину стека.

Вот глубину на входе забыл запомнить. А в цикле не лишнее - это же два разных цикла. Сначала кладем на стек все числа от 1 до N, а потом перемножаем, пока есть что перемножать. Это просто ради демонстрации использования DEPTH. А вообще факториал считать не надо, его надо таблицей один раз задать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 04:37 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 952
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
его надо таблицей один раз задать.

Ни слова больше :D
Код:
HERE
1 ,
1 ,
2 ,
2 3 * ,
2 3 4 * * ,
2 3 4 5 * * * ,
2 3 4 5 6 * * * * ,
2 3 4 5 6 7 * * * * * ,
2 3 4 5 6 7 8 * * * * * * ,
2 3 4 5 6 7 8 9 * * * * * * * ,
2 3 4 5 6 7 8 9 10 * * * * * * * * ,
2 3 4 5 6 7 8 9 10 11 * * * * * * * * * ,
2 3 4 5 6 7 8 9 10 11 12 * * * * * * * * * * ,

: FACT CELLS [ LIT, ] + @ ;


_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 04:47 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6881
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Victor__v писал(а):
Ни слова больше

Ну, собственно, да, если из практических соображений :D Просто там в описании задачи указано "циклы", то есть смысл в том, чтобы на этом примере показать, как язык обойдется с такой задачей, используя циклы. Я вот не захотел показывать рекурсию..


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 05:27 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 362
Благодарил (а): 1 раз.
Поблагодарили: 9 раз.
: fact 1+ 1 tuck do i * loop ;


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 07:34 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1149
Благодарил (а): 3 раз.
Поблагодарили: 43 раз.
Victor__v писал(а):
Hishnik писал(а):
его надо таблицей один раз задать.

Ни слова больше :D

:) Какая связь между словами HERE и FACT в приведённом коде?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 09:32 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 952
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Эзотерическая :))
Не, ну KPG, Вы же опытный товарищ, разберётесь

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 12:17 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1149
Благодарил (а): 3 раз.
Поблагодарили: 43 раз.
Задача отображения календаря
не реализована на Форт.

P.S. Кто и как бы её стал реализовывать на Форт?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 22:11 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 67
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Victor__v писал(а):
Эзотерическая :))
Не, ну KPG, Вы же опытный товарищ, разберётесь

В том то и дело, что эзотерическая:)
Что значит LIT,? Нет, я то знаю, но вот например gforth — нет. Ещё и не учтитывается, что : может оставить на стеке служебные данные.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт фев 13, 2020 23:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6881
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
f02732 писал(а):
Что значит LIT,? Нет, я то знаю, но вот например gforth — нет. Ещё и не учтитывается, что : может оставить на стеке служебные данные.

Но красиво же. И LIT, несложно сделать, и служебные данные никакие в целом-то не нужны.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB