Here is Fizz buzz
Write a program that prints the integers from 1 to 100. But for multiples of 3 print "Fizz" instead of the number and for the multiples of 5 print "Buzz". For numbers which are multiples of both 3 and 5 print "FizzBuzz".
I found the python version is much shorter, so I decided to write a short one, I have wrote several version
Table[If[# != {}, Row@#, n] &@({Fizz}[[Sign[n~Mod~3] + 1 ;;]]~Join~{Buzz}[[Sign[n~Mod~5] + 1 ;;]]), {n, 100}]
StringJoin@{If[#~Mod~3 == 0, "Fizz", ""], If[#~Mod~5 == 0, "Buzz", ""]} /. "" -> # & /@ Range@100
d = Divisible; Range@100 /. {_?(#~d~15 &) -> FizzBuzz, _?(#~d~3 &) -> Fizz, _?(#~d~5 &) -> Buzz}
Can you show a more shorter one?
Answer
67 63 56 55 (47?) characters
Better:
Row@Pick[{Fizz,Buzz},#~Mod~{3,5},0]/._@{}->#&~Array~100
In the rule-bending spirit of Code Golf, 47 characters:
Pick[Fizz^Buzz,#~Mod~{3,5},0]/. 1->#&~Array~100
Comments
Post a Comment