{
  "format": "refined.math.definition",
  "schemaVersion": 1,
  "id": "custom-63424ae1880dcc60dc0b8f02",
  "revision": 1,
  "digest": "27f5c91f52c4bf9282b17497736ed58707ccc941c6ceaa2f562b565e74d05fd2",
  "structure": "a24d164a715f7f65eb44b3146feb2bf4aa4671d8cd7cce17ac178438531925fc",
  "profile": {
    "format": "refined.math.adapter",
    "schemaVersion": 1,
    "adapterId": "customer-program",
    "version": "0.7.0",
    "name": {
      "en": "Assignment with a best-partner operator",
      "sk": "Priradenie s operátorom najlepšieho partnera"
    },
    "description": {
      "en": "Import your own initialization, evaluation, validator and operators as a bounded native program.",
      "sk": "Importujte vlastnú inicializáciu, hodnotenie, kontrolu a operátory ako ohraničený natívne vykonávaný program."
    },
    "help": {
      "en": "Program v1 uses exact integer, binary or permutation states. The admitted program runs inside the private native worker; Refined core source is not included.",
      "sk": "Program v1 používa presné celočíselné, binárne alebo permutačné stavy. Prijatý program beží v súkromnom natívnom workeri; zdrojový kód jadra Refined sa neposkytuje."
    },
    "runtime": {
      "binding": "customer-program",
      "coreRevision": "d2c02f944772b7f7a586c4f3357fc90e480349ad",
      "inputKey": "input"
    },
    "inputSchema": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "program": {},
        "data": {}
      },
      "required": [
        "program",
        "data"
      ]
    },
    "contract": {
      "state": {
        "en": "A caller-defined binary, integer or permutation vector with 1..512 values.",
        "sk": "Vektor s 1 až 512 hodnotami, ktorého binárnu, celočíselnú alebo permutačnú reprezentáciu určí autor."
      },
      "score": {
        "en": "Customer evaluation supplies nonnegative violations and an exact objective. The final state is re-evaluated and checked by the customer's validation hook.",
        "sk": "Vlastné hodnotenie určí nezáporné porušenia podmienok a presný cieľ. Konečný stav sa znovu vyhodnotí a skontroluje validačným programom autora."
      },
      "operators": {
        "en": [
          "Only the uploaded operator bodies supply state changes; no generic mathematical neighborhood is substituted."
        ],
        "sk": [
          "Zmeny stavu určujú výhradne nahrané operátory; nenahrádza ich generické matematické okolie."
        ]
      },
      "output": {
        "en": "Candidate values, objective, feasibility, fresh checks, actual Refined statistics and per-operator execution counters.",
        "sk": "Hodnoty kandidáta, cieľ, prípustnosť, čerstvé kontroly, skutočné štatistiky Refined a počítadlá vykonaní operátorov."
      }
    },
    "defaultTask": {
      "format": "refined.math.task",
      "schemaVersion": 1,
      "adapterId": "customer-program",
      "title": "Assignment with a best-partner operator",
      "payload": {
        "input": {
          "program": {
            "format": "refined.math.program",
            "schemaVersion": 1,
            "name": "Assignment with a data-guided best-partner operator",
            "parameters": [
              {
                "name": "n",
                "minLength": 1,
                "maxLength": 1
              },
              {
                "name": "costs",
                "minLength": 4,
                "maxLength": 4096
              }
            ],
            "state": {
              "kind": "permutation",
              "size": [
                "data",
                "n",
                0
              ]
            },
            "inputChecks": [
              [
                ">=",
                [
                  "data",
                  "n",
                  0
                ],
                2
              ],
              [
                "==",
                [
                  "len",
                  "costs"
                ],
                [
                  "*",
                  [
                    "data",
                    "n",
                    0
                  ],
                  [
                    "data",
                    "n",
                    0
                  ]
                ]
              ]
            ],
            "initialize": [
              {
                "for": "i",
                "from": 0,
                "to": "size",
                "do": [
                  {
                    "set": "i",
                    "value": "i"
                  }
                ]
              }
            ],
            "evaluation": {
              "steps": [
                {
                  "let": "total",
                  "value": 0
                },
                {
                  "for": "i",
                  "from": 0,
                  "to": "size",
                  "do": [
                    {
                      "let": "total",
                      "value": [
                        "+",
                        "total",
                        [
                          "data",
                          "costs",
                          [
                            "+",
                            [
                              "*",
                              "i",
                              "size"
                            ],
                            [
                              "state",
                              "i"
                            ]
                          ]
                        ]
                      ]
                    }
                  ]
                }
              ],
              "objective": "total",
              "violations": 0
            },
            "validation": {
              "steps": [
                {
                  "let": "valid",
                  "value": 1
                },
                {
                  "for": "i",
                  "from": 0,
                  "to": "size",
                  "do": [
                    {
                      "for": "j",
                      "from": 0,
                      "to": "size",
                      "do": [
                        {
                          "if": [
                            "and",
                            [
                              "!=",
                              "i",
                              "j"
                            ],
                            [
                              "==",
                              [
                                "state",
                                "i"
                              ],
                              [
                                "state",
                                "j"
                              ]
                            ]
                          ],
                          "then": [
                            {
                              "let": "valid",
                              "value": 0
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "valid": "valid"
            },
            "goal": "minimize",
            "operators": [
              {
                "name": "best_partner",
                "steps": [
                  {
                    "let": "i",
                    "value": [
                      "random",
                      "size"
                    ]
                  },
                  {
                    "let": "best",
                    "value": 0
                  },
                  {
                    "let": "partner",
                    "value": "i"
                  },
                  {
                    "for": "j",
                    "from": 0,
                    "to": "size",
                    "do": [
                      {
                        "let": "delta",
                        "value": [
                          "-",
                          [
                            "+",
                            [
                              "data",
                              "costs",
                              [
                                "+",
                                [
                                  "*",
                                  "i",
                                  "size"
                                ],
                                [
                                  "state",
                                  "j"
                                ]
                              ]
                            ],
                            [
                              "data",
                              "costs",
                              [
                                "+",
                                [
                                  "*",
                                  "j",
                                  "size"
                                ],
                                [
                                  "state",
                                  "i"
                                ]
                              ]
                            ]
                          ],
                          [
                            "+",
                            [
                              "data",
                              "costs",
                              [
                                "+",
                                [
                                  "*",
                                  "i",
                                  "size"
                                ],
                                [
                                  "state",
                                  "i"
                                ]
                              ]
                            ],
                            [
                              "data",
                              "costs",
                              [
                                "+",
                                [
                                  "*",
                                  "j",
                                  "size"
                                ],
                                [
                                  "state",
                                  "j"
                                ]
                              ]
                            ]
                          ]
                        ]
                      },
                      {
                        "if": [
                          "<",
                          "delta",
                          "best"
                        ],
                        "then": [
                          {
                            "let": "best",
                            "value": "delta"
                          },
                          {
                            "let": "partner",
                            "value": "j"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "swap": [
                      "i",
                      "partner"
                    ]
                  }
                ]
              },
              {
                "name": "segment_reverse",
                "steps": [
                  {
                    "let": "a",
                    "value": [
                      "random",
                      "size"
                    ]
                  },
                  {
                    "let": "b",
                    "value": [
                      "random",
                      "size"
                    ]
                  },
                  {
                    "reverse": [
                      "a",
                      "b"
                    ]
                  }
                ]
              }
            ],
            "outputs": {
              "assignmentCost": "total"
            }
          },
          "data": {
            "n": [
              6
            ],
            "costs": [
              23,
              34,
              3,
              30,
              28,
              26,
              1,
              26,
              24,
              22,
              33,
              31,
              26,
              37,
              35,
              33,
              5,
              29,
              30,
              2,
              26,
              24,
              22,
              33,
              26,
              24,
              35,
              33,
              31,
              4,
              35,
              33,
              31,
              6,
              27,
              38
            ]
          }
        }
      },
      "options": {
        "seed": 42,
        "timeLimitMs": 2000,
        "maxCandidateStates": 512
      }
    },
    "samples": []
  },
  "createdAt": "2026-10-23T11:05:03.807Z"
}
