Четверг, 25 Апреля 2024, 10:05

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Записи участника » colencor [22]
Результаты поиска
colencorДата: Среда, 07 Сентября 2016, 21:05 | Сообщение # 21 | Тема: Язык программирования Io
был не раз
Сейчас нет на сайте
Брюс Тейт: С каким из самых необычных применений 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
colencorДата: Вторник, 16 Августа 2016, 04:46 | Сообщение # 22 | Тема: Язык программирования Io
был не раз
Сейчас нет на сайте
Для начала, знает ли кто нибудь, что нибудь, про этот язык.
Я узнал про 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
Форум игроделов » Записи участника » colencor [22]
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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