Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача на сложный цикл 
:(
    Опции темы
bilbobagginz
Дата 15.6.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



Цитата(source777 @  12.6.2010,  20:05 Найти цитируемый пост)
Что уж говорить о не учебных задачах, для которых правильное решение - это недостижимая абстракция

срочно рекомендую испробовать методологии agile (scrum, kanban)
и ессно надо сработанный коллектив, и тогда - невозможное становится более возможным ;-)



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
source777
Дата 19.6.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



bilbobagginz, по-моему ты невнимательно прочитал мой ответ. Правильность - недостижима даже теоретически(если речь идёт не об абстрактных задачах, типа математических), никакая методология тут не поможет. 
Да и вообще программы на императивных языках неверифицируемы по своей природе, поэтому в лучшем случае возможна только формальная верификация на основе спецификации, не имеющая никакого отношения к правильности, т.к. в самой спецификации в 99.9% случаев полно разнокалиберных ошибок. Что мы видим даже в этой теме: спецификация всего 6 строчек и то с ошибками, что уж говорить о спецификациях, к примеру, на 60 листов.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
bilbobagginz
Дата 20.6.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



вообщето данная задача плохо сформулирована не из-за того, что ея низзя сформулировать корректно.
я надеюсь в этом ни у кого сомнения нет.

понимаю, что жизненные задачи сложны, НО не все их аспекты интересны.
инженер должен в кооперации с клиентом прийти к общему знаменателю наиболее важных клиенту свойств ПО, которые можно формально или полуформально изложить, т.е. написать под них ПО, по крайней мере это так как у нас делают (ну или пытаются).
Да, source777, программ без багов не существует (по теории).
но на практике нужен какой-то идеал... ;-)
и если классифицировать свойства, то аджильной методологией наиболее важные с т.з. клиента свойства будут реализованы наиболее корректно.





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
source777
Дата 20.6.2010, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(bilbobagginz @  20.6.2010,  20:48 Найти цитируемый пост)
вообщето данная задача плохо сформулирована не из-за того, что ея низзя сформулировать корректно.
я надеюсь в этом ни у кого сомнения нет.

Конечно, учебные задачи возможно сформулировать без ошибок, однако на практике даже такое встречается крайне редко, несмотря на сравнительно лёгкую достижимость: где-то в 10000-100000 раз проще, чем для реальной задачи. 


Цитата(bilbobagginz @  20.6.2010,  20:48 Найти цитируемый пост)
понимаю, что жизненные задачи сложны, НО не все их аспекты интересны.

С позиции корректности - да, а с позиции правильности - все аспекты интересны и одинаково важны. В этом и заключается недостижимость правильности.


Цитата(bilbobagginz @  20.6.2010,  20:48 Найти цитируемый пост)
и если классифицировать свойства, то аджильной методологией наиболее важные с т.з. клиента свойства будут реализованы наиболее корректно.

Я прекрасно знаком с Agile и даже практикую его, но повторюсь ещё раз, к правильности эти методологии никакого отношения не имеют. Спринты, приоритеты и даже митинги - всё это противоречит критерию правильности, т.к. правильность - понятие неделимое, безотносительное и объективное.

P.S. Предлагаю закончить оффтопик, думаю мы друг друга поняли.




--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
bilbobagginz
Дата 21.6.2010, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



Цитата(source777 @  20.6.2010,  22:51 Найти цитируемый пост)
P.S. Предлагаю закончить оффтопик, думаю мы друг друга поняли.

 smile 


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
mw17
Дата 30.4.2012, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.4.2012

Репутация: нет
Всего: нет



Цитата(Zann @ 6.12.2009,  16:00)
Привет.
В продолжении изучения Ruby столкнулся с задачей у Криса Пайна:
Цитата

Високосные годы. Напишите программу, которая будет спрашивать начальный год и
конечный год, а затем выдавать с помощью puts все високосные годы между ними (и
включая их, если они также високосные). Високосные годы — это годы, нацело
делящиеся на 4 (как 1984 и 2004). Однако, годы, нацело делящиеся на 100, — не
високосные (как 1800 и 1900) если только они не делятся нацело на 400 (как 1600 и
2000, которые действительно были високосными). 

Даже не могу представить как это сделать. Либо это сложная задача, либо методов не хватает, но думаю, что рано он такую задачу дал.
Приблизительно то, что думаю я:
Код

puts "Enter the begin year"
by = gets.chomp
puts "Enter the final year"
fy = gets.chomp
fy1 = fy + 1
# ny = метод постоянно уменьшающий fy1 на 1
while ny != (by- 1)
# уменьшать fy
  if #если делится
  else # если не делится
  end
# выводить
end

Если кто-то видел книгу Пайна, может еще что-то посоветуете? Или начинать программировать с руби сложно? Или продолжить дальше читать или про алгоритмы что-то посмотреть? Подскажите.

Тоже читаю сейчас эту книгу, мучал эту задачу дня два. Решение делал исходя из изложеного материала в предыдущих главах. Вот что вышло:
Код

   puts "Enter the begin year"
f = gets.chomp.to_i
puts "Enter the final year"
l = gets.chomp.to_i
if (f and l).to_i % 4 == 0
puts f
puts l
end
while
l -= 1
    if l >= f and l % 4 == 0
    puts l
    end
end

PM   Вверх
mw17
Дата 30.4.2012, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.4.2012

Репутация: нет
Всего: нет



У меня вопрос другого характера по поводу этой книги. Там на 48 странице есть одно задание где нужно написать: "авайте напишем программу, которая просит нас ввести сколько угодно слов (по 
одному слову в строке до тех пор, пока мы не нажмём  Enter  на пустой строке) и 
которая затем повторяет нам эти слова в алфавитном порядке."

Я ее написал так:
Код

puts 'Введите сколько угодно слов :)'
mass = []
words = nil
while words != ''
words = gets.chomp
mass.push words
end
puts mass.sort

Но как я уже выше написал, на 48 странице просят еще:
"Попробуйте   написать   указанную   программу  без  использования   метода  sort. "

Ума не приложу, как без sort отсортировать  smile 

PM   Вверх
k0rvin
Дата 1.5.2012, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(mw17 @ 30.4.2012,  14:15)
Ума не приложу, как без sort отсортировать  smile

Написать свой метод sort, очевидно же.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
napcep
Дата 14.2.2013, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.2.2013

Репутация: нет
Всего: нет



Тоже читаю сейчас эту книгу, мучал эту задачу дня два. Решение делал исходя из изложеного материала в предыдущих главах. Вот что вышло:
Код

   puts "Enter the begin year"
f = gets.chomp.to_i
puts "Enter the final year"
l = gets.chomp.to_i
if (f and l).to_i % 4 == 0
puts f
puts l
end
while
l -= 1
    if l >= f and l % 4 == 0
    puts l
    end
end

mw17, в твоём алгоритме встречаются не високосные года, такие как 1800. В книге об этом сказано - «Однако,  годы,  нацело делящиеся на 100,  — не високосные (как 1800 и 1900) если только они не делятся нацело на 400...»

Код

time1 = gets.chomp.to_i
time2 = gets.chomp.to_i
puts (time1..time2).to_a.find_all{ |elem| elem % 4 == 0 and elem % 100 != 0}

Вот ещё один вариант кому интересно.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1389 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.