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" ) |
しかし、画面下の「問題」には、いくつかコード上の問題が表示されています。
確かに、「expression」は定義されていますが、使われているところはないし、変数の型がいろいろあってない感じです。
自分のところの言語なので、もう少ししっかり変換してもらわないと…