5 WTFs in 6 LOC

 

dot wingrove

@notthepoint

(1..100).each do |num|
    print "Fizz" if num % 3 == 0
    print "Buzz" if num % 5 == 0

    print num unless (num % 5 == 0 || num % 3 == 0)

    print "\n"
end



a=b=c=(1..100).each do |num|
  print num, ?\r,
    ("Fizz" unless (a = !a)..(a = !a)),
    ("Buzz" unless (b = !b)...!((c = !c)..(c = !c))),
    ?\n
end

<= assignment wut?


a = (1..2).each do |num|
  puts a.inspect
end

nil
nil

N.B. !nil == true



a=b=c=nil

(1..100).each do |num|
  print num, ?\r,
    ("Fizz" unless (a = !a)..(a = !a)),
    ("Buzz" unless (b = !b)...!((c = !c) .. (c = !c))),
    ?\n
end

<=      \ruh \roh



> ?a
=> "a"
print "I love\n", "Perl", "\r", "Ruby", "\n"
print "I hate\n", "Javascript", "\r",  nil  , "\n"


I love
Ruby

I hate 
Javascript



a=b=c=(1..100).each do |num|
  print num, ?\r,
    ("Fizz" unless (a = !a)..(a = !a)),
    ("Buzz" unless (b = !b)...!((c = !c)..(c = !c))),
    ?\n
end
arr = ['one', 'START', 'two', 'STOP', 'three']

arr.each do |w|
    puts w if ((w == 'START')..(w == 'STOP'))
end


START
two
STOP
arr = ['one', 'START', 'two', 'STOP', 'three']

arr.each do |w|
    puts w if ((w == 'START')..(w == 'STOP'))
end


START
two
STOP
arr = ['one', 'START', 'two', 'STOP', 'three']

arr.each do |w|
    puts w if ((w == 'START')..(w == 'STOP'))
end


START
two
STOP
arr = ['one', 'START', 'two', 'STOP', 'three']

arr.each do |w|
    puts w if ((w == 'START')..(w == 'STOP'))
end


START
two
STOP
arr = ['one', 'START', 'two', 'STOP', 'three']

arr.each do |w|
    puts w if ((w == 'START')..(w == 'STOP'))
end


START
two
STOP
arr = ['one', 'TOGGLE', 'two', 'TOGGLE', 'three']

arr.each do |w| 
    puts w if (w == 'TOGGLE' ... w == 'TOGGLE')
end


TOGGLE
two
TOGGLE
arr = ['one', 'TOGGLE', 'two', 'TOGGLE', 'three']

arr.each do |w| 
    puts w if (w == 'TOGGLE' ... w == 'TOGGLE')
end


TOGGLE
two
TOGGLE
arr = ['one', 'TOGGLE', 'two', 'TOGGLE', 'three']

arr.each do |w| 
    puts w if (w == 'TOGGLE' ... w == 'TOGGLE')
end


TOGGLE
two
TOGGLE
arr = ['one', 'TOGGLE', 'two', 'TOGGLE', 'three']

arr.each do |w| 
    puts w if (w == 'TOGGLE' ... w == 'TOGGLE')
end


TOGGLE
two
TOGGLE
arr = ['one', 'TOGGLE', 'two', 'TOGGLE', 'three']

arr.each do |w| 
    puts w if (w == 'TOGGLE' ... w == 'TOGGLE')
end


TOGGLE
two
TOGGLE
a = nil

(1..9).each do |n|
  print "#{n} ",
        "#{a.inspect} ",
        ("Fizz" unless (a = !a) .. (a = !a)),
        "\n"
end

1 nil
2 false
3 true Fizz
4 false
5 false
6 true Fizz
7 false
8 false
9 true Fizz
a = nil

(1..9).each do |n|
  print "#{n} ",
        "#{a.inspect} ",
        ("Fizz" unless (a = !a) .. (a = !a)),
        "\n"
end

1 nil
2 false
3 true Fizz
4 false
5 false
6 true Fizz
7 false
8 false
9 true Fizz
a = nil

(1..9).each do |n|
  print "#{n} ",
        "#{a.inspect} ",
        ("Fizz" unless (a = !a) .. (a = !a)),
        "\n"
end

1 nil
2 false
3 true Fizz
4 false
5 false
6 true Fizz
7 false
8 false
9 true Fizz



a=b=c=(1..100).each do |num|
  print num, ?\r,
    ("Fizz" unless (a = !a) .. (a = !a)),
    ("Buzz" unless (b = !b) ... !((c = !c) .. (c = !c))),
    ?\n
end
num b flipflop1 state c flipflop2 state buzz ?
1 nil open nil -
2 true open nil => false open
3 true open false => true close, rtn true
4 true close, rtn true true => false close
5 true => false close false - buzz!
6 false => true open false -
7 true open false => false open
8 true open false => true close, rtn true
9 true close, rtn true true => false
close
10 true => false close true => false close buzz!
("Buzz" unless (b = !b) ... !((c = !c) .. (c = !c)))

@notthepoint

https://bugs.ruby-lang.org/issues/5400

https://juliansimioni.com/blog/deconstructing-fizz-buzz-with-flip-flops-in-ruby/

notthepoint.io

5 WTFs in 6 LOC

By dorothyjane

5 WTFs in 6 LOC

  • 1,576