Результаты поиска
| |
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
|
|
| |
|