(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     45790,       1248]
NotebookOptionsPosition[     38006,       1132]
NotebookOutlinePosition[     40469,       1183]
CellTagsIndexPosition[     40426,       1180]
WindowTitle->Search
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES GUIDE", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "62aad7c5-5aa8-4ede-ae65-3811dbdc5dda"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "837cda2e-c72d-45a7-885b-d18c4e8f22c9"],
        Background->LightDarkSwitched[
          RGBColor[0.85098, 0.396078, 0]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[Cell[BoxData[
     TagBox[
      ActionMenuBox[
       FrameBox[Cell[TextData[{
         "URL",
         " ",
         Cell[BoxData[
          GraphicsBox[
           {GrayLevel[0.66667], Thickness[0.13], 
            LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
           AspectRatio->1,
           ImageSize->20,
           PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
          "2d1cd387-14e6-414b-ba34-7310f43e13d8"]
        }],ExpressionUUID->"3b4c1d27-21e9-4839-9859-b8692029bd7e"],
        StripOnInput->False],{
       "\"WolframInstitute/Puzzles/guide/Search\"" :> None, 
        "\"Copy Wolfram Documentation Center URL\"" :> 
        CopyToClipboard["WolframInstitute/Puzzles/guide/Search"], Delimiter, 
        "\"Copy web URL\"" :> 
        Module[{DocumentationSearch`Private`nb$}, 
          DocumentationSearch`Private`nb$ = 
           NotebookPut[
            Notebook[{
              Cell[BoxData[
                MakeBoxes[
                 Hyperlink[
                  "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/guide/Search.html"], StandardForm]], "Input", TextClipboardType -> 
                "PlainText"]}, Visible -> False]]; 
          SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
          FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
          NotebookClose[DocumentationSearch`Private`nb$]; Null], 
        "\"Go to web URL\"" :> 
        FrontEndExecute[{
          NotebookLocate[{
            URL[If[TrueQ[False], 
                "http://reference.wolfram.com/system-modeler/", 
                "http://reference.wolfram.com/language/"] <> 
              "WolframInstitute/Puzzles/guide/Search" <> ".html"], None}]}]},
       Appearance->None,
       MenuAppearance->Automatic,
       MenuStyle->"URLMenu"],
      MouseAppearanceTag["LinkHand"]]],
     LineSpacing->{1.4, 0},ExpressionUUID->
     "d02e5287-523e-40fc-b4a6-e40fa952f498"]], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "f4cb6685-f33a-40c0-bfb5-06ef04600835"]}
  }]], "AnchorBarGrid",
 GridBoxOptions->{GridBoxItemSize->{"Columns" -> {
     Scaled[0.65], {
      Scaled[0.34]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, 
   "RowsIndexed" -> {}}},
 CellID->1,ExpressionUUID->"c8544457-94fd-46a1-bcf7-ccf1d0de8f81"],

Cell[CellGroupData[{

Cell["Search", "GuideTitle",
 CellID->942062912,ExpressionUUID->"e6ec6110-1684-42fe-a29a-0841876bf795"],

Cell[TextData[{
 "A search over a cryptographic puzzle is three things: a space of \
candidates, an oracle that recognises the answer, and a record of what has \
already been ruled out. This guide covers the first and the third, and the \
driver that runs them against the second. Candidate spaces are represented as \
indexed enumerations, so the ",
 StyleBox["i", "TI"],
 "-th candidate is one call away no matter how large the space is; a sweep \
over such a space checkpoints to a single integer and resumes exactly; and \
every candidate a sweep tests is recorded, by content address, in a ledger on \
disk, so no candidate is ever tested twice, across sessions or across \
puzzles. The oracles themselves live in the Oracles guide."
}], "GuideAbstract",
 CellID->2001916300,ExpressionUUID->"8b2a02ca-9d4d-4626-9896-d98db5ec09b7"],

Cell["\t", "GuideDelimiterSubsection",ExpressionUUID->"466e7997-2111-4869-a718-7e2543114cab"],

Cell[CellGroupData[{

Cell["Candidate spaces", "GuideFunctionsSubsection",ExpressionUUID->"2a33f47c-8f7a-4dff-b26e-c68c077b3723"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CandidateEnumeration"]], 
    "paclet:WolframInstitute/Puzzles/ref/CandidateEnumeration", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "49e72b43-0216-496b-92f8-b0ae4c9b6d07"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "a candidate space as a length paired with an index-to-candidate function"
}], "GuideText",ExpressionUUID->"5b033c5c-9321-494d-a764-281a552754b5"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SubsetCandidates"]], 
    "paclet:WolframInstitute/Puzzles/ref/SubsetCandidates", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4e2460e7-75a8-4a9e-b561-fae9508d20a3"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the subsets of a list, in the order of ",
 Cell["Subsets", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "58568c30-0c48-41d5-8b5c-df13eb6608dc"],
 ", indexed and counted in closed form"
}], "GuideText",ExpressionUUID->"5c7b2faa-9e99-4b1a-b624-300d53d30715"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PermutationCandidates"]], 
    "paclet:WolframInstitute/Puzzles/ref/PermutationCandidates", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4084028d-662e-46c8-b942-9d4ad77837da"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the orderings of a list, indexed through the Lehmer code"
}], "GuideText",ExpressionUUID->"6d807e5e-f681-4a42-818e-052d8016a0e6"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WordlistCandidates"]], 
    "paclet:WolframInstitute/Puzzles/ref/WordlistCandidates", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0231a642-1164-457d-a19d-436ac71c639c"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the cross product of per-position word lists, joined into one candidate"
}], "GuideText",ExpressionUUID->"342d5e35-a578-4c88-b2f9-b77cc868195c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Subsets", FontSlant -> "Italic"]]], "paclet:ref/Subsets"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "3e35e482-c5c7-422e-9b91-5ba29892b339"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "subsets of a list, with an explicit index specification"
}], "GuideText",ExpressionUUID->"769e88fd-c3a7-4d6f-ba40-85508641325b"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Permutations", FontSlant -> "Italic"]]], 
    "paclet:ref/Permutations"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a546a185-0065-43d0-8529-8a3c99a704e7"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "orderings of a list"
}], "GuideText",ExpressionUUID->"649d7695-9b2e-4dcd-a26f-dc8c009634f9"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Tuples", FontSlant -> "Italic"]]], "paclet:ref/Tuples"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "58fe2980-a4f6-4fe5-926e-6afdd10debcb"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the cross product of several lists"
}], "GuideText",ExpressionUUID->"ef18b0e2-d3e9-48f6-b844-0012cced8b41"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Binomial", FontSlant -> "Italic"]]], "paclet:ref/Binomial"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "48efe64a-ada8-4b3f-9232-4ffecdfbb27b"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Factorial", FontSlant -> "Italic"]]], "paclet:ref/Factorial"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a14b7f0f-a25b-48ec-bce2-5a5b9d28d949"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["IntegerDigits", FontSlant -> "Italic"]]], 
    "paclet:ref/IntegerDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b2ab6134-007d-44d5-b71b-1b8bae97465d"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["MixedRadix", FontSlant -> "Italic"]]], 
    "paclet:ref/MixedRadix"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "da0eec5a-5569-4fd3-a655-a6e9f12274a1"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringRiffle", FontSlant -> "Italic"]]], 
    "paclet:ref/StringRiffle"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "3b494bc3-657c-4c90-981e-65f4981854a2"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"954f7d3b-5a22-4b1d-a255-3188ebaf4797"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Mutating a text that is nearly right", "GuideFunctionsSubsection",ExpressionUUID->"b2db7dd2-4ae4-48ef-92ca-dc85fb267459"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["TextVariants"]], 
    "paclet:WolframInstitute/Puzzles/ref/TextVariants", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "259d7187-82dd-4d58-ba92-70cf831a41ac"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the whitespace, line-ending, character-reference, case and Unicode \
