LINUX.ORG.RU

[ruby] Как вывести содержание массива?

 


0

0

Сабж

a=[4*1, 2*2, 5-1, 40/10, 401-397]
puts a
puts "Вот сколько способов получить число 4!"

Надо вывести на экран выражения из массива. Как?

И есть ли в ruby аналог модуля CRT из TurboPascal? Если есть, то расскажите, как пользоваться им?

★★

выражения вычисляются при определении массива. что бы не вычислялись - возьми их в кавычки т.е. ['4*1', '2*2'...

dizza ★★★★★
()
Ответ на: комментарий от static_lab

Хотя ncurses - более навороченная библиотека, с тебя, наверное, хватит и curses, она более сравнима с CRT, к тому же и стандартная.

static_lab ★★★★★
()

> Вот сколько способов получить число 4!

Багрепорт к программе: 6-2 еще подходит.

И да, вопрос. Зачем тебе их считать, если они априори 4?

anonymous
()
Ответ на: комментарий от static_lab

Кстати, как работать с модулями?

uju ★★
() автор топика
Ответ на: комментарий от uju

> Как будет настроение, тогда и изучаю.

Нечасто оно у тебя появляется. А то от hello, world (http://www.linux.org.ru/forum/development/5714835) до вывода элементов массива три недели прошло. Глядишь, к пятому курсу и блокнот напишешь.

anonymous
()
Ответ на: комментарий от uju

Метод eval служит для вычисления содержимого строки как выражения на Ruby и возвращает результат вычисления.

geekless ★★
()
Ответ на: комментарий от uju

tl;dr — eval(«строка») вычислит строковое выражение (параметр) как код на руби.

Т.е. после

x = eval("2+2")

x будет равен 4.

Deleted
()
Ответ на: комментарий от uju

> Английский знаю плохо.

Вот с него и надо было начать.

anonymous
()

смотри алгоритмы распараллеливание вычислений с 2 стэками

guilder
()
Ответ на: комментарий от uju

Приведу такой пример

a = ['4*1', '2*2', '5-1', '40/10', '401-397']
puts a
puts "Вот сколько способов получить число 4!"
b = []
a.each do |element|
	b << eval(element)
end
puts b
Deleted
()
Ответ на: комментарий от uju

Ну какой тут алгоритм? Запихиваешь строки в массив, выводишь его. Затем для каждого элемента массива вычисляешь строку как выражение, результат пихаешь в другой массив. Выводишь его.

eliriand ★★
()
Ответ на: комментарий от uju

Там всё понятно :)

1. Задать массив строк

2. Каждый элемент массива прогнать через eval() и добавить в новый массив b.

Конструкция вида

x.each do |blahblah|
    # тут разный код
end

выполняет код между do-end для каждого элемента в x, если тот поддерживает метод each, конечно же. Массив поддерживает. blahblah на каждой итерации будет значением какого-то элемента массива.

Deleted
()
Ответ на: комментарий от eliriand

Спасибо, остался 2-ой вопрос.

uju ★★
() автор топика
Ответ на: комментарий от geekless

Так тебе сейчас придётся ещё и #{} в строках объяснить… готовься (^ ^)

Deleted
()
Ответ на: комментарий от uju

(n)curses. Но освой пока язык, чем бросаться на библиотеки. И еще одно: разве так трудно взять один из сотен мануалов по руби, или хотя бы книгу в wikibooks, или любую другую, и просто прочитать. Сэкономишь время себе.

chinarulezzz ★★
()

Ничего не понимаю

Только в свободное время, это ладно.

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

uGin
()
Ответ на: комментарий от chinarulezzz

А по моему мануалы по руби читать рано, видно, что у товарища нет вообще никакого представления как все работает и устроено => нужно читать математику и про устройство эвм.

nanonymous
()
Ответ на: комментарий от nanonymous

возможно. И, как мне кажется,товарищ из тех, кому легче спросить, чем сесть и прочитать, что невероятно бесит :)

chinarulezzz ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.