| 
	
		
		
			| Язык программирования Io |  |  |  | 
| dalikivug | Дата: Среда, 07 Декабря 2016, 23:49 | Сообщение # 21 |  | почетный гость Сейчас нет на сайте | - Цитата  не трогай его, он уже мертв  |  |  |  |  |  | 
| sfabrikan | Дата: Четверг, 08 Декабря 2016, 07:44 | Сообщение # 22 |  |   БЕЗУМЕЦ!!! Сейчас нет на сайте | Цитатаcolencor (  ) Но, возникли проблемы с самим Lua - с интерпритатором...какие же?
 Добавлено (08 декабря 2016, 07:44)---------------------------------------------
 
 Цитатаdalikivug (  ) не трогай его, он уже мертвВсе живо и здарово.
 
 Это я
 |  |  |  |  |  | 
| colencor | Дата: Четверг, 29 Декабря 2016, 20:33 | Сообщение # 23 |  | был не раз Сейчас нет на сайте | Python: 
 Код Rim = ["I", "V", "X", "L", "C", "D", "M"]Q = input("Введите арабское число = ")
 W = str(Q)
 R = reversed(W)
 i = 0; L = []; Re = ""
 for D in R:
 i0 = 2*i; i1 = 2*i+1; i2 = 2*i+2
 E = int(D); E1 = E - 5
 if   E == 4:
 T = Rim[i0] + Rim[i1]
 elif E == 9:
 T = Rim[i0] + Rim[i2]
 elif E1 < 0:
 T = ""
 while E > 0:
 T = T + Rim[i0]; E = E - 1
 else:
 T1 = Rim[i1]; T2 = ""
 while E1 > 0:
 T2 = T2 + Rim[i0]; E1 = E1 - 1
 T = T1 + T2
 i = i+1
 L.append(T)
 L.reverse()
 for V in L:
 Re = Re + V
 print("Rim = ", Re)
 
 Код import rer_a = dict(I=1, V=5, X=10, L=50, C=100, D=500, M=1000)
 B = input("Введите римскую цифру = ")
 Q = re.sub("IV",  "IIII", B)
 W = re.sub("IX", "VIIII", Q)
 E = re.sub("XL",  "XXXX", W)
 R = re.sub("XC", "LXXXX", E)
 T = re.sub("CD",  "CCCC", R)
 U = re.sub("CM", "DCCCC", T)
 Rez = 0
 for D in U:
 Rez = Rez + r_a[D]
 print("Arab = ", Rez)
Вроде как, Groovy считается скриптовым языком для платформы Java, интересно
 как Вы думаете на этот счёт...
 Также хотелось бы прочесть ответ на мой "любимый" вопрос о присвоении ввода
 с клавиатуры переменной...
 А пока так:
 
 Код List Rim = [ "I", "V", "X", "L", "C", "D", "M"]println "Vvedite Arab = "; Arab = "3497"; A = Arab.reverse(); i = 0; l = []
 for( v in A){ x = v as Integer; i0 = i*2; i1 = 2*i+1; i2 = 2*i+2
 switch (x){
 case 4: r = Rim[i0] + Rim[i1]; break
 case 9: r = Rim[i0] + Rim[i2]; break
 case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + Rim[i0]}; break
 case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + Rim[i0]}; r1 = Rim[i1]; r = r1 + r2; break
 }; ++i; l = l + r}
 L = l.reverse(); S = L.join(); print "Rim = "; print S
 Код Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000] BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
 print "Vvedite Rim = "
 Rim = br.readLine()
 while( Rim != "n") {
 f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
 Arab = 0
 for(i in f) { Arab = Arab + rim_arab[i]}
 print "Arab = "; print Arab
 }
 
 Vvedite Rim =
 Exception thrown
 
 java.io.IOException: Неверный дескриптор
 
 at java.io.FileInputStream.readBytes(Native Method)
 ....................................................................................
Мне непонятно, что с дескриптором...
 Добавлено (28 декабря 2016, 00:08)---------------------------------------------
 Вопрос с самим Lua решён самостоятельно, а вот за код спасибо!
   
 Код r_a = {}r_a["I"] = 1; r_a["V"] = 5; r_a["X"] = 10; r_a["L"] = 50
 r_a["C"] = 100; r_a["D"] = 500; r_a["M"] = 1000
 repeat
 print("Введите Rim")
 Rim = io.read()
 RimIV = string.gsub(Rim,   "IV", "IIII")
 RimIX = string.gsub(RimIV, "IX", "VIIII")
 RimXL = string.gsub(RimIX, "XL", "XXXX")
 RimXC = string.gsub(RimXL, "XC", "LXXXX")
 RimCD = string.gsub(RimXC, "CD", "CCCC")
 RimCM = string.gsub(RimCD, "CM", "DCCCC")
 local W = {}
 local j = 1
 for i in string.gmatch(RimCM, ".") do W[j] = i; j=j+1 end
 function values (t)
 local k = 0
 return function () k = k + 1; return t[k] end
 end
 Rez = 0
 for elem in values(W) do
 Rez = Rez + r_a[elem]
 end
 print("Rez = ", Rez)
 until Rim == "n"