normalisation variants of a text"
}], "GuideText",ExpressionUUID->"726b650b-5419-451f-b311-08dab24333c6"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["EditVariants"]], 
    "paclet:WolframInstitute/Puzzles/ref/EditVariants", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "dd29edae-09e7-469c-a217-cf42c6586437"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the strings at Damerau-Levenshtein distance 1 over a chosen alphabet"
}], "GuideText",ExpressionUUID->"1da5c1c8-33ff-473b-b366-5ab050e5f125"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["CharacterNormalize", FontSlant -> "Italic"]]], 
    "paclet:ref/CharacterNormalize"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "bbdc0046-b331-49fa-83c9-b31f4a003605"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the four Unicode normalisation forms NFC, NFD, NFKC and NFKD"
}], "GuideText",ExpressionUUID->"2f872286-98a4-4640-9be5-a958de6dff9a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["DamerauLevenshteinDistance", FontSlant -> "Italic"]]], 
    "paclet:ref/DamerauLevenshteinDistance"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "c2d4d45a-b74a-4c44-ba5e-a3a0c9e08efa"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "edit distance counting adjacent transposition as one edit"
}], "GuideText",ExpressionUUID->"ea6c3e43-559c-4037-b016-946d97277010"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["EditDistance", FontSlant -> "Italic"]]], 
    "paclet:ref/EditDistance"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ac229645-990d-4c16-938b-27c3b32cbfcf"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringTrim", FontSlant -> "Italic"]]], 
    "paclet:ref/StringTrim"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "dd98c9f1-d387-48d7-a472-ffb340deb774"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringReplace", FontSlant -> "Italic"]]], 
    "paclet:ref/StringReplace"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "e0cb5a6c-729c-40c9-89d7-d5891f860e4a"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Capitalize", FontSlant -> "Italic"]]], 
    "paclet:ref/Capitalize"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ea8acedd-e181-4848-a7ec-7995360755fb"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ToLowerCase", FontSlant -> "Italic"]]], 
    "paclet:ref/ToLowerCase"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ab27f4de-a8a1-4f9c-a6d2-5d757f03c6ec"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ToUpperCase", FontSlant -> "Italic"]]], 
    "paclet:ref/ToUpperCase"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "2a87d1f0-c336-4c25-9053-38ad46364601"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"340bb199-81ca-4bb3-8d43-0c07bf6d81bf"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Driving a sweep", "GuideFunctionsSubsection",ExpressionUUID->"db473b5c-e771-487c-8921-d41d375494a3"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CandidateSweep"]], 
    "paclet:WolframInstitute/Puzzles/ref/CandidateSweep", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "507da2c6-d5ad-4fe8-8665-28a45c8e118a"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "run an enumeration through an oracle in chunks, with progress, a checkpoint \
and a ledger"
}], "GuideText",ExpressionUUID->"a2d8ad78-de5a-4a46-8bc6-6643c1941fb5"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SweepCheckpoint"]], 
    "paclet:WolframInstitute/Puzzles/ref/SweepCheckpoint", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "353d3653-1218-4500-9c26-8afc9f35192b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "read the index, counters and hits a stopped sweep left on disk"
}], "GuideText",ExpressionUUID->"c24ebe5e-b79e-4dc1-a640-a8cd97b78604"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["NestWhile", FontSlant -> "Italic"]]], "paclet:ref/NestWhile"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "06faaef9-43d6-41fe-91a9-93b4f2abbbb5"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["TimeConstraint", FontSlant -> "Italic"]]], 
    "paclet:ref/TimeConstraint"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "014d35a1-f129-4f76-bc73-37fb0dcae2a6"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["AbsoluteTiming", FontSlant -> "Italic"]]], 
    "paclet:ref/AbsoluteTiming"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1f5bbca4-be7a-4ad5-b885-b2248ea081c4"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ParallelMap", FontSlant -> "Italic"]]], 
    "paclet:ref/ParallelMap"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6ca0e322-7d0c-423a-b24c-203e14075924"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"268af980-2c35-44da-953f-a7f6cc8d85d8"]
}, Open  ]],

