整数のリストを折りたたみます。これを行う手順は次のとおりです。リストの長さが偶数の場合、新しいリストのn番目の項目が古いリストのn番目の項目とn番目からn番目までの合計の長さの半分のリストを作成します古いリストの最後のアイテム。たとえば、リストがある場合
[1 2 3 4 5 6 7 8]
折ります
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
リストの長さが奇数の場合、折りたたむには、まず中間のアイテムを削除し、偶数のように折り、結果に中間のアイテムを追加します。
たとえば、リストがある場合
[1 2 3 4 5 6 7]
折ります
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
仕事
入力として整数のリストを取り、そのリストを折りたたんで出力するプログラムまたは関数を作成します。
これはコードゴルフの質問なので、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。
サンプル実装
以下f
は、折り畳みを実行する関数を定義するHaskellの実装です。
f(a:b@(_:_))=a+last b:f(init b)
f x=x