乗法アンデルタ


9

値の「乗法デルタ」を定義してみましょう as:[a0,aN,]

[a1/a0,,ai+1/ai,,aN/aN1]

逆の演算、つまり「乗法アンデルタ」は、上記の演算が指定された値になるような値を返します。

与えられた値1、5、3、2乗算アンデルタ」操作の一般的なソリューションは次のとおりです。[1,5,3,2]

[a0,a01a1,a15a2,a23a3,a32a4]

特定のソリューションは、をゼロ以外の値に設定することで取得できます。たとえば、次のようなを設定します。a0a0:=1

[1,1,5,15,30]

チャレンジ

この課題に対するあなたの仕事は、上で定義された操作「乗法アンデルタ」を実装することです。

ルール

入力は次のとおりです。

  • ゼロ以外の値a0
  • 空ではないリスト/配列/ベクトル/ ...ゼロ以外の「乗法デルタ

出力は、最初の要素がであり、「乗法デルタ」が入力であるような値のリスト/配列/ベクトル/ ...です。a0

注:言語が負の整数をサポートしていない場合は、ゼロ以外正の整数に置き換えることができます。

テストケース

2 [21] -> [2,42]
1 [1,5,3,2] -> [1,1,5,15,30]
-1 [1,5,3,2] -> [-1,-1,-5,-15,-30]
7 [1,-5,3,2] -> [7,7,-35,-105,-210]
2 [-12,3,-17,1311] -> [2,-24,-72,1224,1604664]
-12 [7,-1,-12,4] -> [-12,-84,84,-1008,-4032]
1 [2,2,2,2,2,2,2,2] -> [1,2,4,8,16,32,64,128,256]

最初の項目がa₀である、長さ1 +デルタ数の単一のリストを取得できますか?
アダム

@アダム:それは既存の答えの状況を変えるので、私はそれに対してノーと言うつもりです。
ბიმო

回答:



9

APL(Dyalog)、3バイト

×\∊

オンラインでお試しください!

左側の数字と右側の配列を使用する必要がある場合:

-2 @ H.PWizに感謝

7 5 3バイト

×\,


2
⊣,⊢ちょうどすることができ,
H.PWiz

H.PWizのおかげで、@、私の暗黙のは非常に弱いです
Quintec

括弧は必要ありません。×\,関数に評価されます。
デニス

@Dennisんが、残念ながら動作するようには思えない
Quintec

いくつかの状況では不要なため、括弧を数える必要はありません。f←×\たとえば動作します。ところで、(-12 3 -17 1311)あなたのパーマリンクのはであるべきです(¯12 3 ¯17 1311)
デニス











1

バッチ、69バイト

@set/pa=
@echo %a%
@for %%d in (%*) do @set/aa*=%%d&call echo %%a%%

a0




1

05AB1E5 3 バイト

šηP

@BMOのおかげで-2バイト。

オンラインそれを試してみたり、すべてのテストケースを確認してください

説明:

š      # Prepend the (implicit) input-integer at the start of the (implicit) input-list
       #  i.e. -12 and [7,-1,-12,4] → ["-12",7,-1,-12,4]
 η     # Prefixes of this new list
       #  i.e. ["-12",7,-1,-12,4]
       #   → [["-12"],["-12",7],["-12",7,-1],["-12",7,-1,-12],["-12",7,-1,-12,4]]
  P    # Take the product of each inner list (and output implicitly)
       #  i.e. [["-12"],["-12",7],["-12",7,-1],["-12",7,-1,-12],["-12",7,-1,-12,4]]
       #   → [-12,-84,84,-1008,-4032]

1
いいえ、s他の入力を取得するためにありました。:) sはスワップでありš、リストの先頭に追加されます。いずれにせよ、-2に感謝
Kevin Cruijssen、2018年

1

Pyth、6バイト

*FR._s

ここでテストしてください!

または、7バイト:

.u*NYEQ

ここでテストしてください!

最初は入力をタプルとして受け取り、2番目は入力を2つの別々の行として受け取ります。

@Sokのおかげで、マッピングがうまくなり、1バイトを節約できました。


1
あなたは、ように、第2の溶液中のマップを実装することで、バイトを保存することができますRのように、*FR._s- デモ
ソック

@ソックニースキャッチ!私はMそれがうまくいくと仮定してみましたが、砂糖の解析に失敗しました-ほとんどの場合、解析がどのように行われたのか覚えていませんでしたF <pf2>
Steven H.

私は本当に入れ子にどのように理解していない、正直なところだろうMFL、およびRO):1が働いてまで仕事は、私はちょうど束を試してみました
ソック


1

PowerShell、29バイト

param($a,$b)$a;$b|%{($a*=$_)}

オンラインでお試しください!

これは、値を出力するだけで問題ないと想定しています。

> .\scratch.ps1 1 (1,5,3,2)
1
1
5
15
30

これで問題ない場合は、実際にリストを作成してから、同じように出力するtoStringにプッシュします。

param($a,$b)$c=,$a;$b|%{$c+=$_*$c[-1]};$c #41 bytes

ルールは次のとおりOutput is a list/array/vector/です。だから、最初は大丈夫です。
mazzy

1

MathGolf6 5バイト

\{\o*

オンラインでお試しください!

これは5バイト(\{\o*)かもしれないと思いますが\、入力を処理するときの命令は少しずれているようです。これは最新バージョンで修正されています。

説明:

\       Swap arguments, pushing both to stack
 {      Foreach loop over second argument
  \o    Output counter with newline
    *   Multiply counter by current element
        Implicitly output the last element

暗黙の入力による ``の処理を再設計しました。スタック上のアイテムを同じ方法で処理しますが、入力から1つではなく2つの要素をスタックにポップします。このチャレンジに役立つと思います。
maxb 2018年


0

チャコール、12バイト

IE⁺⟦N⟧AΠ⊞Oυι

オンラインでお試しください!リンクはコードの詳細バージョンです。説明:

    N           Input a₀
   ⟦ ⟧          Wrap in a list
      A         Input deltas as a list
  ⁺              Concatenate lists
 E              Map over elements
           ι    Current element
          υ     Predefined empty list variable
        ⊞O      Push and return updated list
       Π        Product
I               Cast to string
                Implicitly print each value on its own line

0

K(OK)、9バイト

{(*\)x,y}

オンラインでお試しください!

最初の数値をリストとして2番目の入力に結合し、乗算の連続した結果を返します

テストケース

以下のような関数の後に入力を入力し、実行します。TiOでこの言語の入力を適切に使用する方法がわからないためです。

{(*\)x,y}[1;1 5 3 2]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.