Skip to content

Instantly share code, notes, and snippets.

@mvw
Last active November 23, 2015 18:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mvw/f479451d39b988a8ba81 to your computer and use it in GitHub Desktop.
Save mvw/f479451d39b988a8ba81 to your computer and use it in GitHub Desktop.
def get_digits(n)
ns = n.to_s
nsl = ns.length
digits = Array.new(10, 0)
nsl.times do |k|
d = ns[k].to_i
digits[d] += 1
end
digits
end
def digits_to_s(digits)
n = digits.length
a = Array.new(10)
n.times do |k|
a[k] = k.to_s + ':' + digits[k].to_s
end
"[#{a.join(', ')}]"
end
def same(digits1, digits2)
digits1.slice(1,9) == digits2.slice(1,9)
end
def test(n, silent=false)
n_digits = get_digits(n)
if not silent
puts "n digits:"
puts digits_to_s(n_digits)
end
(1..2000).each do |k|
nk = n * k
nk_digits = get_digits(nk)
if not same(nk_digits, n_digits)
if not silent
puts "error:"
puts "n_#{k} digits:"
puts digits_to_s(nk_digits)
puts
end
return false
end
end
if not silent
puts "OK - congrats!"
puts
end
return true
end
def search
puts "searching ..">
(1..3000).each do |k|
n = ((10**(k-1))-1)/k
if test(n, true)
puts "k = #{k}:"
test(n)
end
end
puts "done."
end
n = (10**2016-1)/2017
test(n)
n2 = 4330879168471199653529666522304027717626678215677782589865742745777392810740580337808575140753572975313988739714161974880900822867042009527934170636639237765266349068860978778692074491121697704634040710264183629276743178865309657860545690775227371156344737981810307492420961455175400606323083585967951494153313122563880467734950194889562581203984408834993503681247293200519705500216543958423559982676483326115201385881333910783889129493287137288869640537029016890428757037678648765699436985708098744045041143352100476396708531831961888263317453443048938934603724556084885231702035513209181463837158943265482893027284538761368557817236899090515374621048072758770030316154179298397574707665656128194023386747509744478129060199220441749675184062364660025985275010827197921177999133824166305760069294066695539194456474664356864443482026851450844521437851883932438284971849285404937202252057167605023819835426591598094413165872672152446946730186227804244261585101775660459073191857947163274144651364226938068427890861844954525768731052403637938501515807708964919878735383282806409701169337375487223906453009961022087483759203118233001299263750541359896058899956691208315288003464703334776959722823733217843222174101342572542226071892594196621914248592464270246860112602858380251190991771329579904720658293633607622347336509311390212213079255088783022953659592897358163707232568211346903421394543092247726288436552620181896925075790385448245993936769164140320485058466868774361195322650498051104374187960155911650064963187527067994802944997834560415764400173235166738847986141186660892161108705067128627111303594629709831095712429623213512343005630142919012559549588566478995236032914681680381117366825465569510610653962754439151147682979644867908185361628410567345171069727154612386314421827631009094846253789519272412299696838458207016024252923343438718059766132524902555218709398007795582503248159376353399740147249891728020788220008661758336942399307059333044608055435253356431355565179731485491554785621481160675617150281507145950627977479428323949761801645734084019055868341273278475530532698137721957557384148982243395409268081420528367258553486357730619315721091381550454742312689475963620614984841922910350801212646167171935902988306626245127760935469900389779125162407968817669987007362494586401039411
test(n2)
n3 = 4212345
test(n3)
n4 = 0
test(n4)
# uncomment line below to perform search
#search
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment