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

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

Примеры программ (боюсь слова "оригинальных" потому как сам язык - весьма оригинален)
Денис Кириенко ( Пользователь )
Это решение оценивается в 3 балла, так как неээффективно по используемой памяти.
Чтобы решение оценивалось в 4 балла, не нужно сохранять весь ответ (или его половину) в строке s.
Андрей Сидоров ( Пользователь )
Вообще-то, согласно критерям оценивания, балл снимается за сохранение входных даннных, а про выходные ничего не сказано!
Но, ладно, пусть на 4 балла будет несколько длиннее:

Код
a=Hash.new(0)
m=''
a[(c=STDIN.getc).to_i]+=1 until c=='0'
9.downto(1){|c| m=c if a[c].odd?}
1.upto(9){|c| print c.to_s*(a[c]/2)}
print m
9.downto(1){|c| print c.to_s*(a[c]/2)}
Илья Ермаков ( Пользователь )
Учить программировать вот так? Преступление. Против общества.

Слов нет.
Денис Кириенко ( Пользователь )
Цитата (Андрей Сидоров, 11.06.2010, 22:01) <{POST_SNAPBACK}>
Вообще-то, согласно критерям оценивания, балл снимается за сохранение входных даннных, а про выходные ничего не сказано!
Но, ладно, пусть на 4 балла будет несколько длиннее:

Код
a=Hash.new(0)
m=''
a[(c=STDIN.getc).to_i]+=1 until c=='0'
9.downto(1){|c| m=c if a[c].odd?}
1.upto(9){|c| print c.to_s*(a[c]/2)}
print m
9.downto(1){|c| print c.to_s*(a[c]/2)}


4 балла ставится за эффективную по времени и памяти программу.
Предложенное решение также неэффективно по памяти. Из-за наличия c.to_s*(a[c]/2). Все равно 3 балла.
Андрей Сидоров ( Пользователь )
Ок, ладно, тогда еще чуть длинней :)

Код
a=Hash.new(0)
m=''
a[(c=STDIN.getc).to_i]+=1 until c=='0'
9.downto(1){|c| m=c if a[c].odd?}
1.upto(9){|c| (a[c]/2).times{print c}}
print m
9.downto(1){|c| (a[c]/2).times{print c}}
Денис Кириенко ( Пользователь )
Цитата (Илья Ермаков, 11.06.2010, 22:34) <{POST_SNAPBACK}>
Учить программировать вот так? Преступление. Против общества.

Слов нет.


Ну пока еще идея так учить программированию не проверена на практике ни разу. По крайней мере, подобных решений задачи C4 на ЕГЭ не встречалось.
Станислав Михалкович ( Пользователь )
Цитата (Денис Кириенко, 11.06.2010, 23:01) <{POST_SNAPBACK}>
Ну пока еще идея так учить программированию не проверена на практике ни разу. По крайней мере, подобных решений задачи C4 на ЕГЭ не встречалось.

Ну, это - функциональный стиль.

Когда я был на конференции "Современные ИТ и ИТ образование" во ВМИКе в 2009 г., в перерыве я услышал мельком разговор двух преподавательниц лицея "Мы учим на Java, но сейчас этого решительно недостаточно, ... поэтому мы собираемся давать ещё Хаскель...". :bomb: - я до сих пор думаю над этой фразой.

А скажите - есть те, кто решает ЕГЭ на каком-нибудь функциональном языке?
Денис Кириенко ( Пользователь )
Ни одного решения задачи C4 на функциональных языках (или на универсальных языках в функциональном стиле) я не видел.

Также мне неизвестно о каком-либо опыте преподавания функционального программирования в школах.

Андрей Сидоров ( Пользователь )
Еще задачка С4:

На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения. В первой строке сообщается количество сотрудников N, каждая из следующих N строк имеет следующий формат:

<Фамилия> <Инициалы> <телефон>

где <Фамилия> - строка, состоящая не более чем из 20 символов, <Инициалы> - строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), <телефон> - семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «-». <Фамилия> и <Инициалы>, а также <Инициалы> и <телефон> разделены одним пробелом. Пример входной строки:

Иванов П.С. 555-66-77

Сотрудники одного подразделения имеют один и тот же номер телефона. Номера телефонов в учреждении отличаются только двумя последними цифрами. Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, сколько в среднем сотрудников работает в одном подразделении данного учреждения.

Решение:

m={}
p gets.to_i.times{m[gets[-3..-2]]=1}.fdiv m.size

Андрей Сидоров ( Пользователь )
Узнал в другой ветке про ideone, удобно! Например, задача из последнего поста - http://ideone.com/hcD2j
И интересующимся не надо себе ставить ничего на комп...

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