Форум программистов, компьютерный форум, киберфорум
Наши страницы

Другие языки программирования

Войти
Регистрация
Восстановить пароль
 
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
#1

Скриптовые языки программирования - Программирование

11.11.2016, 00:53. Просмотров 473. Ответов 12
Метки нет (Все метки)

Считаю, что форуму не помешала бы отдельная тема по этим языкам.
Думаю, что тема должна послужить двум вещам:
1. Началу дискурса о том, что представляют собой скриптовые языки,
а так же какие существующие языки можно называть скриптовыми.
2. Может быть по итогам дискурса будет принято решение о создании
соответствующего раздела с подразделами посвящёнными конкретным
языкам.
Для начала несколько примеров кода моей "любимой" темы:
Из римской в арабскую
На JS
Javascript
1
2
3
4
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);
На Perl
Perl 6
1
2
3
4
5
6
7
8
#!/usr/bin/perl
print "Введите римское число:\n\n";  $_ = <STDIN>;   chop( $_ ); $r = $_;
s/IV/IIII/; s/IX/VIIII/; s/XL/XXXX/; s/XC/LXXXX/; s/CD/CCCC/; s/CM/DCCCC/;
%r_a = ( "I" => 1, "V" => 5, "X" => 10, "L" => 50, "C" => 100, "D" => 500, "M" => 1000 );
@s = split( //, $_ );   $a_ch = 0;
foreach ( @s ) { $a_ch += $r_a{ $_ }; };   print "Rim = $r ===> Arab = $a_ch\n";
#$d = split(//, $_);    for( $i = 0; $i < $d; $i++ ) { $a_ch += $r_a{ $s[$i] }; }
#print "Арабское число: $a_ch\n";
На Tcl
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
set r_a(I) 1; set r_a(V) 5; set r_a(X) 10; set r_a(L) 50;
set r_a(C) 100; set r_a(D) 500; set r_a(M) 1000
while 1 {       
puts stdout {Введите римское число:}
set Rim [gets stdin]
set RimCM string map {IV IIII IX VIIII XL XXXX XC LXXXX CD CCCC CM DCCCC} $Rim
set RimN [split $RimCM {}]
set Arab 0 
foreach P $RimN {set Arab [expr  $r_a($P) + $Arab]}
puts stdout "Rim = $Rim ===> Arab = $Arab"
}
На Io
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
Sequence replace := method( b, c, ((self .. c) split(b) map(x, x .. c) join exSlice(0, - 2 * c size)))
r_a   := Map clone
r_a atPut( "I", "1"); r_a atPut( "V", "5"); r_a atPut( "X", "10"); r_a atPut( "L", "50")
r_a atPut( "C", "100"); r_a atPut( "D", "500"); r_a atPut( "M", "1000")
input := method( File standardInput readLine)
line  := "------------------------------------------\n"
writeln("Press n for exit"); w := 0
loop( "rim = " print; rim := input; if( rim == "n", break)
p     := method( rim replace("IV", "IIII") replace("IX", "VIIII") replace("XL", "XXXX") replace("XC", "LXXXX") replace("CD", "CCCC")  replace("CM", "DCCCC") asList)
arab  := method( p foreach( v, w := w + r_a at( v) asNumber))
//arab  := method( for(i, 0, p size - 1, w := w + r_a at( p at( i)) asNumber))
write( line, " rim = ", rim, " ===> arab = ", arab, "\n", line)
    )
Добавлено через 19 минут
Продолжим
Из арабской в римскую:
JS
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
var n = n.split(""), n = n.reverse(), a = new Array(); 
    rim = ["I", "V", "X", "L", "C", "D", "M" ];
    for ( var i=0; i < n.length; i++)
        {     w = "", w2 = "", i2 = 2*i, i1 = 2*i+1;
          v = parseInt(n[i]);
       if ( v == 4   ) { w = rim[i2] + rim[i1]; }
  else if ( v == 9   ) { w = rim[i2] + rim[2*i+2]; }
  else if (( v1 =  v - 5) < 0) { for ( var q=0; q < v; q++) { w += rim[i2];}; }
  else    {  for ( var q=0; q < v1; q++) { w2 += rim[i2];}; w = rim[i1] + w2; } 
              a[i] =w; 
        }
              a.reverse(), u = ""; 
             for ( var j=0; j< a.length; j++) { u += a[j] }; alert( u );
На Perl
Perl 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
print "Введите арабское число:\n\n"; $_ = <STDIN>; chop( $_ );
@rim = ("I", "V", "X", "L", "C", "D", "M");
@s = split( //, $_ ); @y = reverse(@s); $i = 0;
foreach ( @y )
        { $w = ""; $w2 = ""; $i2 = 2*$i; $i1 = 2*$i+1;
            if( $_ == 4)   { $w = $rim[$i2] . $rim[$i1];}
     else { if( $_ == 9)   { $w = $rim[$i2] . $rim[2*$i+2];}
     else { if(($v = $_ - 5) < 0){ for( $q = 0; $q < $_; $q++){ $w = $w . $rim[$i2];};}
     else { for( $q = 0; $q < $v; $q++){ $w2 = $w2 . $rim[$i2];}; $w = $rim[$i1] . $w2;};};};
          $i++; @a[$i] = $w;
        }
        @u = reverse(@a); $p = ""; for ( $j=0; $j < $i; $j++) { $p = $p . $u[$j]; };
        print "Arab = $_ ===> Rim = $p\n";
На Io
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
rim   :=  list( "I", "V", "X", "L", "C", "D", "M" )
rs    :=  method( a asList reverse map( asNumber) map( i, v,
                  w := ""; w2 := ""; i2 := 2*i; i1 := 2*i+1
              if( v == 4, w := rim at(i2) .. rim at(i1),
              if( v == 9, w := rim at(i2) .. rim at(2*i+2),
              if((v1 := v - 5) < 0, for( j, 1, v, w := w .. rim at(i2)),
                  w1 := rim at(i1); for( j, 1, v1, w2 := w2 .. rim at(i2)); w := w1 .. w2)))) reverse) 
                  rez := method(rs join)
input :=  method( File standardInput readLine)
line  := "--------------------------------------\n"
writeln("Press n for exit")
loop(" arab = " print; a := input; if(a == "n",  break )
     write( line, " arab = ", a, " ===> rim = ", rez, "\n", line)
На Tcl написано пока следующее
Javascript
1
2
3
4
5
6
7
8
9
10
set a_r(0) "I"; set a_r(1) "V"; set a_r(2) "X"
set a_r(3) "L"; set a_r(4) "C"; set a_r(5) "D"
set a_r(6) "M"
 
while 1 {
puts stdout {Vvedite:}
set Arab [gets stdin]; set Arabn [split $Arab {}]
 
puts stdout 
        }
Непонятно мне реверсировать список как...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2016, 00:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скриптовые языки программирования (Программирование):

Командные языки - Программирование
Назовите командные языки всех систем! Я знаю только Windows! :rtfm::help::yahoo:

Языки аналоги HTML - Программирование
Кто-нибудь может подскажет языки программирования, которые аналогичны HTML, не обязательно по разметке страницы. Аналог нужен по...

Самые высокооплачиваемые языки? - Программирование
Какие языки программирования (из актуальных) самые высокооплачиваемые?:)

А какие еще бывают языки, компилирующиеся в машинный код? - Программирование
какие еще бывают языки программирования, на которых можно писать оконные проги для винды, которые компилируются в машинный код? я ток...

Imacros или другие языки для создания макроса/скрипта - Программирование
Хочу попросить вашей помощи в создании макроса(но лучше скриптика) или программы, которая пишет пост в группу в соц сеть &quot;Вконтакте&quot; и...

Подскажите языки, которые похожи на Python по синтаксису, но компилируются (или хотя бы просто быстрее) - Программирование
Привет всем! Подскажите какие-нибудь ЯП, которые похоже на Python по синтаксису, но компилируются или хотя бы просто быстрее. Смотрел...

12
_Ivana
3202 / 1829 / 153
Регистрация: 01.03.2013
Сообщений: 5,050
Записей в блоге: 4
11.11.2016, 02:56 #2
Цитата Сообщение от Slenon Посмотреть сообщение
Началу дискурса о том, что представляют собой скриптовые языки
Так может это, поговорим по существу уже? А то тема рискует утонуть в факториалах и забвении.
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
11.11.2016, 04:49  [ТС] #3
Нашёл в сообщении об ошибке - reverse
0
korvin_
1974 / 1459 / 228
Регистрация: 28.04.2012
Сообщений: 5,229
11.11.2016, 09:59 #4
Разделы по JS и Perl'у уже давно есть. Также есть по Ruby и Python. Tcl давно почти никому не нужен. Io никогда не был нужен и не будет.
0
volodin661
933 / 786 / 124
Регистрация: 10.12.2013
Сообщений: 2,740
12.11.2016, 06:55 #5
из Римской в Арабскую:

Perl6:

say Ⅳ + Ⅵ;
say <>.uniname;

output:
10
ROMAN NUMERAL FOUR

Добавлено через 18 минут
римские центурионы факториалы

sub postfix:<!> ( Int \N ) {[*] 1 .. N };

say Ⅳ!

output:
24
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
14.11.2016, 23:45  [ТС] #6
Всё таки "добил" я эту прогу
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
set a_r(0) "I"; set a_r(1) "V"; set a_r(2) "X"
set a_r(3) "L"; set a_r(4) "C"; set a_r(5) "D"
set a_r(6) "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} {
                    lappend W $a_r($I1) $a_r($I2)
               } elseif {$V == 9} {
                    lappend W $a_r($I3) $a_r($I2)
               } elseif {$V1 < 0} {
                  for {set J 0} {$J < $V} {incr J} {
                    lappend W $a_r($I2)
               }} else {
                  for {set J 0} {$J < $V1} {incr J} {
                    lappend W $a_r($I2)
                                                    } 
                    lappend W $a_r($I1)
                       }
               incr I
               }
                set L [string reverse $W]
                set Rim [join $L {}]
                puts stdout "Arab = $Arab ===> Rim = $Rim"
        }
Вобщем, наиболее тяжело дался мне этот код из всех 8-ми!
На одном ресурсе прочёл следующее:
Почему именно Tcl?, спросите вы. Дело в том, что этот язык
оптимально подходит для обучения, и написания непрофессионалами
небольших программ. В то же время, в него заложены большие возможности для расширения.

Не знаю как на счёт расширения, а вот про обучение, и ..., я засомневался.
Многословность и неочевидность синтаксиса...
И если Python является потомком Tcl, то он вряд ли гордится своим предком.
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
29.12.2016, 00:13  [ТС] #7
Python:
Arab -> Rim
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
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)
Rim -> Arab
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)
Добавлено через 20 минут
Lua:
Rim -> Arab
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
  Arab = 0
for elem in values(W) do
  Arab = Arab + r_a[elem]
   end
   print("Arab = ", Arab)
until Rim == "n"
Arab -> Rim
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
  local 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]; print("9", q)
  elseif s == 4 then q = rim[i3] .. rim[i2]; print("4", q)
  elseif 0 < s and s <  4 then local q = ""
        for j = 1, s do q = q .. rim[i3] end  print("1-3", q)
  else      q1 = rim[i2]; local q2 = ""
        for j = 1, s1 do q2 = q2 .. rim[i3] end
             q = q1 .. q2 end print("5-8", q)
 
