func cardinal(n) { static lingua_en = frequire("Lingua::EN::Numbers") lingua_en.num2en(n) - / and|,/g } func four_is_magic(n) { var str = "" loop { str += (cardinal(n) + " is ") if (n == 4) { str += "magic." break } else { n = cardinal(n).len str += (cardinal(n) + ", ") } } str.tc } [0, 4, 6, 11, 13, 75, 337, -164, 9_876_543_209].each { |n| say four_is_magic(n) }