Hi, dev.to!
Here is my first post there. I hope there are people who like mind games. So I would like to introduce you to some interesting puzzles.
1. Choose the correct result of the code (ruby 3.0):
{ language: 'ruby’, 'position' => 'engineer' }.transform_keys({ language: 'rust’ }, &:to_sym)
{"rust"=>"ruby", :position=>"engineer"}
{ :rust => 'ruby', :position => 'engineer' }
{ "rust" => :ruby, 'position' => :engineer }
{ :rust => :ruby, :position => :engineer }
Answer
{"rust"=>"ruby", :position=>"engineer"}
2. Choose the correct result of the code (ruby 3.0):
{ e: :n, g: :i, n: :e, e: :r }.except(:e)
NoMethodError (undefined method 'except')
{:g=>:i, :n=>:e}
{:g=>:i, :n=>:e, :e => :r}
{:e => :n, :g=>:i, :n=>:e}
Answer
{:g=>:i, :n=>:e}
3. Choose the wrong way to call a lambda
->(){}::call
->(){}[]
->(){}()
->(){}::===
Answer
->(){}()
4. Choose the correct result of the code
!?q::!. |001
true
false
raise an error
1
Answer
false
5. Choose the correct way to create an array [0,1,2,3,4,5]
Array[0..5]
(0..4).take(5)
[*0..5]
String(012345).split('').map(&:to_i)
Answer
[*0..5]
6. There is a code
class Animal
@@count = 0
def self.inc
@@count += 1
end
def self.count
@@count
end
end
class Cat < Animal
@@count = 100
def self.count
@@count
end
end
Animal.inc
Cat.inc
Choose the correct result of the code
[Animal.count, Cat.count]
[1, 101]
[101, 101]
[1, 102]
[102, 102]
Answer
[102, 102]
7. There is a code
class Item
def self.count
$COUNT
end
def self.increment
$COUNT += 1
end
end
BEGIN { $COUNT = 0 }
Item.increment
Choose the correct result of the code
Item.count
0
1
101
undefined method '+' for nil:NilClass
Answer
1
Top comments (10)
This was some really good stuff. I was not able to reproduce the first one in my console:
pry(main)> { language: 'ruby', 'position' => 'engineer' }.transform_keys({ language: 'rust' }, &:to_sym)
ArgumentError: wrong number of arguments (given 1, expected 0)
Thanks for some good fun!
Hi!
What version of ruby did you use? I added a 3.0.0 version of ruby for which question in the question. Please, check it
Thanks, got it!
Well damn, I really do not know Ruby as much as I thought I did.
I believe nobody will use this on production, it is just for fun 🤪
Regardless, I was looking into competitive programming and well, I may end up using this.
It is warm sense that your post could help somebody
❤️
Nice! Maybe in the future (if you do any more of these), it'd be nice to have the documentation reference link when applicable. That way we can take a deeper dive.
Cheers! 👏👏👏
Got it!
Nice! I believe you mentioned the 4th puzzle)