BigQueryでフィボナッチ数列を継ぎ足すUDFを作成する(クイズ形式)
概要
ネタがないので柔らかめな内容。興味のある方はクイズだと思って解いてみてください。
問題
ARRAYを受け取ったら、ARRAYの最後の要素と、最後から1つ前の要素を合計し、それを継ぎ足したARRAYを作るようなUDFを作ってください。UDFについてはこちらを参照。
cloud.google.com
javaScriptでUDFを書くと任意の長さのフィボナッチ数列も作成出来ますが、ほぼjavaScriptの問題になるのでそれはしない。
例
[1,1,2,3,5] を引数として渡されたら、3+5を計算して、[1,1,2,3,5,8] を返す。
今回のキーワード
- UDF
- ARRAYを操作する関数に慣れる
回答フォーマット
CREATE TEMP FUNCTION fib(x ARRAY<INT64>) AS ( -------------------------------- --ここにUDFを書いてください-- -------------------------------- ); SELECT --コメントの値が帰ってくれば正解です fib([1,1]), --[1,1,2] fib(fib([1,1])), --[1,1,2,3] fib(fib(fib(fib(fib([1,1]))))) --[1,1,2,3,5,8,13]
回答例はページ下部にあります。
回答例
CREATE TEMP FUNCTION fib(x ARRAY<INT64>) AS ( ARRAY_CONCAT(x,[(x[ORDINAL(ARRAY_LENGTH(x))]) +x[ORDINAL(ARRAY_LENGTH(x) - 1)]]) ); SELECT fib([1,1]), --[1,1,2] fib(fib([1,1])), --[1,1,2,3] fib(fib(fib(fib(fib([1,1]))))) --[1,1,2,3,5,8,13]
以上です。