Вторник, 17 октября 2017, 12:51

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 212»
Форум игроделов » Программирование » Скриптовые языки программирования » Язык программирования Io (Вопросы про этот язык)
Язык программирования Io
colencorДата: Вторник, 16 августа 2016, 04:46 | Сообщение # 1
был не раз
Сейчас нет на сайте
Для начала, знает ли кто нибудь, что нибудь, про этот язык.
Я узнал про Io прочтя книгу "Семь языков за семь недель" (ДМК, Брюс Тейт)
На этот момент мною написан код myIf ( изменённый if ), а также несколько
реализаций перевода из арабской системы чисел в латинскую.
Сейчас пытаюсь написать приложение "из латинской в арабскую".
Вопросов куча %)

Добавлено (16 августа 2016, 04:46)
---------------------------------------------
Примеры кода:
№1

Код
rim := list( "M", "D", "C", "L", "X", "V", "I" )
%+  := method( a, b, ( a - a % b)/b)
rt  := method( for( i, 1,  %+( a, 1000), write("M")))
rs  := method( for( i, 0, 2, ( s := %+( a % 10**(3-i), 10**(2-i)); i2 := 2*i+2; i1 := 2*i+1
                if( s == 9, write( rim at(i2) .. rim at(2*i)),
                if( s == 4, write( rim at(i2) .. rim at( i1)),
                if((s1 := s - 5) < 0, for( j, 1, s,  write(rim at(i2))),
                write(rim at(i1)) for( j, 1, s1, write(rim at(i2)))))))))

input := method( File standardInput readLine)
line := "----------------------------\n"
writeln("Press Enter for exit")
loop(inp := input; if(inp isNil, break)
     a := inp asNumber; if(a isNan,  break )
     write( line, " ", a, " ===> ") rt rs"" write( "\n", line)
    )


№2

Код
myIf := method( call evalArgAt( 2 ); ifFalse( call evalArgAt( 1 )); ifTrue( call evalArgAt( 0 )))
rim := list( "M", "D", "C", "L", "X", "V", "I" )
%+  := method( a, b, ( a - a % b)/b)
rt  := method( for( i, 1,  %+( a, 1000), write("M")))
rs  := method( for( i, 0, 2, ( s := %+( a % 10**(3-i), 10**(2-i))); i2 := 2*i+2; i1 := 2*i+1; s1 := s - 5
             ( s == 9) myIf( write( rim at(i2) .. rim at(2*i)))
             ( s == 4) myIf( write( rim at(i2) .. rim at( i1)))
             ( 0 < s and s < 4 ) myIf( for( j, 1, s,  write(rim at(i2))))
             ( 5 <= s and s < 9) myIf(write(rim at(i1)) for( j, 1, s1, write(rim at(i2))))))
input := method( File standardInput readLine)
line := "---------------------------\n"
writeln("Press Enter for exit")
loop(
    inp := input; if(inp isNil, break)
    a := inp asNumber; if(a isNan,  break )
    write( line, " ", a, " ===> ") rt rs"" write( "\n", line)
    )


litl
TLTДата: Вторник, 16 августа 2016, 16:03 | Сообщение # 2
Сейчас нет на сайте
Цитата colencor ()
знает ли кто нибудь, что нибудь, про этот язык.

Слышал, но не юзал вообще. Даже синтаксис не смотрел...


Дао, выраженное словами, не есть истинное Дао.
TymonrДата: Вторник, 16 августа 2016, 18:49 | Сообщение # 3
With OpenSource forever
Сейчас нет на сайте
А на кой он нужен-то?)

Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
colencorДата: Среда, 07 сентября 2016, 21:05 | Сообщение # 4
был не раз
Сейчас нет на сайте
Брюс Тейт: С каким из самых необычных применений Io вам приходилось сталкиваться?
Стив Декорт: До меня дошли слухи, что Io используется на спутниках, в маршрутизаторах, как язык управления настройками, в игровых программах, как язык сценариев. Кроме того, известно, что Io используется компанией Pixar. Они отмечали этот факт в своём блоге.

Ещё код:
Код
arab  := list( 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 )
rim   := list( "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" )
myw   := method( while( n > 0, while( arab at(i) <= n, s = s .. rim at(i); n = n - arab at(i)); i = i + 1) return(s))
input := method( File standardInput readLine)
line  := "---------------------------\n"
writeln("Press Enter for exit")
loop( i   := 0; s := ""
      inp := input; if(inp isNil, break)
      n   := inp asNumber; if(n isNan,  break )
      write(line, " ", n, "  ===>  ", myw, "\n", line)
    )

немного изменённый код( вложенные методы):
Код
.......
myw1 := method( while( arab at(i) <= n, s = s .. rim at(i); n = n - arab at(i)) return(s))
myw  := method( while( n > 0, myw1; i = i + 1) return(s))
.......

Вот программа на JS которую я пытаюсь переделать...
Код
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);

Сейчас меня интересует как перевести строку c =c.replace(...

Добавлено (24 августа 2016, 21:42)
---------------------------------------------
Вот что у меня получилось:
Код
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 Enter for exit"); w := 0
loop( "rim = " print; rim := input; if( arab isNil, 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( for(i, 0, p size - 1, w := w + r_a at( p at( i)) asNumber))
arab  := method( p foreach( v, w := w + r_a at( v) asNumber))
write( line, " ", "rim = ", rim, " ===> ", "arab = ", arab, "\n", line)
    )

Планирую изменить с использованием foreach и/или map...

Добавлено (31 августа 2016, 23:36)
---------------------------------------------
Решение квадратного уравнения:
Код
input_a := method( File standardInput readLine)
input_b := method( File standardInput readLine)
input_c := method( File standardInput readLine)
writeln("Press Enter for exit")
loop("a = " print; inp_a := input_a; if(inp_a isNil, break); a := inp_a asNumber; if(a isNan,  break)
     "b = " print; inp_b := input_b; if(inp_b isNil, break); b := inp_b asNumber; if(b isNan,  break)
     "c = " print; inp_c := input_c; if(inp_c isNil, break); c := inp_c asNumber; if(c isNan,  break)
      d := method( b*b - 4*a*c)
      e := method( d abs sqrt)
  if( d > 0, X1 := method(( -b + e)/(2*a)); X2 := method(( -b - e)/(2*a)); write( "X1 = ", X1, "\n", "X2 = ", X2, "\n"))
  if( d == 0, X1_X2 := method( -b/(2*a)); write( "X1,X2 = ", X1_X2, "\n"))
  if ( d < 0, X := method(-b/(2*a)); XI := method(e/(2*a)); write( "X1 = ", X, " + ", XI, "*i", "\n", "X2 = ", X, " - ", XI, "*i", "\n"))
    )


Добавлено (07 сентября 2016, 21:05)
---------------------------------------------
С использованием map и foreach:
Код
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)
         t := ""; rez := method( rs foreach( v, t := t .. v))
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)
    )


litl

Сообщение отредактировал colencor - Среда, 07 сентября 2016, 21:11
GudleifrДата: Среда, 07 сентября 2016, 21:25 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
colencor, спасибо, минусы языка очевидны. А плюсы есть?

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
colencorДата: Понедельник, 26 сентября 2016, 21:13 | Сообщение # 6
был не раз
Сейчас нет на сайте
Отвечу цитатой из книги:
3.5 В заключение об Io
Io - замечательный язык, он отлично подходит для изучения принципов программирования на языках, основанных на прототипах.
Синтаксис языка удивительно прост, но его семантика обладает невероятной широтой. Языки на основе прототипов обеспечивают
инкапсуляцию данных и поведение подобно объектно-ориентированным языкам. Но механизм наследования в них реализуется
намного проще. В Io нет ни модулей, ни классов. Каждый объект наследует свойства и методы непосредственно от своего прототипа.
Сильные стороны
Языки на основе прототипов обычно более удобны.Они позволяют изменять любые слоты любых объектов. Io обладает огромной
гибкостью, давая возможность изменять его синтаксис по мере необходимости. Как и в случае с языком Ruby, чтобы сделать язык
Io таким динамичным, его создателю пришлось пойти на компромиссы, касающиеся потери производительности, по крайней мере в
однопоточных приложениях. Мощные, современные библиотеки поддержки параллельных вычислений превращают Io в отличный
инструмент параллельной разработки. Рассмотрим поближе наиболее сильные стороны Io.
Размер интерпретатора
Интерпретатор языка Io имеет очень небольшой размер. Большинство промышленных приложений на Io выполняется во встраиваемых
системах. И это вполне закономерно, потому что язык очень маленький, мощный и гибкий, а виртуальная машина легко переносится в
различные операционные окружения.
Простота
Io имеет особенно компактный синтаксис. Изучить его можно в самые кратчайшие сроки. Как только вы научитесь понимать базовый
синтаксис языка, вам останется лишь познакомиться со структурой библиотек языка.
Гибкость
В Io используется модель "утиной" типизации и разрешается изменять любые слоты любых объектов в любой момент времени. Такая
свобода означает, что вы можете изменить даже самые основные правила языка в угоду своему приложению. Вы легко можете
реализовать обработку обращений к несуществующим методам посредством слота forward. Вы можете также переопределить ключевые
конструкции языка, непосредственно изменяя их слоты. Вы можете даже определять свои синтаксические конструкции.
Параллельные вычисления
В Io используются современные механизмы параллельных вычислений. Акторы, отложенные вычисления и сопрограммы значительно
облегчают создание многопоточных приложений, более простых в тестировании и обладающих более высокой производительностью.
Io также придаёт особое значение изменяемым данным и помогает избежать их использования. Наличие всех этих особенностей,
реализованных в виде стандартных библиотек, упрощает изучение более надёжной модели параллельных вычислений.

Добавлено (26 сентября 2016, 21:13)
---------------------------------------------
Пытался выяснить как в Io обстоят дела с функциями высшего порядка ( map, foreach, ... )
Конкретно хотел узнать есть ли в Io формальный способ их создания (например как в LISP, Haskell, ...)
Не вышло. Поэтому решил сделать функцию zipWith "в лоб":

Код
input_x := method( File standardInput readLine split(","))
input_y := method( File standardInput readLine split(","))
input_z := method( File standardInput readLine)
loop(
      " Vvedite 1 spisok := " print; x := input_x map( asNumber)
      " Vvedite 2 spisok := " print; y := input_y map( asNumber)
      " Vvedite operator := " print; z := input_z; if( z == "n", break)
      %+  := method( a, b, ( a - a % b)/b)
d := method( a, b, if( c == "+" , a +  b, if( c == "-" , a - b,
                   if( c == "*" , a *  b, if( c == "/" , a / b,
                   if( c == "..", a .. b, if( c == "%" , a % b,
                    if( c == "%+", %+(a, b)))))))))
zipWith := method( a, b, c, a map( i, x,  d( x, b at(i))))
zipWith( x, y, z) println

Функция берёт два списка и превращает их в один, используя заданный оператор (функцию)

Код
s := Map clone
s atPut( "+", "x + y"); s atPut( "-", "x - y")
s atPut( "*", "x * y"); s atPut( "/", "x / y")
input_r := method( File standardInput readLine)
input_x := method( File standardInput readLine)
input_y := method( File standardInput readLine)
input_z := method( File standardInput readLine)
loop(
" Vvedite r        := " print; r := input_r; if( r == "n", break)
" Vvedite 1 spisok := " print; x := input_x split(" ") map( asNumber)
" Vvedite 2 spisok := " print; y := input_y split(" ") map( asNumber)
" Vvedite operator := " print; z := input_z
d := method( x, y, doString( s at( z)))
zipWith := method( x, y, x map( i, v, d( v, y at(i))))
zipWith( x, y, z) println
   )

Пока в Io меня раздражает только синтаксис Map...
Возможность же, обращаться с List как со списком, так и как с массивом -несомненная находка. Подскажите, кто знает, есть ли такая возможность в других языках, и названия этих языков.


litl

Сообщение отредактировал colencor - Понедельник, 26 сентября 2016, 21:02
GudleifrДата: Понедельник, 26 сентября 2016, 21:43 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Цитата colencor ()
Подскажите, кто знает, есть ли такая возможность в других языках, и названия этих языков.
Практически во всех интерпретаторах (кроме хардкорных) и во всех библиотеках контейнеров. Этот баг принято считать фичей.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
colencorДата: Суббота, 29 октября 2016, 21:00 | Сообщение # 8
был не раз
Сейчас нет на сайте
На Perl:
Код
#!/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";


Добавлено (29 октября 2016, 21:00)
---------------------------------------------
Tcl, Python, Ruby, Lua... что ещё?! :D


litl

Сообщение отредактировал colencor - Воскресенье, 30 октября 2016, 00:22
SaiteiДата: Воскресенье, 30 октября 2016, 03:42 | Сообщение # 9
старожил
Сейчас нет на сайте
colencor, есть ли смысл гнаться за количеством языков? Может, лучше уделить больше внимания качеству своих знаний?
Как говорил Брюс Ли: ""Я не боюсь того, кто изучает 10,000 различных ударов. Я боюсь того, кто изучает один удар 10,000 раз"

Но, с другой стороны, если это just for fun... То тут никто не запретит :)
colencorДата: Понедельник, 31 октября 2016, 20:10 | Сообщение # 10
был не раз
Сейчас нет на сайте
Из арабской в римскую:
Код
#!/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";

Добавлено (31 октября 2016, 20:10)
---------------------------------------------
На JS:

Код
var n = prompt("Введите арабское число :", "");    
    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 );


litl
GudleifrДата: Вторник, 01 ноября 2016, 08:49 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата Saitei ()
есть ли смысл гнаться за количеством языков?
Гнаться не надо, сами придут.
А со скриптовыми все еще хуже - каждая более-менее развитая система имеет свой.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
colencorДата: Вторник, 01 ноября 2016, 16:07 | Сообщение # 12
был не раз
Сейчас нет на сайте
Просьба!!!
Нужен код на Tcl, который позволяет ввести с клавиатуры значение,
присвоить его переменной, вывести на экран (всё это в цикле).


litl
GudleifrДата: Вторник, 01 ноября 2016, 16:23 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Цитата colencor ()
Нужен код на Tcl, который позволяет ввести с клавиатуры значение,
присвоить его переменной, вывести на экран (всё это в цикле).

Код
while 1 {
    set a [gets stdin]
    puts $a
}


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
colencorДата: Четверг, 10 ноября 2016, 23:05 | Сообщение # 14
был не раз
Сейчас нет на сайте
Из римской в арабскую, на Tcl:
Код
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]
regsub {IV} $Rim IIII RimIV;   regsub {IX} $RimIV VIIII RimIX
regsub {XL} $RimIX XXXX RimXL; regsub {XC} $RimXL LXXXX RimXC
regsub {CD} $RimXC CCCC RimCD; regsub {CM} $RimCD DCCCC RimCM
set RimN [split $RimCM {}]
set Arab 0
foreach P $RimN {set Arab [expr  $r_a($P) + $Arab]}
puts stdout "Rim = $Rim ===> Arab = $Arab"
}


Добавлено (09 ноября 2016, 01:12)
---------------------------------------------
Усовершенствованная версия:
Код
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"
}


Добавлено (10 ноября 2016, 23:05)
---------------------------------------------
Смотрю в книгу, вижу фигу... :(
Книга "Практическое программирование на Tcl и Tk" (4-ое изд.)
А нужно мне произвести реверс списка...
Так что, кто знает, просьба помочь!
Нашёл в сообщении об ошибке - reverse


litl

Сообщение отредактировал colencor - Пятница, 11 ноября 2016, 04:44
XakepДата: Воскресенье, 13 ноября 2016, 11:51 | Сообщение # 15
めちゃくちゃちゃ
Сейчас нет на сайте
Ппц что за дичь, на питоне перевод из арабского в римское число делается в пару строк:
Код

vals = zip(('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ),
           (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1))

def solution(n):
    if n == 0: return ""
    return next(c + solution(n-v) for c, v in vals if v <= n)




Проекты:
Aphalin Compiler - новый язык программирования
E2DIT - Среда разработки, редактор уровней для 2D игр на Haxe


Сообщение отредактировал Xakep - Воскресенье, 13 ноября 2016, 14:50
colencorДата: Вторник, 22 ноября 2016, 23:14 | Сообщение # 16
был не раз
Сейчас нет на сайте
Думаете Xakep, я не знаю этот алгоритм и эту структуру данных...
Тогда посмотрите в начало темы( на Io)...
Но такая структура данных как
Код
rim := list( "M", "D", "C", "L", "X", "V", "I" )

или
Код
rim :=list("I", "V", "X", "L", "C", "D", "M")

выглядит куда как более симпотно! :)
И, кстати:
Код
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"
        }

Может быть, ради интереса, сделать проги на Python... :D

Добавлено (22 ноября 2016, 23:14)
---------------------------------------------
Просьба - нужен код (язык Lua) для перевода строки в список ("Hello" --> {"H", "e", "l", "l", "o"})


litl
SaiteiДата: Среда, 23 ноября 2016, 07:08 | Сообщение # 17
старожил
Сейчас нет на сайте
Цитата colencor ()

Просьба - нужен код (язык Lua) для перевода строки в список ("Hello" --> {"H", "e", "l", "l", "o"})

Прости конечно за грубость, но может за тебя ещё и язык выучить, да и программу написать?
Ты просишь такое, что гуглится ровно минуту.

Цитата Saitei ()
есть ли смысл гнаться за количеством языков? Может, лучше уделить больше внимания качеству своих знаний?
colencorДата: Пятница, 25 ноября 2016, 14:13 | Сообщение # 18
был не раз
Сейчас нет на сайте
Код
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")
RimCM = {"I", "V", "X"} -- на месте этой строки
-- должен находиться код перевода строки в список
-- в данный момент RimCM - это тест.
function values (t)
   local i = 0
   return function () i = i + 1; return t[i] end
   end
  Rez = 0
for elem in values(RimCM) do
   Rez = Rez + r_a[elem]
   end
   print(Rez)
until Rim == "n"


litl
sfabrikanДата: Воскресенье, 04 декабря 2016, 13:43 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Цитата colencor ()
Просьба - нужен код (язык Lua) для перевода строки в список ("Hello" --> {"H", "e", "l", "l", "o"})

Наверное уже не актуально, но все же
Код
local tbl = {}
local j = 1
for i in string.gmatch("Hello", ".") do tbl[j] = i; j=j+1 end


ущел в армейку
colencorДата: Среда, 07 декабря 2016, 22:19 | Сообщение # 20
был не раз
Сейчас нет на сайте
Спасибо, sfabrikan - актуально...
Но, возникли проблемы с самим Lua - с интерпритатором... :(


litl
Форум игроделов » Программирование » Скриптовые языки программирования » Язык программирования Io (Вопросы про этот язык)
Страница 1 из 212»
Поиск:

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