Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс сен 20, 2020 09:19

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Список актуальных задач из Rosetta code
СообщениеДобавлено: Чт янв 23, 2020 02:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
Наверное, многим известен такой сайт со списком задач "как это делается в языке X".

http://www.rosettacode.org/wiki/Rosetta_Code

Не выделить ли оттуда список задач попроще, не зависящих от библиотек, поставляемых с языком? Думается, тогда и примеры смогут служить основой для доработки ядер Форта и минимального набора примеров.


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

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 76
Благодарил (а): 9 раз.
Поблагодарили: 5 раз.
Поддерживаю! Задачи с решениями можно накапливать прямо на форуме?


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
zma писал(а):
Задачи с решениями можно накапливать прямо на форуме?

Я только за.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
Будут предложения по организации списка?


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

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 76
Благодарил (а): 9 раз.
Поблагодарили: 5 раз.
Hishnik писал(а):
Будут предложения по организации списка?

Может, прямо в этой теме оставлять по сообщению на задачу? Краткое описание и решение (или ссылку на решение на Rosetta code, если оно слишком большое)

И насколько простые стоит выбирать задачи? "Посчитать факториал" ещё не слишком простая?


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
zma писал(а):
Может, прямо в этой теме оставлять по сообщению на задачу?

Можно начать, а там будет видно. Но я бы еще хотел сначала как-то разобрать задачи "по кучкам".

zma писал(а):
"Посчитать факториал" ещё не слишком простая?

С учетом того, что там рекурсия, не слишком. В том смысле, что где-то есть RECURSE, где-то можно просто упоминать имя текущего слова в процессе определения, где-то надо с указателями делать. Я поэтому и хочу как-то разграничить, чтобы были задачи демонстрационные (и при этом очень простые, вида "вывести символ"), алгоритмические с какой-то сложностью, и просто объемные, вида игры 2048.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1260
Благодарил (а): 3 раз.
Поблагодарили: 46 раз.
Может ещё рассматривать уже представленные решения для Форт
и выявляющих какие то "проблемы" в исполнении для разных Форт-систем
в силу использования того или иного подхода (кода) или специфики конкретой Форт-системы.

P.S. Для проверки Форт кода Online есть среды исполнения, но они используют для представления gForth
и исполнение примеров с rosettacode в них не гарантируется.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
KPG писал(а):
Может ещё рассматривать уже представленные решения для Форт
и выявляющих какие то "проблемы" в исполнении для разных Форт-систем
в силу использования того или иного подхода (кода) или специфики конкретой Форт-системы.

Придем к диалогу:
- Есть вариант 1.
- Да, но есть и вариант 2, он лучше.
- А чем лучше?
- А... а в каких-то задачах?
- И в каких же?

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1038
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Тогда уж определиться с форт-системой, на которой будут работать примеры.
Варианты, дамы и товарищи?
Может, СПФ?

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


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

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 69
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Victor__v писал(а):
Тогда уж определиться с форт-системой, на которой будут работать примеры.
Варианты, дамы и товарищи?
Может, СПФ?

А зачем ориентироваться на какую-то конкретную систему? Лучше стараться следовать стандарту (если я правильно понял, речь об алгоритмических задачах, т.е. какого-то специфичного API не требуется), чтобы можно было запустить код в наиболее удобной/доступной системе без особых проблем.

Например, когда я только начинал изучать форт, я использовал SP-Forth, а в нём некоторые стандартные/устаревшие слова отстутствовали, и когда некоторые, казалось бы правильные, программы не работали, мне как новичку было сложно с этим разобраться, и просто пропадало желание этим заниматься.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1038
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
f02732 писал(а):
Victor__v писал(а):
Тогда уж определиться с форт-системой, на которой будут работать примеры.
Варианты, дамы и товарищи?
Может, СПФ?

А зачем ориентироваться на какую-то конкретную систему?

Чтобы не разводить срач.
Впрочем, уже поздно)

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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1260
Благодарил (а): 3 раз.
Поблагодарили: 46 раз.
Victor__v писал(а):
Чтобы не разводить срач.
Впрочем, уже поздно)

И, что дальше? :)
Предыдущее сообщение от f02732 меня заинтересовало. Что подвигло на изучение "нубом" Форт?


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7024
Благодарил (а): 17 раз.
Поблагодарили: 115 раз.
Victor__v писал(а):
Впрочем, уже поздно)

Никогда ничего не поздно :)

Вопрос версии Форта в отрыве от задач совершенно бесполезен. Раз нет достаточного числа конкретных проектов, давайте примеряться к RosettaCode. И если какая-то версия плохо делает даже простые вещи, то явно дело в этой версии. Для меня это прямое указание переделать новый Форт так, чтобы на нем хорошо и удобно получалось.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Первая ласточка
СообщениеДобавлено: Вс фев 09, 2020 15:44 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 76
Благодарил (а): 9 раз.
Поблагодарили: 5 раз.
Задача: Вывести текст песенки "99 bottles of beer":
99 bottles of beer on the wall
99 bottles of beer
Take one down, pass it around
98 bottles of beer on the wall

98 bottles of beer on the wall
98 bottles of beer
Take one down, pass it around
97 bottles of beer on the wall

... и т.д до 0.

Тип задачи: базовые операции, циклы

Решение:

Код:
:noname   dup . ." bottles" ;
:noname       ." 1 bottle"  ;
:noname ." no more bottles" ;
create bottles , , ,

: .bottles  dup 2 min cells bottles + @ execute ;
: .beer     .bottles ."  of beer" ;
: .wall     .beer ."  on the wall" ;
: .take     ." Take one down, pass it around" ;
: .verse    .wall cr .beer cr
         1- .take cr .wall cr ;
: verses    begin cr .verse ?dup 0= until ;


Альтернативное решение:

Код:
: BOTTLES ( n -- )
        DUP
        CASE
         1 OF    ." One more bottle " DROP ENDOF
         0 OF    ." NO MORE bottles " DROP ENDOF
                 . ." bottles "    \ DEFAULT CASE
        ENDCASE ;

: ,   [CHAR] , EMIT  SPACE 100 MS CR ;
: .   [CHAR] . EMIT  300 MS  CR CR CR ;

: OF       ." of "   ;     : BEER     ." beer " ;
: ON       ." on "   ;     : THE      ." the "  ;
: WALL     ." wall" ;      : TAKE     ." take " ;
: ONE      ." one "  ;     : DOWN     ." down, " ;
: PASS     ." pass " ;     : IT       ." it "   ;
: AROUND   ." around" ;

: POPONE    1 SWAP CR ;
: DRINK     POSTPONE DO ; IMMEDIATE
: ANOTHER   S" -1 +LOOP" EVALUATE ; IMMEDIATE
: HOWMANY   S" I " EVALUATE ; IMMEDIATE
: ONELESS   S" I 1- " EVALUATE ; IMMEDIATE
: HANGOVER    ." :-("  CR QUIT ;

: BEERS ( n -- )   \ Usage:  99 BEERS
      POPONE
      DRINK
         HOWMANY BOTTLES OF BEER ON THE WALL ,
         HOWMANY BOTTLES OF BEER ,
         TAKE ONE DOWN PASS IT AROUND ,
         ONELESS BOTTLES OF BEER ON THE WALL .
      ANOTHER
      HANGOVER ;


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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1038
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
А можно проще, без закидонов.

Код:
: 99botles
99 >R BEGIN R@ 2 XOR WHILE
R@ . ." bottles of beer on the wall " R@ . ." bottles of beer." CR
." Take one down, pass it around "  R@ 1- . ." bottles of beer on the wall." CR
R> 1- >R
REPEAT
RDROP

." 2 bottles of beer on the wall, 2 bottles of beer" CR
." Take one down and pass it around, 1 bottle of beer on the wall." CR

." 1 bottle of beer on the wall, 1 bottle of beer." CR
." Take one down and pass it around, no more bottles of beer on the wall." CR                 

." No more bottles of beer on the wall, no more bottles of beer." CR
." Go to the store and buy some more, 99 bottles of beer on the wall." CR

;



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


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

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


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

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


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

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