Cell[CellGroupData[{

Cell["The negative-results ledger", "GuideFunctionsSubsection",ExpressionUUID->"0b94b383-b4ce-488b-8de6-336d06441601"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedger"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "40a3f19f-602f-4a21-a11c-b98b8919e6a8"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the persistent, content-addressed record of which candidates have been \
tested against which target"
}], "GuideText",ExpressionUUID->"785a55a4-8b72-4b7b-8420-f65a043838b1"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedgerFilter"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "739e15b1-b594-49e1-9356-3373a8ff228e"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the candidates of a batch that have not yet been tested against a target"
}], "GuideText",ExpressionUUID->"25b23a38-d5a7-4f54-8780-382e26987169"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedgerRecord"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedgerRecord", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0b011fda-6340-443d-a245-c1090de9b000"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "add a batch of tested candidates to a target's record"
}], "GuideText",ExpressionUUID->"beba890c-4193-4488-a343-d7a402161cd3"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CandidateFingerprint"]], 
    "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "432cd9ab-a122-4331-b40e-0ad6e679ecb1"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the SHA-256 content address of a candidate, as stored in a ledger"
}], "GuideText",ExpressionUUID->"382c4b8a-f0f2-4f30-9441-12032e750274"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedgerTestedQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedgerTestedQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "75d6ef44-910e-40e9-94d6-ad20af83437e"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Hash", FontSlant -> "Italic"]]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7739c451-a2d4-4d6b-95a2-790593b4a3bb"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArray", FontSlant -> "Italic"]]], "paclet:ref/ByteArray"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "aaea62f9-ea8c-4078-bfcf-7e896d3e7690"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Import", FontSlant -> "Italic"]]], "paclet:ref/Import"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "568bfeac-0ac2-46bf-9039-cb5de392a917"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Export", FontSlant -> "Italic"]]], "paclet:ref/Export"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "898b220c-dabd-4737-b86e-8d047886c207"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"697091db-0455-463f-9b09-9f77b03ddba0"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Breaking a classical cipher", "GuideFunctionsSubsection",ExpressionUUID->"f363ba0a-3c40-4c9f-b432-476b1778a8f9"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["IndexOfCoincidence"]], 
    "paclet:WolframInstitute/Puzzles/ref/IndexOfCoincidence", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "707b90e9-4d31-41cb-acf4-a872c447c339"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the coincidence probability that tells a transposition or monoalphabetic \
