 # #113 One-liners

Hi,

this is my solution. I found the first one-liner hard, and I’m not
satisfied with my solution for it (it doesn’t work for negative numbers
for example). But, I think the others are not bad.

####################

# Expected: “1,999,995.99”

quiz = 1999995.99
a=quiz.to_s.split’.’;r=a.reverse.gsub(/\d{3}\B/,
‘\0,’).reverse+".#{a}"
puts r

####################

# Expected: [1, 2, ]

quiz = [1, [2, ]]
r = []; quiz.each{|e| [*e].each {|x| r << x}}; r
puts r.inspect

####################

# Expected: a shuffled array

quiz = [1, 2, 3, 4, 5]
r = quiz.sort_by{rand}
puts r.inspect

####################

# Expected: the actual class object

module GhostWheel; module Expression; class LookAhead; end; end; end
r = quiz.split(/::/).inject(Kernel){|t,k| t.const_get(k)}
puts r

####################

# “dddddddddddddddddddd”

quiz = “a” * 20 + " " + “b” * 20 + " " + “c” * 18 + " " + “d” * 20
r = quiz.gsub(/(.{1,40}) /, “\1\n”)
puts r

####################

# Expected: [“foo”, “oof”, “ofo”]

quiz = %w[foo bar baz oof foobar ofo]
\$; = //; f = quiz.split.sort; r = quiz.select{|e| e.split.sort == f}
puts r
\$; = nil

####################

# “1100100111010111011011100010”

quiz = “You are dumb”
r = quiz.gsub(/./) {|c| (c == ’ ') ? “\n” : ("%08b" % c)}
puts r

####################

# Expected: a random line from the this File

File.open(FILE, “r”) do |quiz|
a = quiz.read.split("\n"); r = a[rand(a.size)]
end
puts r

####################

# Expected: [15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8,

4, 2, 1]
quiz = 15
r = [quiz]; while ((e = r.last) != 1) do r<<((e%2==0)?e/2:3*e+1) end; r
puts r.inspect

####################

# Expected: {“one” => {“two” => {“three” => {“four” => “five”}}}}

quiz = %w[one two three four five]
r = quiz.reverse.inject{|h,v| {v=>h}}
puts r.inspect

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.