Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Smalltalk
Перезагрузить страницу Io - язык программирования
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 04.10.2016, 22:47

Цитата:
Сообщение от ayax Посмотреть сообщение
Java Код:
rim * := * *list( "I", "V", "X", "L", "C", "D", "M" )
Я так понимаю, что это в задаче перевода арабских в римские?

Цитата:
Сообщение от ayax Посмотреть сообщение
и структура на JavaScript
JS Код:
r_a = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":100 0}
1) Здесь Вы наверное опечатались и на самом деле привели код на заявленном языке Io для задачи перевода римских в арабские, а не на JavaScript?
2) Этого фрагмента кода я не видел в приведённых Вами программах. Если я ошибаюсь, то уточните в каком именно сообщении приведена прога с этим фрагментом кода.
3) Если у Вас появилась новая версия первой задачи (рим2араб), то приведите её здесь. Мы будем посмотреть.
Ответить с цитированием
  (#17 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 06.10.2016, 02:28

Да, Вы верно понимаете.
1. Я не опечатался, я просто показал как компактно может выглядеть r_a на другом языке (в данном случае на JavaScript)
2. Ответ вытекает из п.1.
3. Я думаю, что новой версии просто не может быть - эта оптимальна!
Ответить с цитированием
  (#18 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 06.10.2016, 14:56

Ух ты... Дискуссия до сих пор длится.
Добавлю вторую часть.

python Код:
pairs = [("M",1000),("CM",900),("D",500),("CD",400),("C",100),("XC",90),
         ("L",50),("XL",40),("X",10),("IX",9),("V",5),("IV",4),("I",1)]

def arab2rome(num):
    if num==0: return ""
    for r,n in pairs:
        if n<=num: return r+arab2rome(num-n)

def rome2arab(st):
    if st=="":return 0
    for r,n in sorted(pairs,key=lambda (x,y):len(x),reverse=True):
        if st.startswith(r):
            return n+rome2arab(st[len(r):])



Цитата:
>>> arab2rome(1996)
'MCMXCVI'
>>> rome2arab('MCMXCVI')
1996
Ответить с цитированием
  (#19 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.10.2016, 00:16

Цитата:
Сообщение от ayax Посмотреть сообщение
Да, Вы верно понимаете.
1. Я не опечатался, я просто показал как компактно может выглядеть r_a на другом языке (в данном случае на JavaScript)
Понятно. На Io не получилось, поэтому можно можно юзать любой другой язык
Хорошо. Пусть будет так. Со своей стороны могу предложить два варианта уменьшения структуры данных:
1) Синтаксически уменьшить:
prolog Код:
з(1000, "M", 1). 900, "CM", 2). з(500, "D", 1). з(400, "CD", 2). з(100, "C", 1). з(90, "XC", 2).
з(50, "L", 1). з(40, "XL", 2). з(10, "X", 1). з(9, "IX", 2). з(5, "V", 1). з(4, "IV", 2). з(1, "I", 1).

2) Использовать вместо фактов список. Вот так получатся две проги с одним списком данных:
prolog Код:
f([з('M',1000,1),з('CM',900,2),з('D',500,1),з('CD',400,2),з('C',100,1),з('XC',90,2),
 з('L',50,1),з('XL',40,2),з('X',10,1),з('IX',9,2),з('V',5,1),з('IV',4,2),з('I',1,1)]).
   
   араб_рим(0,''):-!.
   араб_рим(A,R):- f(L),member(з(R1,A1,_),L), A2 is A-A1,
           A2 >= 0, араб_рим(A2,R2), string_concat(R1,R2,R).
   
   рим_араб(R,0):- string_to_atom(R,''),!.
   рим_араб(R,A):- f(L), (member(з(R1,A1,2),L); member(з(R1,A1,1),L)),
                   string_concat(R1,R2,R), рим_араб(R2,A2),
                   A is A1+A2.
Ответить с цитированием
  (#20 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.10.2016, 00:18

Цитата:
Сообщение от ayax Посмотреть сообщение
3. Я думаю, что новой версии просто не может быть - эта оптимальна!
Какая именно версия оптимальна? Та, в которой смесь кода на Io и JavaScript?
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,169
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 07.10.2016, 01:03

только что наткнулся, два дня назад оказывается было на хабре:
https://habrahabr.ru/post/311678/
есть очень красивые вещи
Ответить с цитированием
  (#22 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.10.2016, 23:39

Цитата:
Сообщение от gromozeka Посмотреть сообщение
есть очень красивые вещи
Угу, есть.
Ответить с цитированием
  (#23 (permalink)) Старый
beroal beroal вне форума
Member
 
Сообщений: 104
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 13.12.2002
По умолчанию 06.12.2016, 16:29

А почему мы сравниваем с Прологом? Насколько я понял из начального сообщения, Io — это лямбда-исчисление и ООП. Инициатор темы, лучше бы вы написали, в Io статическая или динамическая система типов. Если динамическая, тогда сравнивайте с Python, Ruby.
Ответить с цитированием
  (#24 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 06.12.2016, 17:02

Цитата:
Сообщение от beroal Посмотреть сообщение
А почему мы сравниваем с Прологом? Насколько я понял из начального сообщения, Io — это лямбда-исчисление и ООП.
В Прологе есть и лямбды и ООП. И пока сравнение не в пользу Io
что касается автора темы, то он давно слился, так как его реклама (восхищение) языка Io не удалась.
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
beroal beroal вне форума
Member
 
Сообщений: 104
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 13.12.2002
По умолчанию 06.12.2016, 21:16

Цитата:
Сообщение от Винитарх Посмотреть сообщение
В Прологе есть и лямбды и ООП.
Вы нашли свой идеальный язык программирования?
Ответить с цитированием
  (#26 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,829
Сказал(а) спасибо: 2
Поблагодарили 284 раз(а) в 284 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.12.2016, 18:01

Нет, но я его создаю, потихоньку.
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самый крутой язык программирования Garik Мысли вслух 7103 08.08.2016 13:00
Язык программирования Gwai Prolog 8 17.05.2011 13:42
Помогите выбрать язык программирования? Джо++ Вопросы начинающих программистов 4 14.05.2011 19:03
Какой язык программирования выбрать St.Ark Вопросы начинающих программистов 30 16.03.2011 18:58
Какой выбрать язык программирования rGradeStd Вопросы начинающих программистов 7 16.01.2011 17:12
Какой выбрать язык для программирования Integrale2 Вопросы начинающих программистов 3 07.01.2011 01:56
Язык программирования Barsic Blan Форум программистов 1 22.03.2008 10:26
язык программирования Матрикс Форум программистов 1 07.06.2007 19:16
Скрипт или язык программирования GEV_256 Мысли вслух 24 09.01.2006 01:54
Язык программирования Loid Мысли вслух 17 29.05.2005 23:20
Скриптовый язык vs Язык программирования relonar Мысли вслух 4 24.09.2004 02:14



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