cipher (English IC) from a poly-alphabetic one (flat IC)"
}], "GuideText",ExpressionUUID->"56f600d4-4b75-4f06-8c5b-a65c1f4d0216"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CipherPeriods"]], 
    "paclet:WolframInstitute/Puzzles/ref/CipherPeriods", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "db5fc0a5-7546-4be0-a8ab-8e790a8f367d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the candidate periods of a Vigenere/Quagmire cipher, ranked by the mean \
index of coincidence of their columns"
}], "GuideText",ExpressionUUID->"c400ed32-edac-4860-89e3-b6b9dfc4e2ee"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["EnglishNgramScore"]], 
    "paclet:WolframInstitute/Puzzles/ref/EnglishNgramScore", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a61804ba-ac91-414b-b9a3-3d533a170341"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the English quadgram fitness the solvers rank candidate decryptions by, \
built once from the kernel dictionary"
}], "GuideText",ExpressionUUID->"eee067a2-67e3-4d01-9eb4-40296cfc92f7"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["VigenereSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/VigenereSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a9772089-e71d-4cc1-82c5-64b4784978d8"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ciphertext-only recovery of a Vigenere or Quagmire key, one column shift at \
a time, including the KRYPTOS-keyed arrangement of Kryptos K1/K2 and double \
Quagmires (Kryptos-CTF PK3) via period decomposition"
}], "GuideText",ExpressionUUID->"a2804e82-2d97-411d-adcc-54975a842a03"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["QuagmireSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/QuagmireSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9e559934-243d-431b-ab8d-e846376c1842"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ciphertext-only recovery of a Quagmire (Vigenere over a mixed alphabet) \
when the alphabet itself is unknown, by hill-climbing the keyed alphabet from \
keyword seeds - the four Quagmire variants at a searched period"
}], "GuideText",ExpressionUUID->"d1acd3df-3d96-4ad8-98ec-e0f23f19c3ca"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["QuagmireCompositeSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/QuagmireCompositeSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "213d8724-dfed-49dc-b11c-c9f5bd1bf515"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "keyless crack of the Kryptos-CTF PK4/PK6 composite - a columnar \
transposition beneath a double Quagmire III over the KRYPTOS alphabet - by \
peeling the substitution with a transposition-invariant statistic, bruting \
the columnar, and polishing on quadgrams"
}], "GuideText",ExpressionUUID->"ea0e7245-a268-4dbc-9b82-956a385b0121"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillQuagmireSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillQuagmireSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d3049146-6dfe-494e-9409-699cca92740f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "keyless crack of the Kryptos-CTF PK7 composite - a 3x3 Hill over a period-6 \
Quagmire III on the KRYPTOS alphabet - by the dual peel: undoing the true \
Hill matrix is what restores the inner periodicity, so keyword matrices are \
ranked by the per-column index of coincidence of their residue, and the \
winner is handed to QuagmireSolve"
}], "GuideText",ExpressionUUID->"7d1e449e-5b5c-40c5-808e-21826f700d58"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ColumnarTranspositionSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/ColumnarTranspositionSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "08ae34fa-a568-4198-8ea6-58bdf87b6942"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "recovery of a columnar transposition by scoring every column order"
}], "GuideText",ExpressionUUID->"4ab2478f-b9b3-4dd2-82f0-4885eb905bea"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillCipherSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillCipherSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b296a9cc-4e68-4255-9456-4cd04b3c7d92"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "known-plaintext recovery of a Hill key by solving C = K.P modulo 26 ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " linear, so a crib breaks it instantly"
}], "GuideText",ExpressionUUID->"ff78d298-6dcd-4ab2-bd2a-390428cec1a7"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BifidSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/BifidSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "467af80b-e4fb-4840-bc67-cb9c7be9a81d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ciphertext-only recovery of a Bifid cipher by hill-climbing the 5x5 square \
(C-accelerated) on quadgram fitness"
}], "GuideText",ExpressionUUID->"2f97bf83-94e3-4380-8c17-2703d7dc0fe4"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SlidefairSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/SlidefairSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7586f4e2-89db-47ea-b14a-e2f002b54435"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ciphertext-only recovery of a Slidefair cipher by a reproducible \
simulated-annealing hill-climb of the key on quadgram fitness, over the \
Vigenere, Variant and Beaufort tables"
}], "GuideText",ExpressionUUID->"d7d05388-7bf8-42ff-a609-d23c20863ba2"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["NicodemusSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/NicodemusSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0dbbf026-fedc-4e20-9c32-bb541cd7253f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ciphertext-only recovery of a Nicodemus cipher by brute-forcing the column \
read order, fitting each column's Vigenere shift, and polishing the best \
orders on quadgrams - deterministic, no restarts"
}], "GuideText",ExpressionUUID->"529ce2de-06e0-41a1-a49c-4cd2d19f4e18"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["VigenereCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/VigenereCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "aa0038ba-f445-4db5-a672-607f5a5e20b9"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ColumnarTransposition"]], 
    "paclet:WolframInstitute/Puzzles/ref/ColumnarTransposition", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0ab265ec-77a0-43fe-890e-f609ed68ccdc"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1be95c97-168d-4b5c-9729-1950a4b5afec"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BifidCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/BifidCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ec07d29f-0f6a-484d-8e8e-86e08ffd39a1"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["KeyedAlphabet"]], 
    "paclet:WolframInstitute/Puzzles/ref/KeyedAlphabet", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6075bb90-57e1-4b38-8782-c6fe691f3c46"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the codecs these solvers invert, in the Encodings guide"
}], "GuideText",ExpressionUUID->"d13f44a7-c33a-4a39-86f4-f6267dae030d"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Attacking a public key", "GuideFunctionsSubsection",ExpressionUUID->"ea07309d-e830-4c00-bf68-8a6ddc16f2bb"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WienerAttack"]], 
    "paclet:WolframInstitute/Puzzles/ref/WienerAttack", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a9ad8d28-2d16-4b4b-bb58-b50b3f1e77bd"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "recovery of an RSA private key from a small private exponent, by testing \
every convergent of the continued fraction of the public ratio - with de \
Weger's closer approximant as the default, so a modulus whose primes are \
close together is reached far past Wiener's own threshold"
}], "GuideText",ExpressionUUID->"bcebf385-26c3-4a99-806a-e5af1a660d75"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WienerBound"]], 
    "paclet:WolframInstitute/Puzzles/ref/WienerBound", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7071fd91-e928-4763-94ae-ac9b5b00f1aa"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the two published thresholds that attack works below: Wiener's ",
 Cell["d", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b7f14700-6492-4d0a-8d7f-2650f31916f1"],
 " < ",
 StyleBox["n", "TI"],
 "^(1/4)/3 for a balanced modulus, and de Weger's ",
 Cell["d", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "421320df-6754-4678-a59d-5378934720d1"],
 " < ",
 StyleBox["n", "TI"],
 "^(3/4)/|",
 StyleBox["p", "TI"],
 " - ",
 StyleBox["q", "TI"],
 "| when the prime difference is known - both in exact integer arithmetic, \
where the floating-point spelling silently goes unevaluated"
}], "GuideText",ExpressionUUID->"fdf6a916-3ee2-4222-8694-86f9bddc5693"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BatchGCD"]], "paclet:WolframInstitute/Puzzles/ref/BatchGCD", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "20d34415-5994-4de8-8ea9-e5ff4d0e5b1a"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the shared-prime sweep over many moduli at once, by Bernstein's product and \
remainder trees rather than the quadratic all-pairs scan"
}], "GuideText",ExpressionUUID->"85c622cf-c38f-4733-91d2-571257ef084e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ContinuedFraction", FontSlant -> "Italic"]]], 
    "paclet:ref/ContinuedFraction"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "e3a30908-93a4-48f6-be39-2fd0d63c2dea"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Convergents", FontSlant -> "Italic"]]], 
    "paclet:ref/Convergents"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "8dcede93-ad1b-45d7-ad77-6bb2b5678d87"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["GCD", FontSlant -> "Italic"]]], "paclet:ref/GCD"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7e9c1035-ede8-4b8f-9e8f-60db8e0c8e88"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["PowerMod", FontSlant -> "Italic"]]], "paclet:ref/PowerMod"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "de11bb4b-8267-4229-b3e3-938a8496a599"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["FactorInteger", FontSlant -> "Italic"]]], 
    "paclet:ref/FactorInteger"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "2558cf23-d637-44d2-872c-de2a3fd6798b"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"64677208-e63d-4933-8fb6-e3de62120388"]
}, Open  ]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedTutorial.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Tech", " ", "Notes"}], "GuideTutorialsSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CrackingTheKryptosCTF"]], 
           "paclet:WolframInstitute/Puzzles/tutorial/CrackingTheKryptosCTF"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "3e2a0f52-ac50-4116-b3fc-f3f3d4c9cfe2"]], "GuideTutorial",
         ExpressionUUID->"5d7494d7-b96b-4301-ab44-0f0d9bdb8333"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CrackingTheBitcoinMovieEnigma"]], 
           "paclet:WolframInstitute/Puzzles/tutorial/\
CrackingTheBitcoinMovieEnigma"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "71b041f5-6f85-4814-b077-eaf2aa9da0cc"]], "GuideTutorial",
         ExpressionUUID->"4bd234bc-9718-446b-88c3-d1c205f181bc"]}]}
     }]}
  }]], "GuideTutorialsSection",ExpressionUUID->"172537f8-cedc-4c22-b108-\
30b4ec528723"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "GuideMoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Puzzles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Puzzles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "5249c0d7-2dc9-48d8-816c-370c113cd616"]], "GuideMoreAbout",
         ExpressionUUID->"15425e83-f241-485c-b103-d0747e7a281b"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Oracles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Oracles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "9d17098e-551f-4c0a-8135-c5cdbea14c76"]], "GuideMoreAbout",
         ExpressionUUID->"79a705e4-6d6d-41b1-bd45-cf83612f2b8d"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Seeds"]], "paclet:WolframInstitute/Puzzles/guide/Seeds"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "bc880f61-f745-437a-a5f8-18ef90768299"]], "GuideMoreAbout",
         ExpressionUUID->"1026688a-4f9d-4376-8902-ae6a3afdccf2"]}]}
     }]}
  }]], "GuideMoreAboutSection",ExpressionUUID->"ebc4edcd-f0b4-4860-8939-\
8aad6a9cf198"],

