プラスまたはマイナスのポリグロット!


14

提出には、数字のリスト(言語がサポートしているリスト形式、または複数の関数/コマンドラインパラメーターを使用)または数字以外の文字で区切られた文字列を使用する必要があり0123456789ます。1つの言語では、すべてを追加して合計を出力する必要があります。別の言語では、それらを順番に減算して出力する必要があります例:

12
5
7
2

ある言語ではを出力する必要26があり、別の言語ではを出力する必要があります-2。入力されるすべての数値はより小さい正の整数になることに注意してください100。指定された20数を超えることは決してないので、より大きい2000または小さいを出力することはありません-1899。質問は?以下にコメントしてください!


出力の末尾の空白は許可されますか?
ビジネス猫

同じ言語の2つの異なるバージョンを使用できますか?参照してくださいHyperNeutrinoによるPythonの2月3日回答
氏Xcoder

@ Mr.Xcoderは許可されています。
Programmer5000

2
@BetaDecayそれは問題だと思う、コードゴルフをチェックしてください!
Programmer5000

1
@ programmer5000そう[code-golf] -[polyglot]ですか?
エリックアウトゴルファー

回答:


14

ゼリー / 05AB1E、3バイト

00000000: c6 71 53                                         .qS

これは、提出されたプログラムの16進ダンプ(xxd)です。

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

ゼリー:合計

JellyはJellyコードページを使用するため、次の文字が表示されます。

İqS

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

使い方

İqS  Main link. Argument: A (array)

İ    (ignored)
 q   Unrecognized token. This breaks the link; nothing to the left is executed.
  S  Take the sum of A.

05AB1E:違い

05AB1EはWindows-1252を使用するため、次の文字が表示されます。

ÆqS

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

使い方

Æ     Take the difference of the input.
 q    Quit.
  S   (ignored)

22

Python 2 / 3、52バイト

lambda l:sum(l[:1]+[x*int(1-(1/2)*4)for x in l[1:]])

int(1-(1/2)*4)1Python 2で返されるのは、1/2最初にを評価し0、次にを評価するため0 * 4 = 0です。

int(1-(1/2)*4)-1Python 3で返されるのは、1/2最初にを評価し0.5、次にを評価するためint(0.5 * 4) = int(2.0) = 2です。


1
同じ言語を使用していますか、他のバージョンも許可されていますか?
氏Xcoder

3
@ Mr.Xcoderなぜそうなのかわかりませんが、C、Java、Python、およびBefungeの異なるバージョンを使用している他の言語を見てきました。ただし、メタについて質問するか、関連するメタ投稿を見つけることができるかどうかを確認します。
ハイパーニュートリノ

ただし、バージョンの変更による数学のトリックの適切な使用。
ミスターXcoder

1
@ Mr.Xcoderありがとう!ここでメタに関する質問をしました。すぐに回答が得られるといいのですが。
ハイパーニュートリノ

1
@ programmer5000整数除算。
ハイパーニュートリノ

14

CおよびC ++(両方ともGCCから)、81 75 73バイト

int c;int f(int*a,int l){auto d=.5;c=*a++;for(;--l;a++)c+=*a-4*d**a;c=c;}

配列と長さへのポインターを受け取ります。

説明: まだ@Steadyboxの説明を使用しています:p Cではauto d=.5、自動ストレージクラス(デフォルト)で整数変数を宣言し、その後0に初期化されますが、C ++ 11ではdoubleを宣言し、初期化されます0.5に。

C-プラス言語: オンラインで試してみてください!

C ++-マイナス言語: オンラインでお試しください!


11

05AB1E / ゼリー、5バイト

00000000: 4f71 7f5f 2f                             Oq._/

オンラインでお試しください!(05AB1E)
オンラインで試してみてください!(ゼリー)

05AB1E参照

Oq?_ /
説明:

Oq?_ / 1つの暗黙的な引数。
O最初の入力項目の合計を取ります。
 q終了します。
  ?_ /機能していません。

ゼリーは見る

Oq
_ /
説明:

_ /メインリンク。引数:z
_ / zの要素を順番に減算します。

Oqヘルパーリンク。機能しません。

これはJellyコードページを使用しますか?
Programmer5000

@ programmer5000これは、05AB1EにCP-1252を、JellyにJELLYを使用する生のバイトストリームです。したがって7f
エリックアウトゴルファー

ああ、気づかなかった!
Programmer5000

8

実際 / Jelly、4バイト

00000000: e4 81 5f 2f                                      .._/

これは、提出されたプログラムの16進ダンプ(xxd)です。オンラインで生の形でテストすることはできません。TIOはCP437エンコードをサポートしていません。

実際:合計

実際にはCP 437を使用しているため、次の文字が表示されます。

Σü_/

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

使い方

Σ     Take the sum on the input.
 ü    Print and empty the stack.
  _   Natural logarithm. Ignored since the stack is empty.
   /  Float division. Ignored since the stack is empty.

ゼリー:違い

JellyはJellyコードページを使用するため、次の文字が表示されます。

ỵ¹_/

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

使い方

ỵ¹_/  Main link. Argument: A (array)

ỵ     Unrecognized token. Splits the link.
 ¹    Identity; yield A.
  _/  Reduce (/) A by subtraction (_).

私はそれを次のように読みますactually, Jelly.:)
Programmer5000

未定義のキャラクターが:)のように振る舞うという事実を濫用しました
エリックアウトゴルファー

1
@EriktheOutgolfer多かれ少なかれ。正直に言うと、認識されないトークンが何をするのかはよくわかりません。
デニス


@ programmer5000ですjelly, actually
アルジュン


7

CJam / Jelly、6バイト

q~:-
S

CJam

q~    e# Read a list from input
:-    e# Reduce by subtraction
S     e# Push a space
      e# Implicit output

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

ゼリー

(JellyコードページではなくUTF-8を使用)

q~:-ヘルパーリンクです。呼び出されないため、実際に何をしてもかまいません。S配列の合計を計算します。

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


5
ジャムとゼリー。2つの類似したものを一緒に使用するのは理にかなっています。
mbomb007

1
これは無効です。Jellyには改行用に0x7fがあり、これには改行用に0x0aがあります。Jellyでは、これは実際にはと同じq~:-½Sです。残念ながら、修正(q~:-e#\x7fS)は大きくなります。オンラインでお試しください!(CJam)そしてオンライン試してください!、各自でテストするための独自のエンコーディングを使用します。
エリックアウトゴルファー

2
または、JellyにUTF-8エンコードを使用することもできます。これにより、これは現在のまま有効になりますが、指定してください。
エリックアウトゴルファー

5

JavaScript / Cubix、36バイト

//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)

それを試してみてください!

JavaScript関数は以下のスニペットを使用してテストできます。Cubixプログラムはここでテストできます

これはどのように作動しますか?

JavaScript

最初の行は2つのスラッシュで始まるため、JavaScriptへの行コメントです。したがって、JavaScriptはa=>eval(a.join`-`)入力として配列を受け取り、その間にマイナス記号を付けて結合し、それをコードとして実行する下線()のみを参照します。配列内のすべての要素の減算。

let f=
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)

console.log(f([1,2,3,4,5]))
console.log(f([3,1,4,1,5]))

キュービックス

Cubixには次のキューブが表示されます(Cubixはすべての空白を無視します)。

      / / .
      ! v +
      u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
      . . .
      . . .
      . . .

始まり

IPは3番目の行から始まり、東を指します。'I'コマンドからヒットし、入力から数値を取得し、スタックにプッシュします。次に、'^'sum-loopにリダイレクトされます。

サムループ

sumループの一部ではないすべての文字を削除し、no-ops('.')に置き換えました。IPは最初に2番目の行に到着し、東を指します。

      . . .
      ! v +
      u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

最初に、'!'コマンドは一番上の要素をチェックします。その場合0(つまり、入力の最後に到達した場合)、次の命令('v')が実行され、ループからIPが反映されます。まだ入力の最後に達していない場合は、上位2つのアイテムを一緒に追加します('+'、2番目のアイテムはそのポイントまでの合計で、上位のアイテムは新しい入力です)。次に、IPはキューブの別の面に'u'文字でラップされ、IPがUターンし、'I'北を指してコマンドを実行します(別の入力整数を読み取ります)。IPは上面に戻り'$'、削除命令をスキップ()します(';')を開始点に戻ってさらにuターンします。

終わり

IPがループ外に反映されると、次の文字が実行されます。

      . . .
      . v .
      . ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

これらの命令は、最上位要素(ゼロ)を削除してから、最上位要素(合計)を整数として出力します。その後、'@'コマンドに到達したため、プログラムは終了します。


4

Python 2および3、33バイト

lambda l,*r:l+sum(r)*(1/2>0 or-1)

入力を個別のパラメーターとして受け取ります。


Python 2.
Python 3。


lambda l,*r:l+sum(r)*(1/2-.5)*231バイトの場合
-ovs

@ovs私は意図的にフロートを返すことを避けました。許可されている場合*(1/2*4-1)は、あなたより1バイト少なくなります。
-Veedrac

値が正しい限り、戻り値の型は本当に重要ではないと思います
-ovs

4

JS(ES6)、CGL(CGLゴルフ言語)32 26バイト

 x=>eval(x.join`-`)
//-⨥

JSは減算を行い、CGLは加算を行います。

JS:

x=>eval(x.join`-`)

を使用して配列の各要素を減算する無名関数Array#reduce

//-⨥

コメント。

CGL

 x=>eval(x.join`-`)

最初の行のスペースのように見えるものは、実際には非改行スペースであり、CGLのコメントです。最初の行は無視されます。

//-⨥

/sが何もしません。-それは入力を指しているように、現在のスタックポインタをデクリメントします。現在のスタック(入力)を一緒に追加し、それを次のスタックにプッシュして、現在のスタックをインクリメントします。暗黙的に出力されます。


1
を使用してx=>eval(x.join`-`)、JSバージョンを短縮できます。5Bを保存
ルーク


@Adámあなたは正しい。修繕。
Programmer5000

4

JavaScript(ES6)/ QBasic、84 83バイト

'';f=x=>eval(x.join`+`)/*
INPUT a
FOR i=1 TO 2
i=0
INPUT n
a=a-n
PRINT a
NEXT i
'*/

コメントハックによる別のソリューション!

JavaScriptが合計を計算します。入力として数値を含む配列を受け取ります。functionとして出力しますreturn。のような関数を呼び出すことができますalert(f([10,20,30]))

QBasicは差を計算します。繰り返し入力を求めます。値を入力するとすぐに、ヒットした時間までに入力したすべての数値の差が出力され、Enter再度入力を求められます。すべてが終わるまで同じことを続けます。


どのように機能しますか?

QBasic(構造化BASICファミリーの言語。行番号は不要)では'、行末まで続くコメントの開始をマークします。一方、JavaScriptでは、文字列の開始をマークします。そのため、QBasicでは最初の行全体がコメントとしてマークされますが、JavaScriptではその行が実行されます(この行には、数字と/*、残りを隠すためにコメントを開始する末尾が含まれますJavaScriptインタープリターからのQBasicコードの)

2行目から2行目から最後の行までのコードには、すべての入力数の差を計算するQBasicコードが含まれています(コードは非常にわかりやすいです)。

最後の行にはが含まれています'*/'これにより、QBasicインタープリターは次のコードをコメントとして解釈しますが、JavaScriptでは、コメント(最初の行の終わりから開始された)の一部であるため、効果はありません。次のコード(*/)により、JavaScriptは最初の行で開始されたコメントを終了させますが、QBasicはコメントの一部であると見なすため、QBasicでは実行されません。


テストケース

JavaScript(追加):

'';f=x=>eval(x.join`+`);/*
INPUT a
FOR i=1 TO 2
i=0
INPUT n
a=a-n
PRINT a
NEXT i
'*/
console.log(f([12,5,7,2]));

QBasic(減算):

このウェブサイトにアクセスてください。次のコードをコピーして、テキストエディターに貼り付けます。

1 '';f=x=>eval(x.join`+`);/*
2 INPUT a
3 FOR i=1 TO 2
4 i=0
5 INPUT n
6 a=a-n
7 PRINT a
8 NEXT i
9 '*/

行番号が必要な理由は、私が言及したWebサイトが非構造化BASIC言語のみをサポートしているためです。そして、そのウェブサイトは、私が見つけた唯一のまともなオンラインBASICインタプリタです。ただし、ポストの上部にあるコード(行番号のないコード)を実行すると、構造化BASICをサポートするQBasicインタープリターで'、コメントスターターとして正常に動作するはずです(ただし、ほとんどの場合は機能しません)。


ノート

  • これが私の最初の投稿です!私はそれが良いものであることを願っています!
  • コードのQBasic部分は、ENDインタープリターが到達しないため必要ありません!(それは無限ループに永久に留まります;常により多くの入力を求めます。)

3

Brain-Flak / Brain-Flueue、20バイト

({}<([({{}})]){}>{})

オンラインでお試しください!(Brain-Flak)(プラス)

オンラインでお試しください!(脳フルーエ)(マイナス)

説明

Brain-FlakとBrain-Flueueの唯一の違いは、Brain-FlueueがBrain-Flakで使用される2つのスタック(last in first out)を2つのキュー(first in first out)に置き換えることです。当然、このプログラムはこの違いを使用します。

注釈付きコード

(                  ) Push the sum of...
 {}                   the first input,
   <            >     zero,
                 {}   the remaining sum (see below)
    ([      ])       Push the of below line
      ({{}})         Pop all the input sans first, push the sum
              {}     Pop (in Brain-Flak, this discards the negative sum,
                            in Brain-Flueue, the positive)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.