Личный кабинет

Весело и просто о Ruby

Примеры программ (боюсь слова "оригинальных" потому как сам язык - весьма оригинален)
Евгений Тюленев ( Пользователь )


Почему так?

Поигрался Python - забыл
А идея Ruby - зацепила?

Евгений Тюленев ( Пользователь )
Решение задачи С4 из ДЕМО 2012 на ruby:

#!/usr/bin/env ruby
#coding:utf-8
=begin
Алгоритм:
1.Сформировать хэш:
ключ - тема задачи
значение - количество задач
2. хэш преобразовать в массив пар(ключ значение), предварительно отсортировать пары по значению.
3.вызвать реверс массива
4.вывести первые три пары или сколько есть, если меньше.
=end
result = Hash.new
File.open("data_ege2012") do |myf|
myf.readlines[1 .. -1].sort.each do |buf|
if result[ buf ] then result [ buf ]+=1 else result[ buf ] =1 end

end

r=result.sort do
|k,d| k[1]<=>d[1]

end

r.reverse!
r[if r.size> 2 then 0..2 else 0..r.size end ].each do |d1|
puts "#{d1[0].chomp} #{d1[1]}"

end

end


Если так ученик решит, сколько баллов получит?

Не нашел метода сортировки хеша без преобразования в массив. Может плохо искал?
Денис Кириенко ( Пользователь )
Цитата (Евгений Анатольевич, 09.10.2011, 19:34) <{POST_SNAPBACK}>
Если так ученик решит, сколько баллов получит?


2 балла. Вы не учли следующую часть условия: "Если несколько задач имеют ту же частоту встречаемости, что и третья по частоте встречаемости задача, их тоже нужно вывести."

Правильно ли я понимаю, что вы считываете целиком файл в память в виде списка строк?

Евгений Тюленев ( Пользователь )
Цитата (Денис Кириенко, 10.10.2011, 00:51) <{POST_SNAPBACK}>
2 балла. Вы не учли следующую часть условия: "Если несколько задач имеют ту же частоту встречаемости, что и третья по частоте встречаемости задача, их тоже нужно вывести."

Тогда выводить вот так
r.size.times do
|i|
puts "#{r[i][0].chomp} #{r[i][1]}" if r[i][1]<3 || r[i][1] == r[2][1]

end

действительно не дочитал.
Цитата
Правильно ли я понимаю, что вы считываете целиком файл в память в виде списка строк?

Да, но только для демонстрации, там все равно each так что легко можно и по строчкам. Например, так:
n = myf.readline.to_i.times do
buf = myf.readline
if result[ buf ] then result [ buf ]+=1 else result[ buf ] =1 end

end
Андрей Сидоров ( Пользователь )
Если так ученик решит, сколько баллов получит?

Тайна сия велика есмь, ибо проверяющих, способных понять решение на Руби, ничтожно мало.
Евгений Тюленев ( Пользователь )
Цитата (Андрей Сидоров, 10.10.2011, 22:17) <{POST_SNAPBACK}>
Если так ученик решит, сколько баллов получит?

Тайна сия велика есмь, ибо проверяющих, способных понять решение на Руби, ничтожно мало.

А они это хотят понимать? Проверяющие -это же мы, или наши друзья-знакомые.
И там фишки разные, типа, вот за это ставим, за это нет, а шаг влево вправо прыжок вверх = попытка.
И все равно: "за Державу обидно!"

До коле мы на идеях прошлых времен топтаться будем?

Люди далеко впереди - догонять надо, и быстро.

Linux, Ruby - это быстро. Поэтому я с ними!

Правда мозг кипит!
Прав классик:
"Нет ни чего более удивительного, чем следить за мыслью гениального человека"
Андрей Сидоров ( Пользователь )
Цитата (Евгений Анатольевич, 11.10.2011, 15:02) <{POST_SNAPBACK}>
А они это хотят понимать? Проверяющие -это же мы, или наши друзья-знакомые.

Когда я год назад был в проверяющих, основную массу среди них составляли тетушки за сорок-пятьдесят. Какой нафиг Руби!?
Станислав Михалкович ( Пользователь )
Цитата (Андрей Сидоров, 15.10.2011, 16:25) <{POST_SNAPBACK}>
Когда я год назад был в проверяющих, основную массу среди них составляли тетушки за сорок-пятьдесят. Какой нафиг Руби!?

А интересно, как ведут себя тетушки за сорок-пятьдесят, когда видят Руби?
Андрей Сидоров ( Пользователь )
Думаю, от характера зависит. Если тетушка добрая - ставит 3-4 балла, если злая - 0 или 1 балл.
Станислав Михалкович ( Пользователь )
Цитата (Андрей Сидоров, 15.10.2011, 19:34) <{POST_SNAPBACK}>
Думаю, от характера зависит. Если тетушка добрая - ставит 3-4 балла, если злая - 0 или 1 балл.

Ну, кстати, это - вывод. То есть, при нынешнем ЕГЭ решившему C4 на Руби ставят в среднем 2 балла. Не так уж плохо :)

Вообще, ведется же какая-то подготовка проверяющих. Может, обязать при обучении проверяющих устраивать им ликбез по таким языкам как Руби и Питон? Хотя бы чтобы они конструкций не пугались

footer logo © Образ–Центр, 2019. 12+