Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Задача на рефале
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
vilza vilza вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.10.2006
По умолчанию 02.10.2006, 23:41

Здравствуйте все!
Есть задача: Напишите программу, которая для заданного римского числа печатает следующее число. Входные римские числа в диапазоне от I до M.
Проблема: 1) не могу понять как перейти к элементу следующему за входным.
2) как написать алгоритм перевода из римских чисел в 10-ую систему исчисления и обратно.( поискал в сети - путного ничего нет. а вводить все числа от 1 до 1000 не охото!.)
Я сделел пробную прогу, но она выводит только число, которое я ввел. Еще есть полуудачная попытка - вместо "0" - выводит "I".
Вот что у меня получилось:

Код:
chisla{ = ' 'I', 'II', 'III', 'IV', 'V'}
rim { = ''I'';
       s.1 = < chisla (s.1)>;
       e.other=e.other;
       }
P.S. изучаю рефал - 3 недели... - не ругайте за ошибки )
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 03.10.2006, 22:03

Вообще то это форум по Прологу, поэтому Ваш вопрос не по нашей теме.
Через павру дней я его удалю, если никто не ответит здесь.
Ответить с цитированием
  (#3 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 03.10.2006, 22:28

Алгоритмы здесь, оба, правда они на Питоне, но он, как показала практика вполне понятен непосвященным :-)

http://aspn.activestate.com/ASPN/Cookbook/...on/Recipe/81611

Жутко занят, если дойдут руки, напишу на Рефале.
Ответить с цитированием
  (#4 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 04.10.2006, 11:18

И была еще такая тема:
Ответить с цитированием
  (#5 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 04.10.2006, 13:19

Короче, вспомнил я Рефал :-) .
Вот програмка. Функция Next возращает следующее число (работает только в диапазоне от 1 до 3999).
В качестве примера программа печатает все числа от 1 до 100.


Код:
$ENTRY Go { = <Main 'I'>; } 

Convert { 
    e.1 'IIII' = <Convert e.1 'IV'>; 
    e.1 'IVI' = <Convert e.1 'V'>;    
    e.1 'VIV' = <Convert e.1 'IX'>;    
    e.1 'IXI' = <Convert e.1 'X'>;    
    e.1 'XXXX' = <Convert e.1 'XL'>;
    e.1 'XLX' = <Convert e.1 'L'>;    
    e.1 'LXL' = <Convert e.1 'XC'>;
    e.1 'XCX' = <Convert e.1 'C'>;
    e.1 'CCCC' = <Convert e.1 'CD'>;
    e.1 'CDC' = <Convert e.1 'D'>;
    e.1 'DCD' = <Convert e.1 'CM'>;
    e.1 'CMC' = <Convert e.1 'M'>;    
    e.1 = e.1;
}

Next {
    e.1 = <Convert e.1 'I'>
}

Main {
    'C' = <Print 'C'>;    
    e.1 = <Print e.1> <Main <Next e.1>>;
}
Цитата:
Пример выполнения функции Next(находим число следующее за CMLXXXIX (989)):
CMLXXXIX-->CMLXXXIXI-->CMLXXXX-->CMLXL-->CMXC
Можно вопрос? Где Вы нашли эту задачу? Она просто "заточена" под Рефал.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
vilza vilza вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.10.2006
По умолчанию 05.10.2006, 09:26

Цитата:
Можно вопрос? Где Вы нашли эту задачу? Она просто "заточена" под Рефал.
Спасиб огромное! Я учусь на програмиста в УдГУ(1 курс). Задал мне эту задачу Н.Н. Непейвода - он преподает у нас нестандартное языки программирования.
Рефал мы прошли за 2 лекции, поэтому я ещё толком ничего не понял.
Если завалялись какие-нить человеческие книги по рефалу или link'и можешь их напечатать или прислать мне mailto: viprs@yandex.ru. Буду рад любой инфе.( С сайта сообщества рефала учебник уже есть)
Ответить с цитированием
  (#7 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 05.10.2006, 14:09

Цитата:
Спасиб огромное! Я учусь на програмиста в УдГУ(1 курс). Задал мне эту задачу Н.Н. Непейвода - он преподает у нас нестандартное языки программирования.
Рефал мы прошли за 2 лекции, поэтому я ещё толком ничего не понял.
Если завалялись какие-нить человеческие книги по рефалу или link'и можешь их напечатать или прислать мне mailto: viprs@yandex.ru. Буду рад любой инфе.( С сайта сообщества рефала учебник уже есть)
Честно говоря, я читал исключительно упомянутый Вами учебник (для подобных задачек его более чем достаточно, а в реальной жизни Рефал, к сожалению, никто не использует). Рекомендую поставить систему Refal Scite, очень удобная штука.
А какие еще языки отнесли к "нестандартным" :-)?
Ответить с цитированием
  (#8 (permalink)) Старый
vilza vilza вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.10.2006
По умолчанию 13.10.2006, 11:56

Цитата:
Честно говоря, я читал исключительно упомянутый Вами учебник (для подобных задачек его более чем достаточно, а в реальной жизни Рефал, к сожалению, никто не использует). Рекомендую поставить систему Refal Scite, очень удобная штука.
А какие еще языки отнесли к "нестандартным" :-)?
К нестандартным были отнесены: Рефал, LISP, Prolog... Кроме этого мы уже прошли алгоритм Маркова и т.д.
За Refal Scite - спасиб.
Если интересно - то можно поискать книги нашего препода - Н.Н. Непейвода, вот ссылка на его страничку: http://ulm.udsu.ru/~nnn/index.html , у него много публикаций. На него самого интересно просто взглянуть ;).
Ответить с цитированием
  (#9 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 13.10.2006, 16:12

Цитата:
К нестандартным были отнесены: Рефал, LISP, Prolog
Не знаю про Рефал, но LISP и Prolog стандартизованы давно.
Ответить с цитированием
  (#10 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 13.10.2006, 19:14

Цитата:
Не знаю про Рефал, но LISP и Prolog стандартизованы давно.
шлангом прикидываетесь?
на всякий случай поясню - под нестандартными подразумевались языки не входящие в мейнстрим программирования и демонстрирующие подход к программированию отличный от мейнстримного.
Посмотрите последний пост с++ в теме про самый крутой язык, очень хорошая иллюстрация.

Представил себе курс, на котором серьезно изучаются всякие паскали несоответствующие стандарту, повеселился.
Ответить с цитированием
  (#11 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 14.10.2006, 03:10

Цитата:
шлангом прикидываетесь?
Нет. Просто намекаю автору темы, что надо выражать свои мысли точнее.
Ответить с цитированием
  (#12 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 14.10.2006, 12:21

Винитарх, два года назад Вы писали:

Ur_Gen! Предлагаю развивать тематику Рефала на этом проложном форуме (лично я в этом очень заинтересован).


А в начале этой темы (чуть больше недели назад) Вы писали:

Цитата:
Вообще то это форум по Прологу, поэтому Ваш вопрос не по нашей теме.
Через павру дней я его удалю, если никто не ответит здесь.

Что так сильно изменило Ваше отношение к Рефалу?
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 15.10.2006, 17:31

gromozeka пишет:
Цитата:
Что так сильно изменило Ваше отношение к Рефалу?
Очень рад, что Вы так подробно и глубоко изучали материалы форума.
Моё отношение к Рефалу изменилось из-за отсутствия RAD-средства. По моему, далёк он от Пролога. Я бы сказал, что он ближе к Лиспу.
Ответить с цитированием
  (#14 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 17.10.2006, 10:37

Цитата:
Очень рад, что Вы так подробно и глубоко изучали материалы форума.
Скорее просто давно... Я читаю проложный форум с момента его появления.

Цитата:
Моё отношение к Рефалу изменилось из-за отсутствия RAD-средства. По моему, далёк он от Пролога. Я бы сказал, что он ближе к Лиспу.
От Лиспа он далек не меньше. Больше всего Рефал напоминают спец-языки для создания компиляторов, например yacc. Ну и Хаскелл немного (там тоже есть сопоставление с образцом).
Рефал мертв не из-за отсутствия RAD-средства (в конце концов тем же Scite вполне можно пользоваться), он мертв из-за отсутствия библиотек и из-за отсутствия более менее востребованных аппликаций на нем.
язык Tcl воспринимается исключительно в сочетании с его библиотекой Tk, Руби широко распространился в последнее время из-за фреймворка Rails, Lisp не остался в стенах лабораторий процентов на 90 благодаря Автокаду и Emacs, список можно продолжать. Программисты - люди ленивые, они станут учить новый язык со странным синтаксисом (я здесь специально привел примеры языков, получивших широкое распространение и не являющихся си-подобными), только если увидят в этом какую-либо пользу . То, что на языке разрабатывается суперкомпилятор для него же - крайне сомнительное достоинство в глазах среднестатистического программиста.

В какой-то момент В.Турчин пытался позиционировать Рефал как идеальный язык для парсинга XML, но и здесь он потерпел фиаско, специальные библиотеки для мейнстримовских языков справляются с этой задачей не хуже.


Да, кстати. Горячо любимый всеми рефальщиками пример с палиндромом:

Код:
Pal { = True;
    s.1 = True;
    s.1 e.2 s.1 = <Pal e.2>;
    e.1 = False;}

дословный перевод на Питон:
Код:
def pal(s):
    if len(s)<=1:return True
    if s[0]==s[-1]:return pal(s[1:-1])
    return False

вольный перевод на Питон:
Код:
def pal(s): return s==s[-1::-1]
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по С++ nemesises Вопросы начинающих программистов 0 01.11.2011 16:21
С++. Задача licenok1_07 Вопросы начинающих программистов 7 19.10.2011 19:32
Помогите, задача по прологу, срочно...задача с высказываниями 4ixOn Prolog 6 10.07.2011 23:29
Помогите, задача по прологу, срочно...задача о станках 4ixOn Prolog 3 09.07.2011 22:48
Задача на Рефале olya_nech_prog@mail.ru Prolog 1 16.01.2010 13:58
Задача Yunno Pascal 4 11.10.2008 19:11
Задача ,,,&#39;..&#39;,,, Prolog 7 29.04.2008 18:09
задача про БД.... imported_ben Prolog 2 18.07.2007 15:37
Бусы на Рефале vilza Prolog 3 01.12.2006 02:07
задача на Си int33 Задания за деньги 1 14.04.2006 17:53
А,В,С- задача про них!! Anonymous Вопросы начинающих программистов 0 08.01.2004 22:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов