Воскресенье, 17 Ноября 2024, 13:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Язык программирования Io
dalikivugДата: Среда, 07 Декабря 2016, 23:49 | Сообщение # 21
почетный гость
Сейчас нет на сайте
Цитата
Lua, Io
-
Цитата
не трогай его, он уже мертв
^_^
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 re
r_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/wish
set 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.SwingBuilder
import 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.SwingBuilder
import 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)
---------------------------------------------
Вы знаете что делает этот код :D

Код
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
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг