An interesting article on Matthieu Ricard, a researcher turned monk, suggests that meditation might act as a brain training exercise, helping the human mind to achieve superior levels of happiness and decreased propensity for negativity. One hopes more research is done in this area so that the exact mechanism by which meditation acts to bring peace of mind is understood, thereby helping the whole of mankind lead a more content life.

## Friday, February 8, 2013

## Thursday, February 7, 2013

### Converting twips to pixels and vice-versa

Here is a Ruby program to convert between twips and pixels:

#!/bin/ruby

# As per PostScript definition

TWIPS_PER_INCH = 1440

def twips_to_pixels(twips, dpi, round = true)

raise "Invalid DPI" if (dpi <= 0)

raise "Invalid twips" if (twips < 0)

num_pixels = ((twips / TWIPS_PER_INCH.to_f) * dpi)

return round ? num_pixels.round : num_pixels.floor

end

def pixels_to_twips(pixels, dpi, round = true)

raise "Invalid DPI" if (dpi <= 0)

raise "Invalid number of pixels" if (pixels < 0)

twips = ((pixels / dpi.to_f) * TWIPS_PER_INCH)

return round ? twips.round : twips.floor

end

def numeric?(str)

Float(str) != nil rescue false

end

def print_usage_and_exit

puts "Usage: #{$0} [-t twips | -p pixels] [-d dpi]"

exit(1)

end

if __FILE__ == $0

print_usage_and_exit if ARGV.length != 4

dpi = nil

twips = nil

pixels = nil

[0, 2].each do |option_index|

option = ARGV[option_index]

option_val = ARGV[option_index + 1]

print_usage_and_exit unless (numeric?(option_val))

case option

when "-d" then dpi = option_val.to_f

when "-t" then twips = option_val.to_f

when "-p" then pixels = option_val.to_f

else print_usage_and_exit

end

end

print_usage_and_exit if ((pixels.nil? && twips.nil?) || dpi.nil?)

res = twips.nil? ? pixels_to_twips(pixels, dpi) : twips_to_pixels(twips, dpi)

puts res

end

# As per PostScript definition

TWIPS_PER_INCH = 1440

def twips_to_pixels(twips, dpi, round = true)

raise "Invalid DPI" if (dpi <= 0)

raise "Invalid twips" if (twips < 0)

num_pixels = ((twips / TWIPS_PER_INCH.to_f) * dpi)

return round ? num_pixels.round : num_pixels.floor

end

def pixels_to_twips(pixels, dpi, round = true)

raise "Invalid DPI" if (dpi <= 0)

raise "Invalid number of pixels" if (pixels < 0)

twips = ((pixels / dpi.to_f) * TWIPS_PER_INCH)

return round ? twips.round : twips.floor

end

def numeric?(str)

Float(str) != nil rescue false

end

def print_usage_and_exit

puts "Usage: #{$0} [-t twips | -p pixels] [-d dpi]"

exit(1)

end

if __FILE__ == $0

print_usage_and_exit if ARGV.length != 4

dpi = nil

twips = nil

pixels = nil

[0, 2].each do |option_index|

option = ARGV[option_index]

option_val = ARGV[option_index + 1]

print_usage_and_exit unless (numeric?(option_val))

case option

when "-d" then dpi = option_val.to_f

when "-t" then twips = option_val.to_f

when "-p" then pixels = option_val.to_f

else print_usage_and_exit

end

end

print_usage_and_exit if ((pixels.nil? && twips.nil?) || dpi.nil?)

res = twips.nil? ? pixels_to_twips(pixels, dpi) : twips_to_pixels(twips, dpi)

puts res

end

## Sunday, February 3, 2013

### 1/-1 matrix - problem #29 from Problem solving strategies

Here is the solution to one of the problems mentioned in the earlier blog post:

Problem 29:
Suppose contrary to the claim a1 + b1 + … + a25 + b25 = 0. Then:

(a1 + a2 + … + a25) =
- (b1 + … + b25) ⋯ ①

Now note that ai= -1,if number of elements having value -1 in row i is
even, and 1 otherwise.

Thus (a1 + a2 + … + a25) =
-x + y, where x is the number of rows
having odd number of -1s and y is the number of rows having even number of -1s ⋯ ②

Similarly, (b1 + …
+ b25) = -m + n, where
m is
the number of columns
having
odd number of -1s and n
is
the number of columns
having
even number of -1s
⋯ ③

Combining ①, ② and ③ results in the
equation (y – x ) = (m - n) ⋯ ④

But (y + x) = 25, the total number of
rows in the matrix, and (m + n) = 25, the total number of columns in the
matrix. Thus (y + x) = (m + n) ⋯ ⑤

Combining ④ and ⑤ results in the equality
y = m, which implies that the number of rows with even number of -1s equals the
number of columns with odd number of -1s.

Define z = number of
-1s in the matrix.

Suppose y is odd. Then, x must be even
and by original definition of x and y, z must be even (even number of rows with
odd number of -1s plus odd number of rows with even number of -1s, resulting in
even + even). If y is even, z must be odd. Thus parity(z) ≠ parity(y) ⋯⑥

On the other hand, by definition of m and
n, it can be shown that if m is odd, then z must be odd and if m is even then z
must
be even.
Thus parity(z) = parity(m). But this contradicts ⑥ since y = m as per an earlier equation.
Thus the assumption a1 + b1 + …
+ a25 + b25 = 0 is wrong.

Subscribe to:
Posts (Atom)