# <!-- METAHEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"*": "https://raw.githubusercontent.com/wefindx/schema/master/method/oo-item.yaml"
# <!-- HEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"base:title": "0oo - Can A* be used to generate algorithm sourcecode?"
"og:title": "Can A* be used to generate algorithm sourcecode?"
"og:description": "If you project the desired code variables onto a multidimensional space and with a time dimension, where each variable has a assignment algebra you can imagine the input code causing movements to the output algebra for each variable How do you measure that a solution gets nearer to the solution when you haven&#x27;t planned what you could do It should be a multidimensional walk toward a solution that solves the programming problem. I want to generate the btree algorithm and other algorithms with this approach I should provide example inputs to output mappings and join the Data between the input …"
"og:image": "https://avatars0.githubusercontent.com/u/28134655"
"og:url": "/method/139001/"
"base:css": "/static/css/bootstrap.min.9c25540d6272.css"
"base:extra-css": "/static/css/base.57997aeac1df.css"
"base:favicon": "/static/favicon.acaa334f0136.ico"
"base:body_class": ""
"layout:logo": "/static/0oo.8d2a8bbef612.svg"
"layout:index": "/"
"layout:menu": "/menu/"
"layout:categories": "/intents/"
"layout:ideas": "/methods/"
"layout:projects": "/projects/"
"layout:users": "/users/"
"layout:about": "/about/"
"layout:help": "/help/"
"layout:bug_report": "https://github.com/wefindx/0oo"
"layout:login": "/accounts/login/"
"layout:light-off": "/darken/?darken=true"
"layout:set-multilingual": "/mulang/?mulang=true"
"layout:lang": "言語"
"layout:set-language-post-action": "/i18n/setlang/"
"layout:csrf-token": "gbl7caLzUWLIApgmlts3P8thcqWQXBUPbkXDhihe4SYqmUsKUBjEZAgjzYHh70J0"
"layout:input-next": "/method/139001/"
"layout:languages": [{"code": "ja", "is-active": "true", "name": "日本語"}, {"code": "lt", "is-active": "false", "name": "Lietuviškai"}, {"code": "zh-hans", "is-active": "false", "name": "简体中文"}, {"code": "en", "is-active": "false", "name": "English"}, {"code": "ru", "is-active": "false", "name": "Русский"}, {"code": "oo", "is-active": "false", "name": "O;o,"}]
# <!-- TOPIC
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:parent:intents": [{"url": "/intent/19001/", "title": "Programming too difficult"}]
"item:title": "Can A* be used to generate algorithm sourcecode?"
"item:summary": "I thought of an idea to use a* algorithm to &quot;walk&quot; toward a solution that solves a programming problem. Each neighbour can be a weighted list of programming tasks such as if statement, for each, assignment, recursive call. How do you map example data structures transformations to code that fulfils the changes to the data structure? You need a cost function that decreases when the output gets nearer to the solution. What does the cost function for code solving a problem look similar to?"
"item:voting": 0
"item:voting:add": "/admin/hlog/voting/add/?method=139001"
"item:voting:csrf_token": "gbl7caLzUWLIApgmlts3P8thcqWQXBUPbkXDhihe4SYqmUsKUBjEZAgjzYHh70J0"
"item:voting:submit-value-option": {"selected": "[-]", "value": "-"}
"item:base-administration": false
"item:body": |
    If you project the desired code variables onto a multidimensional space and with a time dimension, where each variable has a assignment algebra you can imagine the input code causing movements to the output algebra for each variable 
    
    How do you measure that a solution gets nearer to the solution when you haven't planned what you could do
    
    It should be a multidimensional walk toward a solution that solves the programming problem.
    
    I want to generate the btree algorithm and other algorithms with this approach
    
    I should provide example inputs to output mappings and join the Data between the input and output and try recalculate the processing steps to go from one to the other but I am having problems deciding what the cost function looks like.
"item:source-date": ""
"item:permalink": "/method/139001/?l=ja"
"item:owner": "chronological"
"item:created": "2022-05-18T08:06:56.151167"
"item:ownerlink": "/user/198/chronological"
# <!-- LINKS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:link:add": "/admin/hlog/link/add/?parent=139001"
"item:link:items":
"item:project:items":

# <!-- COMMENTS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:comment:items":
- "id": "a-269001"
  "mtrans": |

    考えました。出力で生成されたコードをスーパーセットとして想像すると、コードのすべての行が出力コードのサブセットの一部になります。
    
    したがって、出力セットのサブセットを生成する何らかの方法が必要です。
    
    各セットは、回答を生成する順序付けられた命令のセットです。ブルートフォース検索は避けたいので、コード行を生成しようとするたびに出力に近づく必要があります。
    
    コードが何をすべきかについてのヒューリスティックを提供する必要があると思います。

  "text": |
    I had a thought. If you imagine the output generated code as a superset then every line of code is part of a subset of the output code.
    
    So you need some way of generating subsets of the output set.
    
    Each set is an ordered set of instructions that generate the answer. I want to avoid brute force search, every attempt of generating a line of code should get nearer to the output.
    
    I think we have to provide heuristics of approximately what the code should do.
  "owner": "chronological"
  "ownerlink": "/user/198/chronological"
  "permalink": "/method/139001/?l=ja#a-269001"
  "created": "2022-05-18T12:56:47.315685"
- "id": "a-270001"
  "mtrans": |

    出力構造をスキャンして、データの各関係のファクトを生成できます。
    
    ソースデータから宛先データへのパストラバーサルに基づいて、データが移動した場所を比較できます。パッチを生成します。
    
    これには、このデータへのこのオブジェクトへのポインタがあります。
    
    入力データ
    
    Node1はルートです
    
    Node1の子node2
    
    Node1の子node3
    
    例1
    
    ノードnode4を挿入します
    
    必要な出力データ
    
    Node1はルートです
    
    Node1の子node2
    
    Node1の子node3
    
    Node1の子node4
    
    パッチ
    
    node1の子に挿入されたNode4
    
    なぜnode1？理論。
    
    Node1はルートです
    
    node1、node4に対して演算子を実行します
    
    Len（node1.children）&amp;lt;=最大サイズ
    
    
    例2
    
    ノード分割-ノード5を挿入
    
    入力データ
    
    ルートノードはnode1です
    
    Node1の子node2
    
    Node1の子node3
    
    Node1の子node4
    
    必要なターゲットデータ
    
    ルートノードはnode3です
    
    Node3の子node1
    
    Node3の子node2
    
    Node3の子node4
    
    Node4の子node5
    
    これは、各ノード内に3つのアイテムしか含めることができないため、ノードの分割を表します。
    
    1つのノードが持つことができるノードは3つだけであるというルールをどのように学習しますか？
    
    ファクトのシステムに定数を挿入します
    
    MaxSizeは3です
    システムに演算子を挿入します
    Len（node.children）
    MaxSize
    ==等しい
    &amp;gt;=以上
    &amp;lt;=以下
    &amp;gt;より大きい
    &amp;lt;未満
    
    各演算子のすべての順列を実行して、パッチコマンドステップを実行することを決定します。
    
    パッチの説明
    Node1はルートノードではなくなりました
    Node3はルートノードです
    Node2の子はnode1です
    node1からnode4を削除します
    node4がnode1から削除されたのはなぜですか
    node4がnode3に追加されたのはなぜですか
    
    理論。どんな事実が真実でしたか。
    node1のプロパティをnode4と比較します
    最終的....
    Len（node1.children）== MaxSize
    node4をnode3に追加します
    なんで？
    理論。本当の事実
    Node4&amp;gt; = Node3 true
    &amp;gt; =はすべての例に当てはまりますか？それとももっと複雑ですか
    ツイスト操作。 1つは下降し、1つは上昇し、1つは下降し、もう1つは下降します。
    ルート=A
    Node1はAです
    新しいルート=B
    
    ツイスト操作は-
    ルート=B
    B.children = A
    
    
    そして、データがどこに移動するかを確認します。適切な場所に同じデータを使用して同じ構造を決定論的に作成するステップを生成する必要があります。
    
    パターンがあるはずです。したがって、通常、btree分割を行うために比較されるプロパティがオブジェクトにあります。
    
    したがって、btree内のオブジェクトの宛先を決定するフィールドまたは比較は最大で1つです。
    
    入力オブジェクトごとに条件ステートメントをランダムに生成できると思いました。
    
    パッチをウォークし、条件オブジェクトを挿入します。
    
    グラフ変換の問題です

  "text": |
    We can scan the output structure and generate facts of each relationship of data.
    
    We can compare where the data moved through based on a path traversal of source data to destination data. Generate a patch.
    
    This has a pointer to this object to this piece of data.
    
    Input data
    
    Node1 is root
    
    Node1 children node2
    
    Node1 children node3
    
    Example 1
    
    Insert a node node4
    
    Desired Output data
    
    Node1 is root
    
    Node1 children node2
    
    Node1 children node3
    
    Node1 children node4
    
    Patch
    
    Node4 inserted into node1 children
    
    Why node1? Theorise.
    
    Node1 is root
    
    Run operators against node1, node4
    
    Len(node1.children) <= Maxsize
    
    
    Example 2
    
    Node split - insert node5
    
    Input data
    
    Root node is node1
    
    Node1 children node2
    
    Node1 children node3
    
    Node1 children node4
    
    Desired target data
    
    Root node is node3
    
    Node3 children node1
    
    Node3 children node2
    
    Node3 children node4
    
    Node4 children node5
    
    This represents a node split as each node can only have 3 items inside it.
    
    How do we learn the rule that a node can only have 3 nodes?
    
    Insert a constant into the system of facts
    
    MaxSize is 3
    Insert operators in system
    Len(node.children)
    MaxSize
    == Equal to
    >= Greater than or equal to
    <= Less than or equal to
    > Greater than
    < Less than
    
    Run every permutation of each operator to decide to do patch command steps.
    
    Patch instructions
    Node1 is no longer root node
    Node3 is root node
    Node2 children is node1
    Remove node4 from node1
    Why was node4 removed from node1
    Why was node4 added to node3
    
    Theorise. What fact was true.
    Compare node1 properties to node4
    Eventually....
    Len(node1.children) == MaxSize
    Add node4 to node3
    Why?
    Theorise. What fact is true
    Node4 >= Node3 true
    Does >= hold for all examples? Or is it more complicated
    Twist operation. One goes down, one goes up and going down joins one going down.
    Root = A
    Node1 is A
    New root = B
    
    Twist operation is -
    Root = B
    B.children = A
    
    
    And see where the data moves. We need to generate the steps that deterministically creates the same structure with the same data in the right places.
    
    There shall be patterns. So there is usually a property in the object that is compared against to do a btree split.
    
    So there is at most one field or a comparison that determines the destination of the object in the btree.
    
    I thought we can randomly generate condition statements for each input object.
    
    Walk the patch and insert condition objects.
    
    It's a graph transformation problem
  "owner": "chronological"
  "ownerlink": "/user/198/chronological"
  "permalink": "/method/139001/?l=ja#a-270001"
  "created": "2022-05-18T15:04:07.215363"
"base:js": "/static/js/base.c7357c06cc89.js"
