技術屋にゃん兵衛のてくてくらぼ

気の向くままソフトについて書いてます。バリバリエンジニアではないのであくまでも初心者目線で。

BardでWolfram言語のコードをGo言語に変換できるか

BardでWolfram言語のコードをGo言語に変換できるか

 

前回はChatGPTを使いましたが、Go言語の本家である、Google Bardだったらもっといいコードが出てこないかな、とひらめきました。

(以下、入力部分は「Wolframドキュメントセンター」より引用、応答部分は「Bard」からの応答です)

 

入力>

Convert the following Mathematica code to Go language:

 

おもしろい結果が返ってきました。

「実際のMathematicaのコードを見ないと直接変換できないよ」と。

対話形式なのに。。。

 

出力>

Unfortunately, I can't directly convert the Mathematica code to Go language without seeing the actual code itself. Please provide the Mathematica code you want me to convert, and I'll do my best to translate it into equivalent Go code.

 

なので、実際のコードを入れて次のように聞きました。

 

入力>

Convert the following Mathematica code to Go language:

Coefficient[(x + 1)^3, x, 2]

 

こんどは返ってきましたよ。

 

出力>

package main

 

import (

              "fmt"

)

 

func main() {

              // Define the variable x

              x := 2

 

              // Expand (x + 1)^3

              expression := math.Pow(x+1, 3)

 

              // Extract the coefficient of x^2

              coefficient := BinomialCoefficient(3, 2) * math.Pow(x, 2)

 

              // Print the coefficient

              fmt.Println("Coefficient of x^2 in (x + 1)^3:", coefficient)

}

 

// Function to calculate the binomial coefficient

func BinomialCoefficient(n, k int) int {

              if n < k || k < 0 {

                            return 0

              }

              result := 1

              for i := 0; i < k; i++ {

                            result = result * (n - i) / (i + 1)

              }

              return result

}

 

コードの説明も書いてあります。

目につく違いとしては、こちらは「fmt」しかインポートしていないのと、おそらく「math/big」をインポートしていないのと、forループを回すというところでしょうか。

 

で、これをVisual Studio Codeにコピーして保存しようとすると「math」のインポートが自動的に追加されました。やっぱいるんだよね。

import (

              "fmt"

              "math"

)

 

しかし、画面下の「問題」には、いくつかコード上の問題が表示されています。

Bardで変換したコードのエラー

 

確かに、「expression」は定義されていますが、使われているところはないし、変数の型がいろいろあってない感じです。

 

自分のところの言語なので、もう少ししっかり変換してもらわないと…