Cell[" ", "FooterCell",ExpressionUUID->"ba80c4ed-d1b0-42ce-8191-cc582c52257b"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Search",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}}, 
  "NewStyles" -> True, "CitationPopupData" -> {$Failed, ""}, "ShowCitation" -> 
  False, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 36.328431}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {
     "candidate generation", "search space", "enumeration", "sweep", 
      "checkpoint", "resume", "negative results", "ledger", "content address",
       "edit distance", "normalization"}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Guide", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "A search over a cryptographic puzzle is three things: a space of \
candidates, an oracle that recognises the answer, and a record of what has \
already been ruled out. This guide covers the first and the third, and the \
driver that runs them against the second. Candidate spaces are represented as \
indexed enumerations, so the i-th candidate is one call away no matter how \
large the space is; a sweep over such a space checkpoints to a single integer \
and resumes exactly; and every candidate a sweep tests is recorded, by \
content address, in a ledger on disk, so no candidate is ever tested twice, \
across sessions or across puzzles. The oracles themselves live in the Oracles \
guide.", "synonyms" -> {}, "tabletags" -> {}, "title" -> "Search", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> "Search",
     "type" -> "Guide", "uri" -> "WolframInstitute/Puzzles/guide/Search", 
    "WorkflowDockedCell" -> ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
CacheGraphics->False,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"8c75176b-eeec-487a-ad11-4d53d5a5ada6"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[574, 21, 3030, 73, 70, "AnchorBarGrid",ExpressionUUID->"c8544457-94fd-46a1-bcf7-ccf1d0de8f81",
 CellID->1],
Cell[CellGroupData[{
Cell[3629, 98, 103, 1, 70, "GuideTitle",ExpressionUUID->"e6ec6110-1684-42fe-a29a-0841876bf795",
 CellID->942062912],
Cell[3735, 101, 835, 13, 70, "GuideAbstract",ExpressionUUID->"8b2a02ca-9d4d-4626-9896-d98db5ec09b7",
 CellID->2001916300],
Cell[4573, 116, 93, 0, 70, "GuideDelimiterSubsection",ExpressionUUID->"466e7997-2111-4869-a718-7e2543114cab"],
Cell[CellGroupData[{
Cell[4691, 120, 107, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"2a33f47c-8f7a-4dff-b26e-c68c077b3723"],
Cell[4801, 122, 551, 14, 70, "GuideText",ExpressionUUID->"5b033c5c-9321-494d-a764-281a552754b5"],
Cell[5355, 138, 684, 18, 70, "GuideText",ExpressionUUID->"5c7b2faa-9e99-4b1a-b624-300d53d30715"],
Cell[6042, 158, 537, 14, 70, "GuideText",ExpressionUUID->"6d807e5e-f681-4a42-818e-052d8016a0e6"],
Cell[6582, 174, 546, 14, 70, "GuideText",ExpressionUUID->"342d5e35-a578-4c88-b2f9-b77cc868195c"],
Cell[7131, 190, 476, 14, 70, "GuideText",ExpressionUUID->"769e88fd-c3a7-4d6f-ba40-85508641325b"],
Cell[7610, 206, 455, 15, 70, "GuideText",ExpressionUUID->"649d7695-9b2e-4dcd-a26f-dc8c009634f9"],
Cell[8068, 223, 453, 14, 70, "GuideText",ExpressionUUID->"ef18b0e2-d3e9-48f6-b844-0012cced8b41"],
Cell[8524, 239, 1568, 55, 70, "GuideText",ExpressionUUID->"954f7d3b-5a22-4b1d-a255-3188ebaf4797"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10129, 299, 127, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"b2db7dd2-4ae4-48ef-92ca-dc85fb267459"],
Cell[10259, 301, 564, 15, 70, "GuideText",ExpressionUUID->"726b650b-5419-451f-b311-08dab24333c6"],
Cell[10826, 318, 531, 14, 70, "GuideText",ExpressionUUID->"1da5c1c8-33ff-473b-b366-5ab050e5f125"],
Cell[11360, 334, 508, 15, 70, "GuideText",ExpressionUUID->"2f872286-98a4-4640-9be5-a958de6dff9a"],
Cell[11871, 351, 521, 15, 70, "GuideText",ExpressionUUID->"ea6c3e43-559c-4037-b016-946d97277010"],
Cell[12395, 368, 1879, 67, 70, "GuideText",ExpressionUUID->"340bb199-81ca-4bb3-8d43-0c07bf6d81bf"]
}, Open  ]],
Cell[CellGroupData[{
Cell[14311, 440, 106, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"db473b5c-e771-487c-8921-d41d375494a3"],
Cell[14420, 442, 557, 15, 70, "GuideText",ExpressionUUID->"a2d8ad78-de5a-4a46-8bc6-6643c1941fb5"],
Cell[14980, 459, 531, 14, 70, "GuideText",ExpressionUUID->"c24ebe5e-b79e-4dc1-a640-a8cd97b78604"],
Cell[15514, 475, 1290, 45, 70, "GuideText",ExpressionUUID->"268af980-2c35-44da-953f-a7f6cc8d85d8"]
}, Open  ]],
Cell[CellGroupData[{
Cell[16841, 525, 118, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"0b94b383-b4ce-488b-8de6-336d06441601"],
Cell[16962, 527, 563, 15, 70, "GuideText",ExpressionUUID->"785a55a4-8b72-4b7b-8420-f65a043838b1"],
Cell[17528, 544, 547, 14, 70, "GuideText",ExpressionUUID->"25b23a38-d5a7-4f54-8780-382e26987169"],
Cell[18078, 560, 528, 14, 70, "GuideText",ExpressionUUID->"beba890c-4193-4488-a343-d7a402161cd3"],
Cell[18609, 576, 544, 14, 70, "GuideText",ExpressionUUID->"382c4b8a-f0f2-4f30-9441-12032e750274"],
Cell[19156, 592, 1569, 52, 70, "GuideText",ExpressionUUID->"697091db-0455-463f-9b09-9f77b03ddba0"]
}, Open  ]],
Cell[CellGroupData[{
Cell[20762, 649, 118, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"f363ba0a-3c40-4c9f-b432-476b1778a8f9"],
Cell[20883, 651, 606, 15, 70, "GuideText",ExpressionUUID->"56f600d4-4b75-4f06-8c5b-a65c1f4d0216"],
Cell[21492, 668, 576, 15, 70, "GuideText",ExpressionUUID->"c400ed32-edac-4860-89e3-b6b9dfc4e2ee"],
Cell[22071, 685, 584, 15, 70, "GuideText",ExpressionUUID->"eee067a2-67e3-4d01-9eb4-40296cfc92f7"],
Cell[22658, 702, 673, 16, 70, "GuideText",ExpressionUUID->"a2804e82-2d97-411d-adcc-54975a842a03"],
Cell[23334, 720, 682, 16, 70, "GuideText",ExpressionUUID->"d1acd3df-3d96-4ad8-98ec-e0f23f19c3ca"],
Cell[24019, 738, 743, 17, 70, "GuideText",ExpressionUUID->"ea0e7245-a268-4dbc-9b82-956a385b0121"],
Cell[24765, 757, 812, 18, 70, "GuideText",ExpressionUUID->"7d1e449e-5b5c-40c5-808e-21826f700d58"],
Cell[25580, 777, 557, 14, 70, "GuideText",ExpressionUUID->"4ab2478f-b9b3-4dd2-82f0-4885eb905bea"],
Cell[26140, 793, 621, 16, 70, "GuideText",ExpressionUUID->"ff78d298-6dcd-4ab2-bd2a-390428cec1a7"],
Cell[26764, 811, 571, 15, 70, "GuideText",ExpressionUUID->"2f97bf83-94e3-4380-8c17-2703d7dc0fe4"],
Cell[27338, 828, 645, 16, 70, "GuideText",ExpressionUUID->"d7d05388-7bf8-42ff-a609-d23c20863ba2"],
Cell[27986, 846, 667, 16, 70, "GuideText",ExpressionUUID->"529ce2de-06e0-41a1-a49c-4cd2d19f4e18"],
Cell[28656, 864, 1840, 54, 70, "GuideText",ExpressionUUID->"d13f44a7-c33a-4a39-86f4-f6267dae030d"]
}, Open  ]],
Cell[CellGroupData[{
Cell[30533, 923, 113, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"ea07309d-e830-4c00-bf68-8a6ddc16f2bb"],
Cell[30649, 925, 745, 17, 70, "GuideText",ExpressionUUID->"bcebf385-26c3-4a99-806a-e5af1a660d75"],
Cell[31397, 944, 1095, 31, 70, "GuideText",ExpressionUUID->"fdf6a916-3ee2-4222-8694-86f9bddc5693"],
Cell[32495, 977, 584, 14, 70, "GuideText",ExpressionUUID->"85c622cf-c38f-4733-91d2-571257ef084e"],
Cell[33082, 993, 1564, 54, 70, "GuideText",ExpressionUUID->"64677208-e63d-4933-8fb6-e3de62120388"]
}, Open  ]]
}, Open  ]],
Cell[34673, 1051, 1422, 33, 70, "GuideTutorialsSection",ExpressionUUID->"172537f8-cedc-4c22-b108-30b4ec528723"],
Cell[36098, 1086, 1823, 42, 70, "GuideMoreAboutSection",ExpressionUUID->"ebc4edcd-f0b4-4860-8939-8aad6a9cf198"],
Cell[37924, 1130, 78, 0, 70, "FooterCell",ExpressionUUID->"ba80c4ed-d1b0-42ce-8191-cc582c52257b"]
}
]
*)

(* End of internal cache information *)