Добавлено (29 декабря 2016, 20:33)---------------------------------------------
 Работающий код на Groovy:
 
 Код Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
 Rim = "q"
 while( Rim != "n") {
 print "Vvedite Rim = "
 Rim = br.readLine()
 f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
 Arab = 0
 for(i in f) { Arab = Arab + rim_arab[i]}
 print "Arab = "; println Arab
 }
 litl
 |  |  |  |  |  | 
| dalikivug | Дата: Пятница, 30 Декабря 2016, 03:37 | Сообщение # 24 |  | почетный гость Сейчас нет на сайте | На JavaScript 
 
 Код const lang = {
 CM: 900,
 CD: 400,
 XC: 90,
 IX: 9,
 IV: 4,
 I: 1,
 V: 5,
 X: 10,
 L: 50,
 C: 100,
 D: 500,
 M: 1000
 }
 
 const conv =
 input => Object.entries(lang).reduce(
 ([result, input], [rim, arab]) => [
 // Берем кол-во вхождений римской цифры и умножаем на её вес, прибавляя к результату
 result + ((input.split(rim).length - 1) * arab),
 // Удаляем все вхождения римской цифры
 input.replace(new RegExp(rim, 'g'), '')
 ],
 [0, input]
 )[0]
 
 
 Код conv('MCMXCIX') // 1999
 
 // Или если с вводом
 alert(conv(prompt().toUpperCase()))
 
 
 Сообщение отредактировал dalikivug - Пятница, 30 Декабря 2016, 03:42 |  |  |  |  |  | 
| colencor | Дата: Суббота, 31 Декабря 2016, 08:38 | Сообщение # 25 |  | был не раз Сейчас нет на сайте | Если Вы не обратили внимание - 
 Код var c = prompt("Введите римское число :", "");c = c.replace(/IV/, "IIII").replace(/IX/, "VIIII").replace(/XL/, "XXXX").replace(/XC/, "LXXXX").replace(/CD/, "CCCC").replace(/CM/, "DCCCC");
 var v = c.split(""), rez = 0, r_a = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000};
 for ( var f=0; f < v.length; f++ )  { rez += r_a[v[f]]; };  alert(rez);
и ещё -
 
 Код var n = prompt("Введите арабское число :", "");n = parseInt(n);
 var rim = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
 var arab = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
 var i=0, s="";
 while ( n > 0 ) {
 while (arab[i] <= n) {
 s += rim[i];
 n -= arab[i];     }
 i++; }
 alert(s);
Добавлено (31 декабря 2016, 08:38)---------------------------------------------
 ... и что то я не узнаю родный JS - просветите невежду
    
 litl
 |  |  |  |  |  | 
| dalikivug | Дата: Суббота, 31 Декабря 2016, 16:25 | Сообщение # 26 |  | почетный гость Сейчас нет на сайте | Действительно, не заметил, сори) 
 Это частично ES5 (нов. стандарт)
 И стандартный Array.reduce
 
 Object.entries берет все поля и их значения
 Приводя в массив вида [[key,value], [key, value], ...]
 
 Затем по нему мы делаем reduce
 |  |  |  |  |  | 
| colencor | Дата: Четверг, 30 Ноября 2017, 20:04 | Сообщение # 27 |  | был не раз Сейчас нет на сайте | Вот код: 
 Код proc map {lambda list} {set result {}
 foreach item $list {
 lappend result [apply $lambda $item]
 }
 return $result
 }
 set x {a bb ccc dddd eeeee }
 map {x {return [append x xyz]}} $x
 #map {x {return [string length $x]:$x}} $x
 #set x {1 5 10 50 100 500 1000}
 #map {x {return [expr 2 * $x]}} $x
Вопрос знатокам Tcl!
 Почему если после append стоит $x то получается
 xyz xyz xyz xyz xyz
 а если просто x, то тогда
 axyz bbxyz cccxyz ..., хотя такой результат логичнее при $x,
 исходя из других примеров...
 
 Добавлено (04 января 2017, 01:24)
 ---------------------------------------------
 Lua:
 
 Код rim = {"M", "D", "C", "L", "X", "V", "I"}function dom(a, b)
 x = (a - math.fmod(a, b))/b
 return x
 end
 function a_r(Arab)
 local qm = ""
 d = dom(Arab, 1000)
 for k = 1, d do
 qm = qm .. "M"
 end
 w = ""
 for i = 1, 3 do
 s = dom(math.fmod(Arab, math.pow (10, (4-i))), math.pow (10, (3-i)))
 i3 = 2*i+1; i2 = 2*i; i1 = 2*i-1; s1 = s-5
 if s == 9 then q = rim[i3] .. rim[i1]
 elseif s == 4 then q = rim[i3] .. rim[i2]
 elseif 0 < s and s < 4 then q = ""
 for j = 1, s do q = q .. rim[i3] end
 elseif 4 < s and s < 9 then q1 = rim[i2]; q2 = ""
 for j = 1, s1 do q2 = q2 .. rim[i3] end
 q =  q1 .. q2
 else       q = ""
 end
 w = w .. q
 end
 return qm, w
 end
 repeat
 print("Введите Arab = ")
 Arab = io.read()
 print("Rim = ", a_r(Arab))
 until Arab == "n"
