ネタです(ブームはとっくの昔に終わりましたが…)。
3の倍数と3のつく数のときだけ、渡されたコードブロックを実行するイテレータを定義してみます。
class Range def nabeatsu self.each do |num| if (num % 3 == 0) || num.to_s.include?("3") then yield(num) end end end end
実際に使ってみます。
(1..25).nabeatsu do |num| print(num) print("\n") end
実行結果がこちら。
C# でも書いてみました。
using System; using System.Collections.Generic; using System.Linq; namespace NabeatsuSample { class Program { static void Main(string[] args) { Enumerable.Range(1, 100).Nabeatsu((num) => Console.WriteLine(num)); Console.ReadLine(); } } public static class Util { public static void Nabeatsu(this IEnumerable<int> array, Action<int> block) { foreach (var num in array) { if ((num % 3 == 0) || (num.ToString().Contains("3"))) { block(num); } } } } }
でも Ruby の方がスッキリしていて読みやすいですね。