Единая Россия - без меня меня женили

Жена у меня работает преподавателем в учреждении среднего профессионального образования (ПТУ). Пару месяцев назад принесли бланк заявления о вступлении в Единую Россию, и в ультимативном тоне потребовали заполнить и подписать. Жена отказалась наотрез. Дело даже не в партии, а в той форме, в которой это было подано. И вот сегодня она случайно обнаружила заявления написанное чужой рукой от ее имени и подписанное другим человеком. Мы в шоке. Это вот таким значит образом создается статистика о количестве членов партии?

SICP на Ruby: упражнение 1.7 и 1.8

Как и ожидалось, в упражнении нас просят улучшить программу извлечения квадратного корня, улучшив проверку на
выход из итерации. Исходная версия работает некорректно на малых и больших числах. Все тривиально.

def average(x, y)
  (x + y) / 2
end

def improve(guess, x)
  average(guess, (x / guess))
end

def sqrt_iter(guess, x, prev, eps)
  if (prev - guess).abs < eps
    guess
  else
    sqrt_iter(improve(guess, x), x, guess, eps)
  end
end

def sqrt(x, eps)
  sqrt_iter(1.0, x, x + 2 * eps, eps)
end


В 1.8 нам нужно посчитать кубичные корни. Понятно, что изменению подвергнется
только функция improve

def improve(guess, x)
  (x / guess ** 2 + 2 * guess) / 3
end

Школьная задачка

Попался вопрос на форуме
Вроде задачка алгоритмически не сложна. Вопрос в компактности записи. У меня получилось так

def items(b)
  result = [[b]]
  (1..(b - 1)).each do |i|
    items(b - i).each do |j| 
      result.push(([i] + j).sort) 
    end
  end
  return result.sort
end
p items(5).uniq.reverse

[[5], [2, 3], [1, 4], [1, 2, 2], [1, 1, 3], [1, 1, 1, 2], [1, 1, 1, 1, 1]]


Душевно. Мне все больше нравится ruby тем, что можно просто делать простые вещи.
Причем я уверен, что то же самое можно сделать еще компактнее. Просто я еще не зняю всех фишек.

SICP на Ruby

Собрался убивать двух зайцев одним махом.
1. Изучить функциональное программирование по книжке SICP. (Кто не знает, это фундаментальный курс программирования в MIT Structure and Interpretation of Computer Programs)
2. Изучить какой-нибудь динамический мультипарадигменный язычок для web. Колебался между ruby (ибо rails) и python (ибо django)

Итак буду читать sicp, а упражнение оттуда делать на ruby. (в sicp используется scheme)

Вобщем сначала ничего интересного, вводится префиксная запись, S-выражения и прочие особенности scheme, повторять которые на ruby никакого толку. А вот пункт 1.1.7 "Вычисление квадратного корня методом Ньютона" уже поинтереснее, причем мы ввели только арифметику, ветвление, сравнение и определение функции. Вот почти дословный перевод на ruby:

def average(x, y)
  (x + y) / 2
end

def good_enough(guess, x)
  ((guess ** 2 - x).abs < 0.001)
end

def improve(guess, x)
  average(guess, (x / guess))
end

def sqrt_iter(guess, x)
  if good_enough(guess, x)
    guess
  else
    sqrt_iter(improve(guess, x), x)
  end
end

def sqrt(x)
  sqrt_iter(1.0, x)
end

Итак рекурсия. А как еще сделаешь итерацию без циклов?
Нда, Ньютон, да не тот. Начальное приближение всегда 1.0 и проверка на завершение не блещет.
Ну да ладно не за то боремся, тем более авторы обещают потом исправиться. Посмотрим.

Что касаемо ruby, оказывается числовые константы это объекты с методами: -2.abs дает 2. А я пятнадцать минут функцию искал. Ну в общем даже прикольно. У чисел еще замечен такой забавный метод:

3.times do puts "обалдеть" end

обалдеть
обалдеть
обалдеть

так дело пойдет и никакие циклы не понадобятся.

Вобщем продолжение следует.

ЗЫ. Интересно а в ЖЖ есть подсветка синтаксиса? С разбега не нашел.

(no subject)

Крепитесь. Исследования показали, что вы - гном
Формула вашего успеха: pабота, работа, еще раз работа плюс индустриализация всей Мории минус балрог.
Пройти тест

(no subject)

Ну и самомнение! Вы - Локи
Ваш юмор уже давно стал черным, ваши подначки уже давно стоят у всех поперек горла, вы пользуетесь устойчивой непопулярностью в кругу своих родственников... Какая у вас, черт побери, забавная жизнь!
Пройти тест

(no subject)

Поздравляем!!! Решил(а) 11 из 12
An error has ocurred. Imposible result achieved. Please, make sure your brain is in the proper place. Вы не знаете аглийского не-бе-да!да-да-да! Учите Винни Пуха, желательно наизусть.
Пройти тест

(no subject)




Квентин Тарантино




Отношение к фильмам этого режиссёра со стороны общественности и критиков неоднозначно. Сценарии Тарантино отличаются чрезвычайно тщательной проработкой каждой сцены, а также наличием особой повествовательной интонации. Его фильмы называют эпатажными, культовыми и новаторскими одновременно. Кто-то считает их "макулатурой", а кто-то восхищается и причисляет к гениальным творениям.

Автора таких неоднозначных и неординарных фильмов можно назвать человеком, который стремится привлечь к себе внимание, предпочитает быть оригинальным вопреки социальным нормам и правилам. Выразить свою мысль любым способом, лишь бы она достигла людских душ, – вот главная цель. И именно этот энтузиазм "заражает" окружающих своей энергией и оставляет яркий след в рутинной жизни.



Пройти тест "Кто вы как режиссёр?"