Другой вариант:
 
 Код rim = {"I", "V", "X", "L", "C", "D", "M"}function a_r(Arab)
 Bara = Arab:reverse()
 local U = {}; local j = 1
 for i in string.gmatch(Bara, ".") do U[j] = i; j=j+1 end
 function values (t)
 local k = 0
 return function () k = k + 1; return t[k] end
 end
 i = 0; w = {}; l = 1
 for t in values(U) do
 s = t + 0
 ii = 2*i+1; iv = 2*i+2; ix = 2*i+3; s1 = s-5
 if s == 9 then q = rim[ii] .. rim[ix]
 elseif s == 4 then q = rim[ii] .. rim[iv]
 elseif s < 4 then q = ""
 for j = 1, s do q = q .. rim[ii] end
 else       q1 = rim[iv];  q2 = ""
 for j = 1, s1 do q2 = q2 .. rim[ii] end
 q =  q1 .. q2
 end
 l = Arab:len() - i
 w[l] = q
 i = i + 1
 end
 return table.concat(w)
 end
 repeat
 print("Введите Arab = ")
 Arab = io.read()
 print("Rim = ", a_r(Arab))
 until Arab == "n"
 
 Добавлено (16 февраля 2017, 01:36)
 ---------------------------------------------
 Удобочитаемый код на Groovy:
 
 Код List Rim = [ "I", "V", "X", "L", "C", "D", "M"]BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
 while(1) {
 print "Vvedite Arab = "
 Arab = br.readLine(); if ( Arab == "n") {break}
 A = Arab.reverse(); i = 0; L = []
 for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2
 switch (x){
 case 4: r = Rim[iI] + Rim[iV]; break
 case 9: r = Rim[iI] + Rim[iX]; break
 case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + Rim[iI]}; break
 case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + Rim[iI]}; r1 = Rim[iV]; r = r1 + r2; break
 case 0: r = ""; break
 }; ++i; L = L + r}
 S = L.reverse().join(); print "Rim = "; println S
 }
 Добавлено (19 февраля 2017, 00:44)
 ---------------------------------------------
 Улучшенная версия Arab_Rim (Tcl):
 
 Код #!/usr/local/bin/wishset a_r {I V X L C D M}
 while 1 {
 puts stdout { Vvedite Arab:}
 set Arab [gets stdin]
 set Arabn [split $Arab {}]
 set Zx [string reverse $Arabn]
 set I 0; set W ""; set W2 ""
 foreach V $Zx { set I2 [expr 2*$I]; set I1 [expr 2*$I+1]
 set I3 [expr 2*$I+2]; set V1 [expr $V - 5]
 if {$V == 4} {
 append W [lindex $a_r $I1] [lindex $a_r $I2]
 } elseif {$V == 9} {
 append W [lindex $a_r $I3] [lindex $a_r $I2]
 } elseif {$V1 < 0} {
 for {set J 0} {$J < $V} {incr J} {
 append W [lindex $a_r $I2]
 }} else {
 for {set J 0} {$J < $V1} {incr J} {
 append W [lindex $a_r $I2]
 }
 append W [lindex $a_r $I1]
 }
 incr I
 }
 set L [string reverse $W]
 puts stdout "Arab = $Arab ===> Rim = $L"
 }
 Добавлено (04 марта 2017, 23:07)
 ---------------------------------------------
 
 Код def Vvod () {BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
 print "Vvedite Rim = "; Rim = br.readLine()
 }
 def rimarab (Rim) {
 Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
 f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
 Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}
 }
 def Vivod () { print "Arab = "; println Arab}
 while (1) {
 Vvod (); if(Rim == "n") {break}
 rimarab (Rim)
 Vivod ()  }
 Добавлено (08 марта 2017, 09:15)
 ---------------------------------------------
 
 Код def Vvod () {print "Vvedite Rim = "; Rim = System.in.newReader().readLine()}
 Добавлено (23 марта 2017, 13:25)
 ---------------------------------------------
 Код Groovy и Swing:
 
 Код import groovy.swing.SwingBuilderimport javax.swing.JOptionPane
 def ArabRim (Arab) {
 List Rim = [ "I", "V", "X", "L", "C", "D", "M"]
 A = Arab.reverse(); i = 0; L = []
 for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2
 switch (x){
 case 4: r = Rim[iI] + Rim[iV]; break
 case 9: r = Rim[iI] + Rim[iX]; break
 case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + Rim[iI]}; break
 case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + Rim[iI]}; r1 = Rim[iV]; r = r1 + r2; break
 case 0: r = ""; break
 }; ++i; L = L + r}
 S = L.reverse().join(); return S
 }
 swing = new SwingBuilder()
 button = swing.button(text: 'Вычислить', actionPerformed: {
 JOptionPane.showMessageDialog(frame, ArabRim(message.text))
 })
 frame = swing.frame(title: 'Арабские в римские'){
 panel(){
 message = textField(columns: 10)
 widget(button)
 }}
 frame.pack()
 frame.show()
 
 Код import groovy.swing.SwingBuilderimport javax.swing.JOptionPane
 def RimArab (Rim) {
 Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
 f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
 Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab
 }
 swing = new SwingBuilder()
 button = swing.button(text: 'Вычислить', actionPerformed: {
 JOptionPane.showMessageDialog(frame, RimArab(message.text))
 })
 //button1 = swing.button(text: 'Очистить', actionPerformed: {//message.cut()})
 // JOptionPane.showMessageDialog(frame, message.cut())
 //})
 frame = swing.frame(title: 'Римские в арабские'){
 panel(){
 message = textField(columns: 12)
 widget(button)
 // widget(button1)
 }}
 frame.pack()
 frame.show()
 Добавлено (03 апреля 2017, 18:43)
 ---------------------------------------------
 Извините, смотрите в теме Программирование на Groovy
 
 Добавлено (13 августа 2017, 18:20)
 ---------------------------------------------
 Вот мальчики и девочки что получается когда пытаешься забить
 гвоздь микроскопом (рубанком по моему будет правильнее
  ) Код на CLIPS:
 
 Код (defrule arab_rim   =>(bind ?a_r  "M" "D" "C" "L" "X" "V" "I")
 (bind ?R (create$ ?a_r))
 (printout t "Vvedite Arab = ")
 (bind ?Arab (read))
 (printout t "Arab = " ?Arab "  ==>  " "Rim = ")
 (bind ?Rt (div ?Arab 1000 ))
 (if (> ?Rt 0) then (loop-for-count  ?Rt do (bind ?W "M") (printout t ?W )))
 (loop-for-count (?I 0 2) do (bind ?S (div (mod ?Arab (** 10 (- 3 ?I))) (** 10 (- 2 ?I))))
 (bind ?Ii (+ (* ?I 2) 3))
 (bind ?Vi (+ (* ?I 2) 2))
 (bind ?Xi (+ (* ?I 2) 1))
 (bind ?S1 (- ?S 5))
 (if (= ?S 0) then (bind ?Q "")
 else
 (if (= ?S 9) then (bind ?Q (str-cat (nth$ ?Ii ?R) (nth$ ?Xi ?R)))
 else
 (if (= ?S 4) then (bind ?Q (str-cat (nth$ ?Ii ?R) (nth$ ?Vi ?R)))
 else
 (if (< ?S1 0) then (loop-for-count ?S  do (bind ?Q1 (nth$ ?Ii ?R)) (printout t ?Q1) (bind ?Q ""))
 else (bind ?Q2 (nth$ ?Vi ?R)) (printout t ?Q2)
 (loop-for-count ?S1 do (bind ?Q3 (nth$ ?Ii ?R)) (printout t ?Q3))
 (bind ?Q "")
 ))))
 (printout t ?Q))
 (printout t crlf))
Добавлено (30 ноября 2017, 20:04)---------------------------------------------
 Вы знаете что делает этот код
   
 Код Spisok := method(n,order := list(0); Q := 0
 while(Q <= n,
 J := 0; T := (Number Random value(1, n) round)
 order foreach(I, if(T != I, J := J + 1))
 if(J == order size, order := order append(T))
 Q := order size
 )
 order select(order, order > 0)
 )
 input  := method(File standardInput readLine)
 writeln("Press Enter for exit")
 loop(" N = " print; inp := input; if(inp isNil, break)
 n := inp asNumber; if(n isNan,  break )
 W := Spisok(n)
 writeln( " Spisok = ", W)
 )
 
 litl
 
 
 Сообщение отредактировал colencor - Воскресенье, 13 Августа 2017, 18:25 |  |  |  |  |  
 |