TRIES = 3 RHONDA = { # A100975 16 => [1000,1134,6776,15912,19624,20043,20355,23946, 26296,29070,31906,32292,34236,34521,36465,39066, 50055,50986,52341,54340,58088,59541,75867,85870, 87150,88182,93058,95944,99674,101460,109650, 109810,119480,124500], # A100974 15 => [2392,2472,11468,15873,17424,18126,19152,20079, 24388,30758,31150,33004,33550,37925,39483,42550, 44714,58870,59605,66950,70182,71485,71709,85557, 85848,86241,86591,92150,110334,112671,113300, 116270,120414], # A100972 14 => [11475,18655,20565,29631,31725,45387,58404,58667, 59950,63945,67525,68904,91245,99603,125543,135196, 141141,148645,149575,168270,175577,204611,207230, 237540,240006,240787,275429,287950,321867,338709, 358984], # A100971 12 => [560,800,3993,4425,4602,4888,7315,8296,9315,11849, 12028,13034,14828,15052,16264,18511,18906,25619, 25875,27176,32742,37264,37523,46035,50765,52338, 58261,58504,59166,62002,66176,66752,66928,67195, 68502], # A099542 10 => [1568,2835,4752,5265,5439,5664,5824,5832,8526, 12985,15625,15698,19435,25284,25662,33475,34935, 35581,45951,47265,47594,52374,53176,53742,54479, 55272,56356,56718,95232,118465,133857,148653, 154462,161785], # A100973 9 => [15540,21054,25331,44360,44660,44733,47652,50560, 54944,76857,77142,83334,83694,96448,97944,106575, 108273,117624,125952,138966,141204,144236,153318, 158417,159424,188529,188598,189350,192000,192126, 196652], # A100970 8 => [1836,6318,6622,10530,14500,14739,17655,18550, 25398,25956,30562,39215,39325,50875,51429,52887, 55611,56420,58548,59731,60604,72358,74620,76581, 78780,81370,84180,85949,103350,103788,108750, 112914,118233], # A100969 6 => [855,1029,3813,5577,7040,7304,15104,19136,35350, 36992,41031,42009,60368,65536,67821,76880,84525, 90601,122831,131175,154570,162565,184009,184585, 196504,217021,219830,222200,252161,256041,268677, 353115,355737] } RHONDA.each do |base, members| describe Integer, "#rhonda?(#{base})" do it "returns true for a Rhonda number in base #{base}" do members.shuffle.first(TRIES).each{|_| _.rhonda?(base).should be_true} end it "returns false for a non-Rhonda number in base #{base}" do ((1..members.max).to_a - members).shuffle.first(TRIES). each{|_| _.rhonda?(base).should be_false} end end end describe Integer, "#rhonda?" do it "returns true for a Rhonda number in base 10" do RHONDA[10].shuffle.first(TRIES).each{|_| _.should be_rhonda} end it "returns false for a non-Rhonda number in base 10" do ((1..RHONDA[10].max).to_a - RHONDA[10]).shuffle.first(TRIES). each{|_| _.should_not be_rhonda} end end