print(q)
w = w .. q
end
return qm, w
end
repeat
print("Введите Arab")
Arab = io.read()
print("Rim = ", a_r(Arab))
until Arab == "n"
А в этом коде я окончательно "закопался"
Знатоки Lua - просьба помочь...
0
magirus
Супер-модератор
Эксперт по компьютерным сетямЭксперт Windows
27151 / 15427 / 911
Регистрация: 15.09.2009
Сообщений: 67,197
Записей в блоге: 78
29.12.2016, 07:12 #8
по LUA есть свой раздел.
размещайте пожалуйста свои вопросы в СООТВЕТСТВУЮЩИХ разделах форума.
0
Evg
29.12.2016, 13:34
  #9

Не по теме:

Если я правильно понял ТС'а, то нужно создавать не раздел по скриптовым языкам, а раздел для перевода записи чисел из римской в арабскую и обратно. А в нём обязательно подраздел, в который пользователи будут сваливать благодарности ТС'у

0
volodin661
29.12.2016, 17:52
  #10

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
Если я правильно понял ТС'а, то нужно создавать не раздел по скриптовым языкам, а раздел для перевода записи чисел из римской в арабскую
нет, нужен отдельный форум, где переводчики римских чисел в арабские могли бы встречаться,
обмениваться опытом жёнами цифрами и по ходу готовиться к крестовому походу на
неверных - переводчиков арабских чисел в римские.

0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
31.12.2016, 07:51  [ТС] #11
0
Slenon
3 / 3 / 0
Регистрация: 25.07.2016
Сообщений: 113
04.01.2017, 01:41  [ТС] #12
Lua:
Arab -> Rim
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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"
№2
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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"
0
_sg
3626 / 3424 / 228
Регистрация: 12.05.2012
Сообщений: 2,378
24.07.2017, 19:11 #13
Варианты:

https://www.rosettacode.org/wiki/Roman_numerals/Encode

https://www.rosettacode.org/wiki/Roman_numerals/Decode
0
24.07.2017, 19:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2017, 19:11
Привет! Вот еще темы с ответами:

Скриптовые языки для админов Windows - Администрирование Windows
Добрый день. Хотелось бы поговорить про скриптовые языки которые в основном используют администрторы Windows. Например...

Языки программирования - Java
Вопрос, собственно, вот в чем: плюсы и минусы Java относительно других языков. (Ну, очевидно, кроссплатформенность, но не единственный же...

Языки программирования - Web
Мои знания на данный момент ограничиваются на довольно хорошем уровне html, css, и совсем немного Java Script. Я хотел бы заняться...

Языки программирования - PHP
Здравствуйте. Пишу вам сюда,так как не знаю куда обратится. Есть несколько вопросов. Надеюсь тут мне дадут четкий и лаконичный ответ. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.