Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Ruby > Задачи для начинающих ruby


Автор: Aleksandra_071 08.09.11, 21:25
Всем здравствуйте, я тут новенькая, сегодня приступила к изучению ruby, и сразу возникли проблемы. Я уверена, что подобная тема уже есть, но я ее создала, чтобы привлечь больше внимания т.к. реально нужна помощь, в кротчайшие сроки.
Не могу описать на руби решение элементарной задачи.
Написала на php & java, и все равно не могу перевести.

Задача:
Напишите скрипт Ruby, который позволит пользователю ввести несколько имён (без фамилий). Когда пользователь вводит 'quit', скрипт должен вывести имена в алфавитном порядке (друг под другом) и напечатать каждое второе имя в обратном порядке.

Примерное решение:
Это класс который тупо приветствует всех.
class HelloEveryone
attr_accessor :names

# Создать объект
def initialize(names = "Guest")
@names = names
end

# Поприветствовать всех
def say_hi
if @names.respond_to?("each")

# Поскольку @names - это некий список, перебрать его элементы
@names.each do |name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end

Для вывода в алфавитном порядке есть такой метод:
a = [ "d", "a", "e", "c", "b" ]
a.sort #=> ["a", "b", "c", "d", "e"]
a.sort {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
А чтобы выводить по очереди, я имею ввиду, первое слово с буквы А, второе с буквы Я итд. Это можно сделать с помощью деления по модулю, например: если some_name%2==0, то выводим в обратном порядке, если 1, то в положенном.

Помогите пожалуйста все эти домыслы объединить в код.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     

Люди плз не проходите мимо, реально очень нужна помощь.

Автор: Мохнатый 09.09.11, 03:59
Используйте плиз тег code для оформления кода!
Для вывода в алфавитном порядке используйте метод sort
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    a = ["beta", "alpha", "gamma"] #=> ["beta", "alpha", "gamma"]
    a.sort!   #=> ["alpha", "beta", "gamma"]

Где а - это Ваш массив с именами.
Для вывода в обратном порядке используйте
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     
    a.reverse! #=> ["gamma", "beta", "alpha"]

Правда не совсем понятно что Вам надо вывести в обратном порядке - то ли массив с именами, то ли реверснуть буквы в каждом имени.

Автор: LeXuS 11.09.11, 10:23
Цитата Мохнатый @
Используйте плиз тег code для оформления кода!
Для вывода в алфавитном порядке используйте метод sort
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    a = ["beta", "alpha", "gamma"] #=> ["beta", "alpha", "gamma"]
    a.sort!   #=> ["alpha", "beta", "gamma"]

Где а - это Ваш массив с именами.
Для вывода в обратном порядке используйте
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     
    a.reverse! #=> ["gamma", "beta", "alpha"]

Правда не совсем понятно что Вам надо вывести в обратном порядке - то ли массив с именами, то ли реверснуть буквы в каждом имени.

Вроде как ясно написанно:
Цитата
напечатать каждое второе имя в обратном порядке

Автор: Мохнатый 11.09.11, 18:54
С другой стороны я написал каким методом пользоваться. Строка в Ruby это такой же массив и его легко реверснуть.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)