Získání vzorce z čísel (hledám nějaký brutal force software/script)
Ahoj,
občas ve svém životě čelím problému (jako nyní), kdy mám k dispozici čísla, ale nemám ani vzorec, ani předpis, ale mám výsledek, dejmetomu, že mám:
a=25
b=10
c=7
A výsledek 243. (mám k dispozici více instancí)
A hledám, software, který mi z toho vyhodí V=a*b-c. Chápu, že to není jediný vzorec, že mi klidně múže vyhodit něco jako V=a+a+a+a+a+a+a+a+a+a+b-b-c atd. Takže očekávám množinu výsledků na výstupu - seřazeno podle KISS.
Jako svůj vstup si představuji vstupní proměnné a,b,c výsledek v, povolené operandy (+,-,..) (protože ač neznám vzorec, často z logiky věci předpokládám, že tam nemůže/pravděpodobně/ být mocinina či dělení apod.) a omezení jako dlouho má hledat - protože chápu, že těch vzorců je nekonečno. Takže něco jako: každé číslo se muže vyskytnout pouze 2x, maximálně do počtu operací 6. A software bude kombinovat a kombinovat a vyhodí mi list výsledků.
Proč na to nenapíši nic vlastního? Protože chci, aby byl software optimální a to uplně není triviální LOOP/WHILE cyklus - čekám, že bude odřezávat větve stavového prostoru, když bude jasné, že k výsledku nedojde. Že nebude přidávat výrazy, které neovlivní výsledek jako je +b-b+b-b atd. Že a*b nebude duplikovat jako b*a.
Je něco takového? Diky
OS: mimo nějakých zrůdností typu IOS - libovolný.
25-10-7-7=1. Tím pádem jeden z výsledků je Vx25,-Vx10.-2Vx7
Uplně přesně tomu zápisu nerozumim, ale tuším co tím mělo být řečeno - ano těch výsledků muže být spoustu a počítám s tím.
Čekám, že z listu výsledků seřazených podle komplexnosti dokážu vizuálně (tzn. očima) rychle zamítnout spoustu případů, které k systému, který má vzorec popisovat nepatří. A na zbylé zbyde hrubá síla opačného směru (dosazování čísel a výsledků a ověřování, zde to tak vychází pro více instancí).
Jinak jsem nenapsal důležitou věc - těch čísel a k ní výsledků mohu získat VÍCE.