Показаны сообщения с ярлыком интересно. Показать все сообщения
Показаны сообщения с ярлыком интересно. Показать все сообщения

19 мая 2011 г.

Tom Lehrer — Who's Next

Случайно услышал отличную песню, зацепившую своим смыслом. Несмотря на то, что она — на английском, её стоит прослушать. В какой-то мере — асимметричный ответ атомному вооружению.



Tom Lehrer "Who's Next":

First we got the bomb, and that was good,
'Cause we love peace and motherhood.
Then Russia got the bomb, but that's okay,
'Cause the balance of power's maintained that way.
Who's next?

France got the bomb, but don't you grieve,
'Cause they're on our side (I believe).
China got the bomb, but have no fears,
They can't wipe us out for at least five years.
Who's next?

Then Indonesia claimed that they
Were gonna get one any day.
South Africa wants two, that's right:
One for the black and one for the white.
Who's next?

Egypt's gonna get one too,
Just to use on you know who.
So Israel's getting tense.
Wants one in self defense.
"The Lord's our shepherd," says the psalm,
But just in case, we better get a bomb.
Who's next?

Luxembourg is next to go,
And (who knows?) maybe Monaco.
We'll try to stay serene and calm
When Alabama gets the bomb.
Who's next?
Who's next?
Who's next?
Who's next? 

29 мар. 2010 г.

Наивные пионеры

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


  1. sourceArrayEuro = [1510152025]
  2. euro_to_rub = 41
  3. resultArrayRub = sourceArrayEuro.map { |elem| elem * euro_to_rub }
  4. printf('ArrayEuro = [ ')
  5. sourceArrayEuro.each { |elem| printf('EURO %d; ', elem) }
  6. puts ']'
  7. puts 'Euro_to_rub = ' + euro_to_rub.to_s
  8. printf('ArrayRub = [ ')
  9. resultArrayRub.each { |elem| printf('%d RUB; ', elem) }
  10. puts ']'

Особенно меня порадовала camel-like нотация (которой я, кстати, не придерживаюсь для именования переменных, printf (привет, noname-c++-программист), использование итераторов в качестве циклов, а не блоков.

В общем, нехорошо так палиться, ой нехорошо.

p.s. правильное решение - на порядок проще:


  1. sourceArrayEuro = [1510152025]
  2. euro_to_rub = 40 # 41 - это уже мечты
  3. resultArrayRub = sourceArrayEuro.map { |elem| elem*euro_to_rub}
  4. puts "Значения в рублях: #{resultArrayRub}"