Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Ruby
Регистрация

Восстановить пароль
Повторная активизация e-mail

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 31.01.2013, 17:15   #1
Rigby
Новичок
 
Регистрация: 31.01.2013
Сообщений: 1
Репутация: 10
По умолчанию Ruby, задачки для начинающих

Добрый день. Решила несколько задачек, вроде бы всё (более-менее) работает, но хотелось бы, чтобы специалисты дали комментарии относительно правильности и оптимальности - как можно было бы всё это сделать поизящнее? Заранее спасибо.

Код:

#1. Дана строка слов, разделённых пробелами. Вывести длиннейшее слово.

sentence = "Дана строка слов,    разделёных! пробелами. Вывести все   длиннейшие? слова."
array = sentence.scan(/[a-zA-zА-Яа-яё]+/)
maximum = array.max_by{|elem| elem.size}
p array.find_all{|e| e.size==maximum.size}

#=> ["разделёных", "длиннейшие"]

Код:

#2. Дана строка, содержащая кириллицу, латиницу и цифры. Вывести все слова, длина которых равна средней.

sentence = "Дана stroka, содержащая 15558.98 кириллицу, латиницу и цифры. Vyvesty все слова, qwqwqw длина которых равна средней."
array = sentence.scan(/[a-zA-ZА-Яа-яё]+/)
size = array.size
result = 0.0
array.each do |elem|
	result = result + elem.size
end
medium = (result/size).round

p array.find_all {|e| e.size==medium}

#=> ["stroka", "qwqwqw"]

Код:

#3. Найти в строке первое целиком кириллическое слово.

sentence = "Attention 58999777 На9йти three вt строке первое целиком кириллическое слово."
array = sentence.scan(/\b[А-Яа-яё]+\b/)
p array[0]

#=> "строке"

Код:

#5. Найти в тексте время в формате «часы:минуты:секунды».

sentence = "Найти 1:45:17 в 22:am:08 тексте 56:10:00 время 15:48:00 в формате 11-03-15 «часы:минуты:секунды»."
p array = sentence.scan(/(\b([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\b)/)
# => [["1:45:17", "1"], ["15:48:00", "15"]]

И вот по последнему вопрос: почему я в результате получаю двумерный массив, и как избавиться от "вторых" значений?
Большое спасибо.


UPD: разобралась с последним. В качестве "вторых" элементов массива выступает переменная, куда заносится результат совпадения с круглыми "сохраняющими" скобками. Чтобы получить правильный ответ, нужно использовать "несохраняющие" круглые скобки: вместо (...) нужны (?:...)
таким образом:
Код:

#5. Найти в тексте время в формате «часы:минуты:секунды».

sentence = "Найти 1:45:17 в 22:am:08 тексте 56:10:00 время 15:48:00 в формате 11-03-15 «часы:минуты:секунды»."
p array = sentence.scan(/\b(?:[01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\b/)
# => ["1:45:17", "15:48:00"]


Последний раз редактировалось Rigby; 01.02.2013 в 13:09.
Rigby вне форума   Ответить с цитированием
Старый 20.04.2017, 14:23   #2
Guitarfreak
 
Регистрация: 03.04.2017
Сообщений: 5
Репутация: 10
По умолчанию

Было интересно почитать. Жаль что никто так ничего и не ответил.
Guitarfreak вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ для начинающих Haruko_ Помощь студентам 0 23.10.2012 21:41
Pascal (задачки для начинающих) Pontiac228 Помощь студентам 11 12.05.2011 07:25
Круглый стол: Ruby on Rails для начинающих айтишников BelOlga Свободное общение 0 17.06.2010 21:57
С++ для начинающих Maxim1 Общие вопросы C/C++ 10 31.05.2010 00:22
Ruby, Ruby on Rails разработчик, Спб Ludmila.K Работа на постоянной основе 0 14.07.2009 12:29




09:36.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru