Function Repository Resource:

ReasonableRuler

Source Notebook

Find a near-minimal set of marks for an integer length ruler so that all smaller integer distances are measurable

Contributed by: Ed Pegg Jr

ResourceFunction["ReasonableRuler"][length]

finds a set of integers with differences giving all values up to length using a compact form.

ResourceFunction["ReasonableRuler"][length,"Full"]

finds a reasonable ruler for given length, showing the full set of values.

Details and Options

The "Full" calculation requires significant memory for large length values.

Examples

Basic Examples (2) 

Marks for a sparse ruler of length 57:

In[1]:=
ResourceFunction["ReasonableRuler"][57, "Full"]
Out[1]=

Check that all differences are covered:

In[2]:=
Complement[
 Range[57], #[[2]] - #[[1]] & /@ Subsets[ResourceFunction["ReasonableRuler"][57, "Full"], {2}]]
Out[2]=

Show spaces between marks in a the full form of a length-396 ruler:

In[3]:=
Differences[ResourceFunction["ReasonableRuler"][396, "Full"]]
Out[3]=

Split the Difference:

In[4]:=
Split[%]
Out[4]=

Make a series of lists from the compact form of a length-396 ruler:

In[5]:=
Table[#[[1]], {#[[2]]}] & /@ Transpose[ResourceFunction["ReasonableRuler"][396]]
Out[5]=

Show the compact form:

In[6]:=
ResourceFunction["ReasonableRuler"][396]
Out[6]=

Verify the above shortened form has length 396:

In[7]:=
Dot @@ %
Out[7]=

Show the full form for a length-396 ruler:

In[8]:=
ResourceFunction["ReasonableRuler"][396, "Full"]
Out[8]=

Scope (4) 

Count the number of marks on a length-58 ruler:

In[9]:=
{Length[ResourceFunction["ReasonableRuler"][58, "Full"]], Total[ResourceFunction["ReasonableRuler"][58][[2]]] + 1}
Out[9]=

The excess of a ruler with length L and M marks is :

In[10]:=
(Total[ResourceFunction["ReasonableRuler"][58][[2]]] + 1) - Round[Sqrt[3 58 + 9/4]]
Out[10]=

A reasonable ruler has an excess of 0 or 1:

In[11]:=
length = 999;
ruler = ResourceFunction["ReasonableRuler"][length];
marks = Total[Last[ruler]] + 1;
excess = marks - Round[Sqrt[3 length + 9/4]];
Column[{{excess, marks, length}, Grid[ruler, Frame -> All]}, Alignment -> Center]
Out[15]=

A list of some rulers with a single mark less than those generated by this function:

In[16]:=
betterRulers = Uncompress[
   Normal["1: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"]];

Show the length-999 ruler with one fewer marks:

In[17]:=
ruler = betterRulers[[208]];
length = Dot @@ ruler;
marks = Total[Last[ruler]] + 1;
excess = marks - Round[Sqrt[3 length + 9/4]];
Column[{{excess, marks, length}, Grid[ruler, Frame -> All]}, Alignment -> Center]
Out[21]=

Show how the John Leech upper bound for the number of marks in a complete ruler compares to function-generated rulers:

In[22]:=
ListPlot[
 Table[Sqrt[
    3.348 n] - (Total[Last[ResourceFunction["ReasonableRuler"][n]]] + 1), {n, 214, 2019}]]
Out[22]=

Generate rulers of length n! and plot the number of marks:

In[23]:=
ListLogPlot[
 Table[(Total[Last[ResourceFunction["ReasonableRuler"][n!]]] + 1), {n,
    1, 30}]]
Out[23]=

Options (2) 

Show the marks for the first 51 rulers:

In[24]:=
Table[ResourceFunction["ReasonableRuler"][n, "Full"], {n, 1, 51}]
Out[24]=

Show the excess values for the first 51 rulers:

In[25]:=
Length[#] - Round[Sqrt[3 Last[#] + 9/4]] & /@ %
Out[25]=

Possible Issues (2) 

Show the default shortened form for a length-googol ruler:

In[26]:=
ResourceFunction["ReasonableRuler"][10^100]
Out[26]=

Show the number of marks in a length-googol ruler:

In[27]:=
Total[Last[%]] + 1
Out[27]=

Showing the full form of a googol-length ruler isn’t recommended.

Neat Examples (3) 

Generate reasonable rulers for various integer powers and calculate their excess:

In[28]:=
Text@Grid[Flatten[Table[Transpose[Prepend[
      Table[{base^ToString[n], Total[ResourceFunction["ReasonableRuler"][base^n][[2]]] + 1 - Round[Sqrt[3 base^n + 9/4]]}, {n, 3, 15}], {"length", "excess"}]],
    {base, 2, 11}], 1], Dividers -> {True, {{True, False}}}]
Out[28]=

All rulers to length 213 are minimal. Show a pixel representation of these sparse rulers:

In[29]:=
ArrayPlot[Table[PadRight[ReplacePart[Table[0, {n + 1}],
    ({# + 1} & /@ ResourceFunction["ReasonableRuler"][n, "Full"]) -> 1], 215], {n, 1, 213}], PixelConstrained -> 2, Frame -> False]
Out[29]=

The maximal length for a given number of marks is usually a Wichmann value:

In[30]:=
WichmannValues = Table[(n^2 - (Mod[n, 6] - 3)^2)/3 + n, {n, 1, 30}]
Out[30]=

Arrange lengths in columns ending in Wichmann values and bold the lengths with excess 1:

In[31]:=
Grid[Append[
  Transpose[
   Table[PadLeft[
     Take[Style[
         If[Length[ResourceFunction["ReasonableRuler"][#, "Full"]] - Round[Sqrt[3 # + 9/4]] == 1, Style[#, Black, Bold, 16], Style[#, Gray, 14]]] & /@ Range[213],
      {WichmannValues[[n]] + 1, WichmannValues[[n + 1]]}], 15, ""], {n, 24 - 1}]], Range[3, 25]], Spacings -> {.2, .2}, Dividers -> {False, -2 -> Blue}]
Out[31]=

Version History

  • 1.0.0 – 21 October 2019

Author Notes

No sparse ruler is known with an excess less than 0.
This function has not been tested for values past 20 million.

License Information