2つの数字を追加


44

入力: 2つの整数。10進整数が望ましいが、他の形式の数値も使用できます。これらは、標準入力のコードに、プログラムまたは関数の引数として、またはリストとして与えることができます。

出力:それらの合計。入力整数と同じ形式を出力整数に使用します。たとえば、入力5 16は出力につながります21

制限:標準的な抜け穴はありません。これはであり、最低バイト数で答えが勝ちます。

注:これはかなり簡単なはずですが、どのように実装できるのか興味があります。答えは完全なプログラムでも機能でも構いませんが、どちらかを特定してください。

テストケース:

1 2 -> 3
14 15 -> 29
7 9 -> 16
-1 8 -> 7
8 -9 -> -1
-8 -9 -> -17

またはCSVとして:

a,b,c
1,2,3
14,15,29
7,9,16
-1,8,7
8,-9,-1
-8,-9,-17

リーダーボード


26
これは非常に簡単ですが、たとえばHello Worldカタログよりも単純ではありません。整数を追加する機能がプログラミング言語の2つの要件の1つであることを考えると、適切に指定されていれば価値があると思います。
デニス

1
答えは、デフォルトとして先行するゼロを含む入力を取ることができますか?例えばは5 16として入力された005 016
FinW

@FinW確かに。8進数として解釈されない限り。
dkudriavtsev 16

回答:



66

Minecraft 1.10、221文字(非競合)

これが、Minecraftマップを作成するときに対処しなければならないことです。

余談:Minecraftで文字列を入力する方法はないので、プログラム自体に数字を入力させることで少しごまかしています。(Lorgon111のMinecraft Bingoのようなかなりの数のマップでは、数字を入力するためにコマンドをチャットにコピーアンドペーストする必要があるため、ある程度正当化できます。)

Block Labels MCEditフィルターをご利用いただきありがとうございます。

a

scoreboard objectives add a dummy
scoreboard players set m a 6
scoreboard players set n a 8
scoreboard players operation r a += m a
scoreboard players operation r a += n a
tellraw @a {"score":{"name":"r","objective":"a"}}

入力の難しさが原因で競合しない。このことでバイトをカウントする方法がわからない(ブライトシステムにはコマンドブロックの欠陥がある)。


4
これは断然最高です。すごい。
dkudriavtsev

入力をハードコーディングすることは有効だとは思いませんが、ハードコーディング以外の入力を取る方法があるかどうかを判断できるほどMinecraftのコマンドブロックについて十分に知りません。おそらく、私たちの居住者のMinecraftの専門家の一人はで重量を量ることができます。
MEGO

3
ええ、「このコマンドをコピーして貼り付けてください」以外に、MCにはテキスト入力はありません。/ tellrawを使用して数字キーパッドを使用できますが、/ tellrawのわいせつな厳格な構文のおかげで、500kbはもちろん、ほとんどすべてのゴルフで使用できます。代わりに、豚+牛、または赤い羊毛+青い羊毛など、世界で何かを数えることも考えられます。
四級

1
@quat私たちは通常、Minecraftで物事を数えるのにホッパーを使用しているので、それが進むべき道になると思います。これに対処する別の方法は、純粋なレッドストーンでもレバーを使用することで実行可能です。制限はなく、ビットはMinecraftで到達可能な最大の自然値であるため、2ビットの出力で2ビットを追加するだけです(可能性:0,1,2.2バイトを取り、 9ワイヤで出力されますが、ゴルフの音ははるかに少なくなります
。– Katenkyo


39

バイナリラムダ計算、4.125バイト

教会の数字としての入力と出力。

00000000 01011111 01100101 11101101 0

ラムダ計算は、λであるM。λ nは。λ F。λ Xm fn f x)。

ド・ブルーイン指数λλλλλ4 2(3 2 1)


ラムダ計算は、マッピング(関数)を簡潔に記述する方法です。

例えば、このタスクは、λのように書くことができるX。λ Yx + y

注意すべきことは、これは2つの引数を取るラムダ(関数)ではないということです。これは、実際にはネストされたラムダです。ただし、2つの引数を取るラムダのように動作するため、非公式にそのように記述することができます。すべてのラムダは、正式には1つの引数のみを取ります。

たとえば、このラムダを3と4に適用すると、

(λ X。λ YX + Y)3 4≡(λ Y 3 + Y)4≡3 + 4 = 7

したがって、最初のラムダは実際に別のラムダを返します。


教会の数字は、余分な記号をなくし、ラムダ記号と変数のみを残す方法です。

教会システムの各数値は、実際には、アイテムに関数が適用される回数を指定するラムダです。

関数をf、アイテムをxとします。

だから、数1はλに対応するF。λ Xf xはfxに1回だけ適用することを意味します。

たとえば、番号3はλfです。λ Xfff x))、これはfxに正確に3回適用することを意味します。


したがって、2つのチャーチ数字(たとえば、mn)を加算することは、fxm + n回に適用することと同じです。

これは、最初にfxn回適用し、次にfを結果のアイテムにm回適用することと同じであることがわかります。

例えば、2意味するf(f(x))3が意味するf(f(f(x)))ように、2 + 3は、あろうf(f(f(f(f(x)))))

fxn回適用するには、n f xが必要です。

mnは、非公式に2つの引数を取る関数として表示できます。

その後、我々は適用fは、この生じた項目、再度のm回:Mの FN F X)。

その後、我々はλ取得するために定型を再度追加メートルを。λ nは。λ F。λ Xm fn f x)。


次に、それをDe Bruijn indexに変換する必要があります

まず、各変数とラムダ宣言の間の「相対距離」をカウントします。たとえば、mは4ラムダ「ago」と宣言されているため、距離は4になります。同様に、nの距離は3、fの距離は2、xの距離は1です。

λ:だから、私たちは、この中間形式としてそれを書くメートル。λ nは。λ F。λ X。4 2(3 2 1)

次に、変数宣言を削除して、次のようにします。λλλλλ4 2(3 2 1)


次に、それをバイナリラムダ計算に変換します。

ルールは次のとおりです。

  • λはになり00ます。
  • m n(グループ化)はになり01 m nます。
  • 数値i1 i回+ 0になり、たとえば4はになり11110ます。

λλλλ4 2(3 2 1)

≡λλλλ 11110 1101110 110 10

λλλλ 11110 110 0101 111011010

λλλλ 0101 111101100101111011010

00 00 00 00 0101 111101100101 111011010

000000000101111101100101111011010


18
インタプリタ/コンパイラに渡す4.125バイトのソースファイルを見たいです。
マーティンエンダー


5
0.875バイトのソリューションをご覧ください。
リスター氏

3
メタコンセンサスでは、バイト単位でプログラムをファイルとして保存できない限り、切り上げる必要があります。
パベル

24

Common Lisp、15バイト

(+(read)(read))

2
プログラミングパズルとコードゴルフへようこそ!
デニス

私はCLispにはあまり慣れていませんが、スペースを削除することは可能ですか?(+(read)(read))
メゴ

@Megoそのとおりです、可能です。私もCommon Lispが初めてなので、知りませんでした。情報をありがとう!私は、ソース編集済み
Byeonggonリー

3
私たちはここで何かを学んだと思います!PPCGへようこそ!
メゴ

21

スタック猫、8 + 4 = 12バイト

]_:]_!<X

-mnフラグで実行します。オンラインでお試しください!

Stack Catsでのゴルフは非常に直感に反するため、上記のプログラムは数日間の総当たり攻撃で発見されました。比較のために、*(...)>テンプレートを使用した、より直感的な人間が作成したソリューションは2バイト長くなります

*(>-_:[:)>

とともに -ln代わりフラグを使用します(説明については、この投稿の最後を参照してください)。

説明

Stack Catsの入門書は次のとおりです。

  • Stack Catsは、スニペットのミラーが元のスニペットの効果を取り消す、リバーシブルな難解な言語です。また、プログラムはそれ自体の鏡像でなければなりません—必然的に、これは偶数長のプログラムが無操作または無限ループであり、すべての非自明な終了プログラムが奇数長であることを意味します(そして本質的に中央演算子の活用です)。
  • プログラムの半分は常に暗示されているため、半分は-mor -lフラグで省略できます。ここでは-mフラグが使用されているため、上記の半分のプログラムは実際にはに展開され]_:]_!<X>!_[:_[ます。
  • その名前が示すように、Stack Catsはスタックベースで、スタックはゼロで底なしです(つまり、空のスタックに対する操作は0を返します)。Stack Catsは実際にスタックのテープを使用します。たとえば<>それぞれ1つのスタックを左に、1つのスタックを右に移動します。
  • スタックの一番下のゼロは飲み込まれたり削除されたりします。
  • すべての入力は最初の入力スタックにプッシュされ、最初の入力が一番上になり、最後の入力の下に余分な-1が追加されます。出力は、現在のスタックの内容を使用して最後に行われます(オプションの下部の-1は無視されます)。-nは数値I / Oを示します。

そして、ここに拡張された完全なプログラムのトレースがあり]_:]_!<X>!_[:_[ます:

    Initial state (* denotes current stack):
      ... [] [-1 b a]* [] [] ...
]   Move one stack right, taking the top element with you
      ... [] [-1 b] [a]* [] ...
_   Reversible subtraction, performing [x y] -> [x x-y] (uses an implicit zero here)
      ... [] [-1 b] [-a]* [] ...
:   Swap top two
      ... [] [-1 b] [-a 0]* [] ...
]   Move one stack right, taking the top element with you
      ... [] [-1 b] [-a] []* ...
_   Reversible subtraction (0-0, so no-op here)
!   Bit flip top element, x -> -x-1
      ... [] [-1 b] [-a] [-1]* ...
<   Move one stack left
      ... [] [-1 b] [-a]* [-1] ...
X   Swap the stack to the left and right
      ... [] [-1] [-a]* [-1 b] ...
>   Move one stack right
      ... [] [-1] [-a] [-1 b]* ...
!   Bit flip
      ... [] [-1] [-a] [-1 -b-1]* ...
_   Reversible subtraction
      ... [] [-1] [-a] [-1 b]* ...
[   Move one stack left, taking the top element with you
      ... [] [-1] [-a b]* [-1] ...
:   Swap top two
      ... [] [-1] [b -a]* [-1] ...
_   Reversible subtraction
      ... [] [-1] [b a+b]* [-1] ...
[   Move one stack left, taking the top element with you
      ... [] [-1 a+b]* [b] [-1] ...

a+b次に、ベース-1が無視されて出力されます。この解決策に関する最も難しい部分は、出力スタック-1が一番下になければならないことです。そうでない場合、出力スタックは[-1]ベース-1を無視し、出力スタックは[0]ベースゼロを飲み込みます[2]たとえば、のスタックは2正常に出力されます)。


楽しみのために、同じ長さの関連ソリューションの完全なリストを以下に示します(リストは完全ではない場合があります)。

]_:]^!<X
]_:]_!<X
]_:]!^<X
]_:!]^<X
[_:[^!>X
[_:[_!>X
[_:[!^>X
[_:![^>X

*(>-_:[:)>解決策は長いですが、それが使用しているので、ライトに、より直感的な*(...)>テンプレートを。このテンプレートは<(...)*(...)>-lフラグと一緒に使用すると展開されます。つまり、次のことを意味します。

<       Move one stack left
(...)   Loop - enter if the top is positive and exit when the top is next positive again
        Since the stack to the left is initially empty, this is a no-op (top is 0)
*       XOR with 1 - top of stack is now 1
(...)   Another loop, this time actually run
>       Move one stack right

そのため、 *(...)>テンプレートは、最初のループはスキップされますが、2番目のループは実行されることを意味します。これにより、プログラムの残りの半分のループの影響を心配する必要がないため、より簡単なプログラミングが可能になります。

この場合、ループの内側は次のとおりです。

>       Move one stack right, to the input stack
-       Negate top, [-1 b a] -> [-1 b -a]
_       Reversible subtraction, [-1 b -a] -> [-1 b a+b]
:       Swap top two, [-1 b a+b] -> [-1 a+b b]
[       Move one stack left, taking top of stack with you (removing the top b)
:       Swap top two, putting the 1 on this stack on top again

次に>、テンプレートの最後の部分a+bが入力スタックに戻り、出力されます。


19

Brain-flak、6バイト

({}{})

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

Brain-flakは非常に興味深い言語であり、2つの大きな制限があります。

  1. 有効な文字は角括弧のみです。つまり、次の文字のいずれかです。

    (){}[]<>
    
  2. 括弧のすべてのセットは完全に一致する必要があります。一致しない場合、プログラムは無効です。

それらの間に何もないブラケットのセットは、「nilad」と呼ばれます。niladは特定の数値を作成し、これらのすべてのniladが互いに加算されます。それらの間に何かがある括弧のセットは、「モナド」と呼ばれます。モナドは、数値引数を取る関数です。そのため、モナド内の括弧が評価され、それがモナドの引数になります。より具体的な例を次に示します。

() niladは以下の脳非難コードので、1に等しいです。

()()()

3に評価されます。() モナドはその内部の値をグローバルスタックにプッシュします。だから、次の

(()()())

3をプッシュします{}。niladは、スタックの一番上に値をポップします。連続したniladが常に追加さ{}れるため、スタック上のすべての上位要素の合計の文字列。だから私のコードは本質的に:

push(pop() + pop())

15

Minecraft 1.10.x、924 512バイト

@ quatに感謝ブライトカウントを48ポイント、バイトカウントを412減らしたます。

申し分なく、この答えからいくつかのアイデアを取り、独自のバージョンを作成しました。ただし、これは非負の入力を受け入れることができる点を除きます。バージョンは、構造ブロック形式でここにあります。

group

(新しいバージョンはちょっと退屈に見えます)

他の回答と同様のコマンド:

scoreboard objectives add a dummy
execute @e[type=Pig] ~ ~ ~ scoreboard players add m a 1
execute @e[type=Cow] ~ ~ ~ scoreboard players add n a 1
scoreboard players operation n a += m a
tellraw @a {"score":{"name":"n","objective":"a"}}

数字を入力するには、多数の牛と豚をスポーンします。牛は値「n」を表し、豚は値「m」を表します。コマンドブロックシステムは、牛と豚を徐々に殺し、必要に応じて値を割り当てます。

この答えは、あなたが自然に発生する牛や豚のいない世界にいて、「n」と「m」に格納されている値が実行ごとにクリアされることを前提としています。


負の整数の場合、「neganimals」として他の2種類の動物を使用できます。たとえば、5頭の馬は-5を表します。
メゴ

@Megoそして、それは4回の入力ではなく、2だろう
アディソンCrumpの

まだ2つの入力になります-負の数に2の補数を使用するのと同じです。わずかに異なる形式ですが、それでも1つの入力です。少なくとも、それは私の2セントです。
メゴ

を使用してブロックを節約できるexecute @e[type=Pig] ~ ~ ~ scoreboard players add m a 1場合があるため、クロックの形式は必要ありません。
クアット

@quatおお。いいね
アディソンクランプ

14

網膜、42バイト

\d+
$*
T`1p`-_` |-1+
+`.\b.

^(-)?.*
$1$.&

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

説明

単項式での数値の追加は世界で最も簡単なことですが、負の数値を導入すると、面倒になります...

\d+
$*

まず、数値を単項に変換します。これは、各番号をに一致させ\d+、それをに置き換えることで行われ$*ます。これは、Retina固有の置換機能です。完全な構文はでcount$*characterあり、のcountコピーを挿入しますcharacter。それらの両方がここでは省略することができるcountデフォルトに$&(すなわち、一致自体)とcharacterデフォルトに1。したがって、入力ごとに1 nを取得しnますが、そこには潜在的なマイナス記号とスペース区切り記号がまだあります。たとえば、入力8 -5は以下を提供します。

11111111 -11111

負の数を処理するために、別の-1数字を使用するのが最も簡単です。-そのために使用します。

T`1p`-_` |-1+

この段階では2つのことを行います。スペース、先頭のマイナス記号を取り除き1、マイナス記号の後のsを-自分自身に変えます。これは、マッチング |-1+(つまり、スペースまたは負の数)で行われ、音訳を実行します。文字変換はからに1pなり-_ますが、ここでpはすべての印刷可能なASCII文字に展開され、_削除を意味します。したがって1、それらの一致のsは-sおよびマイナスに変わり、スペースは削除されます。例は次のようになります。

11111111-----
+`.\b.

このステージは、入力に1つの正の数と1つの負の数がある場合を処理します。その場合、文字列に1sと-sがあり、キャンセルする必要があります。これは、2つの文字の間に単語境界を付けて一致させ(1sは単語文字と見なされ、そうで-はないため)、一致を何も置き換えないことによって行われます。の+文字列が変化しなくなるまで網膜を繰り返し、これを行うように指示します。

今、私たちはと残されているだけ 1のかだけ -です。

^(-)?.*
$1$.&

これを10進数に戻すには、入力全体を一致させますが、可能であればa -をgroupにキャプチャし1ます。グループを書き戻し1(a -を負の数に追加する)、次に一致の長さを書き戻します$.&(Retina固有の置換機能も)。


2
これは非常に賢い方法です。
メゴ

rangeRetinaに簡単に実装できる方法があった場合のみ。私は数回試しましたが、ネガは苦痛です。
mbomb007

この言語で2つの数字を追加するには40バイト以上かかりますか?
-dkudriavtsev

2
@DmitryKudriavtsevも、網膜は...数字の概念がありません
マーティン・エンダー

@DmitryKudriavtsev、それは単なる整数です
。...-msh210

14

ドミノ、38,000バイトまたは37タイル

これは、Tabletop Simulatorで作成されます。ここにビデオがあり、ここにファイルがあります。これは標準の半加算器でありand2^1場所の値のxorゲートと場所の値のゲートで構成さ2^0れます。

enter image description here

詳細

  • I / O
    • 開始 -これは明確にするために含まれており(合計にはカウントされません)、関数を「呼び出し」または「実行」します。[Yellow]が入力された後、「押される」必要があります。
    • 入力A-これはわかりやすくするために含まれており(合計にはカウントされません)、[Green]の1場合は「押されて」、押されていないことを示します。0
    • 入力B-これはわかりやすくするために含まれており(合計にはカウントされません)、[青]の1場合は「押され」、押されていないことを示します。0
    • 出力 -これは合計にカウントされます。これらのドミノは合計を宣言します。左が2^1、右が2^0 [黒]です。
  • 押す
    • 入力を行うか、チェーンを開始するには、金属大理石をスポーンします
    • 揚力を設定します 100%
    • 目的のドミノの上に大理石を持ち上げます
    • 大理石を落とす

1
...どのように?
dkudriavtsev

4
@Mendeleev バイナリロジックゲートがすべて揃ったら、それ以外はすべてxDになります。
NonlinearFruit

10

Haskell、3バイト

(+)

括弧は接頭辞関数である必要があるため、ここにあります。これは、+関数のセクションを取得するのと同じですが、引数は適用されません。また、適切に実装されたベクター、行列、複素数、浮動小数点数、倍精度数、有理数、そしてもちろん整数など、幅広いタイプで機能します。

これはHaskellであるため、タイプレベルで行う方法を次に示します。これは、実行時ではなくコンパイル時に行われます。

-- This *type* represents Zero
data Zero
-- This *type* represents any other number by saying what number it is a successor to.
-- For example: One is (Succ Zero) and Two is (Succ (Succ Zero))
data Succ a

-- a + b = c, if you have a and b, you can find c, and if you have a and c you can find b (This gives subtraction automatically!)
class Add a b c | a b -> c, a c -> b

-- 0 + n = n 
instance Add Zero n n
-- If (a + b = c) then ((a + 1) + b = (c + 1))
instance (Add a b c) => Add (Succ a) b (Succ c)

Haskell Wikiから適合したコード


3
おもしろい事実:これはチェダーを含むポリグロット:D
Downgoat

10

Mathematica、4 2バイト

Tr

取り消し線4は、通常の4です... Tr 1次元リストに適用されると、リストの要素の合計がかかります。


9

dc、2バイト

+f

スタックの上位2つのアイテム(以前はから取得stdin)を追加し、スタックの内容をにダンプしますstdout

編集:さらに検討すると、目的のI / O動作に応じて、これを実装する方法がいくつかあるようです。

+        # adds top two items and pushes on stack
+n       # adds top two and prints it, no newline, popping it from stack
+dn      # ditto, except leaves result on stack
??+      # takes two inputs from stdin before adding, leaving sum on stack

合計の最も完全な形式は次のようになります。

??+p     # takes two inputs, adds, 'peeks'
         #  (prints top value with newline and leaves result on stack)

待つ!スペースで区切って、同じ行に2つの数字を入力できます!これにより、次のことができます。

?+p

私は、最初の例を使用する方法を見ることができない+fdc -e "?+p"ここで[OK]を動作します。
ジェイセン

1
@Jasenこの+fバージョンは、スタックにすでに(正確に2つの)数値を配置している場合に機能します。dcのI / Oがstd(in|out)スタックなのか、それともスタックなのかは本当に知りませんでした。振り返ってみると、それは投稿の一番上に置くための最も賢明なオプションではありませんでした。:/
ジョー

私の知る限り、ルールではスタックは問題ないと言われています
-Jasen

9

シェークスピアプログラミング言語155 152バイト

.
Ajax,.
Ford,.
Act I:.
Scene I:.
[Enter Ajax and Ford]
Ajax:
Listen to thy heart
Ford:
Listen to THY heart!You is sum you and I.Open thy heart
[Exeunt]

ゴルフをしていない:

Summing Two Numbers in Verona.

Romeo, a numerical man.
Juliet, his lover and numerical counterpart.

Act I: In which Italian addition is performed.

Scene I: In which our two young lovers have a short chat.

[Enter Romeo and Juliet]

Romeo:
  Listen to thy heart.

Juliet:
  Listen to THY heart! Thou art the sum of thyself and I. Open thy heart.

[Exeunt]

私はこれをコンパイルするためにdrsam94のSPLコンパイラを使用しています。テストする:

$ python splc.py sum.spl > sum.c
$ gcc sum.c -o sum.exe
$ echo -e "5\n16" | ./sum
21

8

Brachylog、2バイト

+.

入力として2つの数値を含むリストが必要です。

または、次の答えが必要な場合STDOUT

+w


7

PHP、20バイト

今回は驚くほど短い:

<?=array_sum($argv);

次のようなコマンドラインから実行します。

$ php sum.php 1 2

あなたのスクリプトも受け入れるphp sum.php 1 2 3 4 5 6ので、それが大丈夫かどうかは100%確信できません。
timmyRS

@timmyRS送信は、特定の入力形式(2つの整数)で機能する必要があります。他の入力も処理すべきではないと思います。
insertusernamehere

ソースファイル名が数字で始まる場合はどうなりますか?:)
アレックスハワンスキー

@AlexHowansky Pssssssssst –誰にも言わないでください。;)これは、ファイルから実行する場合の癖です。-rフラグを使用して実行することはできますが、問題はもうありません。
insertusernamehere

7

チェダー、3バイト

(+)

これは、「機能化された演算子」と呼ばれるチェダーのクールな機能です。このアイデアの功績は@CᴏɴᴏʀO'Bʀɪᴇɴにあります。

以下に、機能化された演算子の例を示します。

(+)(1,2) // 3
(/)(6,2) // 3
(-)(5)   // -5


6

ジオメトリダッシュ-15オブジェクト

ついにやり遂げた。
15個のオブジェクトはそれほど多くはありませんが、これを行うのは依然として悪夢でした(特に負の数のため)。

enter image description here

これを再現するには、ここに15枚の画像を挿入する必要があるため、レベルをアップロードしました。レベルIDは5216804です。説明には実行方法が示されており、コピー可能であるためコピーできます。

説明:

左上のトリガー(Instant Count 2)は、最初の加数が0かどうかを確認しました。0だった場合、2番目の加数が正か負かを確認しました。正の場合、2番目の加数から合計(BFスタイル、ループを使用)に値を転送し、負の場合、同じことを行います。

2番目の加数が正か負かを確認する必要があるのは、2番目の加数から1を減算して合計に1を加算するか、2番目の加数に1を加算して合計から1を減算する必要があるためです。

最初の加数がゼロでない場合、上記のプロセスを使用して正または負のどちらであるかをテストします。whileループで1回繰り返した後、最初の加数がゼロかどうかをテストし、ゼロの場合は説明の最初に説明したプロセスを実行します。

Geometry DashはBFに非常に似ているため、これからBFソリューションを作成できます。


5

MATL、1バイト

s

2つの整数の配列を入力として受け入れ、それらを合計します。の単純なプログラム+も機能しますが、それは他の言語ですでに示されています。

オンラインで試す


5

Perl 5.10、8バイト

追加する2つの番号は、この1つが機能するために2行に分かれている必要があります。

say<>+<>

こちらをお試しください。

同じ行に入力があるもの(-aフラグの場合は14 + 1バイト

say$F[0]+$F[1]

ここで試してみてください!

同じ行に入力があるもの(-aフラグの場合は19 + 1バイト

map{$s+=$_}@F;say$s

こちらをお試しください。

もう1つは、配列のデフォルトのセパレータを変更することです(-aフラグの場合19 + 1バイト

$"="+";say eval"@F"

こちらをお試しください!


2
ちょっと、もう1つの良い例(これがカタログチャレンジになる場合)は、この投稿でDennisが概説した方法です:codegolf.stackexchange.com/q/32884(ab)-pフラグを使用します。
ドムヘイスティングス

の代わりにsay$F[0]+$F[1]say pop()+pop(Strawberry 5.20.2ででテスト済み-E)動作し、バイトを節約します。
msh210



5

PowerShell v2 +、17バイト

$args-join'+'|iex

入力を2つの個別のコマンドライン引数として受け取り、特別な配列に事前に入力し$argsます。我々が持つ文字列を形成-joinしてそれらを一緒に連結することによって、オペレータを+パイプに文字列その次に、中央にInvoke-Expression(と同様eval)。


@DarthTwonに感謝します。このような最小限のプログラムを扱うとき、すべて同じバイト数で入力を受け取る方法は複数あります。

$args[0]+$args[1]
param($a,$b)$a+$b

PowerShellは、柔軟性がないとは限りません。


1
P代替の答えを::ええ、私はここであなたをストーカーだ$args[0]+$args[1]param($a,$b)$a+$b
ThePoShWolf

5

> <>7 6 3バイト

+n;

オンライン通訳

または、-vフラグを指定してTIOで試してください。

オンラインで試す


この質問で関数を定義できるので、単純な+もので十分だと思います。スタックから2つの数値をポップし、それらの加算結果をスタックに戻します。-v関数呼び出しの前に数値を読み取ることができるため、コストも回避できます。
アーロン

1
@Aaron:はい。しかし、その解決策はすでに他のいくつかの言語で公開されているため、これを完全なプログラムとして扱います。
エミグナ

1
vフラグは最大+1バイトになると思いましたが、どちらの場合でもfishlanguage.comインタープリターを使用でき、合計は3バイトになります(-vは不要です)。
-redstarcoder

@redstarcoder:誰もが常に、魚の場合は3バイト(他のすべての言語の場合は1バイト)としてフラグを指定します。なぜ違うのかはわかりませんが、それは正当な理由によるものだと思います。
エミグナ

とにかく、fishlanguage.comインタープリターを使用するだけであれば、フラグは必要ありません。メタへのリンクはありますか?初期スタックで整数を使用するために追加されたバイトを取得するプログラムは見ていません(私もやったことがあります)。
-redstarcoder

5

C、35バイト

s(x,y){return y?s(x^y,(x&y)<<1):x;}

ここで行ったことは、ブール演算子または算術演算子を使用せずに定義された加算です。これにより、xが 'xor'で合計ビットに、yが 'and'でキャリービットがキャリーがなくなるまで再帰的になります。これは、無料版です。

int sum(int x,int y){
    if(y==0){
        //anything plus 0 is itself
        return x;
    }
    //if it makes you happier imagine there's an else here
    int sumBits=x^y;
    int carryBits=(x&y)<<1;
    return sum(sumBits,carryBits);
}

なぜ直接追加しないのですか?
エソランジングフルーツ

私は退屈であることがわかりました、完全にゴルフされたバージョンは些細なことです。
ビジャン

「すべての答えは、より良いスコアに到達するための努力を示す必要があります。たとえば、ゴルフチャレンジのコードに対する答えは、可能な限り短くする必要があります(選択した言語の制約内で)。」(codegolf.meta.stackexchange.com/a/7073/61384から)
Esolanging Fruit

2
明らかに、数字を追加することだけを考えたので、代わりの制約の下でのみ、数字を短くするように努力しました。これは型にはまらない質問なので、型にはまらない答えに値すると思います。ルールごとにそのルールに従っているので、誰かがすでに短い答えを出しているのなら、答えを出す理由はありません。20バイトのPythonソリューションを作成し、誰かがすでに4バイトバージョンを使用している場合、コピーアンドペーストの方法がわからないことを証明しています。私たちは独創性を重視しているため、人々は20バイトのソリューションを提案しました。
ビジャン

1
選択している言語で競争力があることを意味します。しかし、メタを読んでいるので、あなたの答えが無効であると主張することはできないようです(「答えはゴルファーのものが存在する場合でも、任意のアルゴリズムを実装するかもしれません」)。
エソランジングフルーツ

4

MATLAB、4バイト

@LeakyNunのおかげで1バイト削除

@sum

これは、配列を取り合計を与える匿名関数です。使用例:

>> f = @sum
f = 
    @sum
>> f([3 4])
ans =
     7

どうsum
リーキー修道女

@LeakyNunありがとう、いいね!
ルイスメンドー

43バイト?xD BTW:完全なプログラムまたは関数が必要だと思ったので@sum、有効な答えだけだと思います。または、別のメタコンセンサスがありますか?
-flawr

@flawrはい、あると思います。しかし、私はそれを見つけることができませんでした
ルイスメンドー

4
うーん、XDを43バイトから4バイトに減らすのを手伝いました
-flawr

4

GoLScript、1バイト(非競合)

K

スタックの上位2桁を追加します。それでおしまい。

さて、それらスタックにプッシュする方法はわかりません。私はそれが可能だとは思わない.. 咳@CᴏɴᴏʀO'Bʀɪᴇɴ咳


Explanation soon to be coming.-ライカー16
-MD XF

Game of Lifeの言語の場合は+1。
高放射能

4

シェークスピアプログラミング言語(SPL)、137 135バイト

完全なプログラム、ゴルフ:

.
A.
B.
Act I
Scene I
[Enter A and B]
A: Listen to your heart!
B: Listen to your heart! You are the sum of me and you. Open your heart! 

そして簡単な説明:

----
.                                 <- Title, everything before the first 
                                     full stop is considered as the tittle and treated as a comment
----
A.                                <- Dramatis personae. Here are introduced the characters in the play.
                                     |Characters are treated as variables.   
B.                                <--
----
Act I                             <- Acts and scenes are used to divide a program into smaller
                                     chunks in order to be able to refer to them later.
                                     |
Scene I                           <--
----
[Enter A and B]                   <- Characters on stage in the current scene, which are the              
                                     variables the program will have access to.
----
A: Listen to your heart!          <- Line of code. All of them have the same structure
                                     Variable: code. In this case, the concrete sentence
                                    "Listen to your heart!" reads an input number and stores it
                                     on the character (variable) refered to.
B: Listen to your heart!          <- Same as above 
   You are the sum of me and you. <- Sum the values of itself and the caharacter (variable)
                                     refered to.
   Open your heart!               <- Output the value of the character (value) refered to.

実際にこれが最短かどうかはわかりません。詳細については、公式ページを確認してください。

編集1::Act Iを削除しScene I、ローマ数字の後のすべてが無視されるように見えるため、2バイトを節約します。


5
これは無効です。キャラクターはシェークスピアの演劇からのものでなければならず、:sはそこにいなければなりません。また、説明のために各文字の名前の後にカンマが必要です。
オリバーNi

4

x86_32マシンコード、2バイト

08048540 <add7>:
 8048540:   01 c8                   add    %ecx,%eax

2つの値が既にecxおよびeaxレジスタにあると仮定して、add命令を実行すると、2つのレジスタの値が加算され、結果がデスティネーションレジスタに格納されます。

Cおよびインラインアセンブリ記述された完全なプログラムは、こちらでご覧いただけます。ラッパーをCで記述すると、入力の提供とテストの実行が容易になりますが、実際の追加機能はこれらの2バイトに減らすことができます。


3
これは関数ではなく、単なるスニペットです。ret命令も必要です(1バイト)。そして、それeaxは引数渡しレジスタとして使用されるカスタム呼び出し規約を想定しています。(Irvine32 asmティーチングライブラリはそれを行いますが、戻り値レジスタr0が最初の引数渡しレジスタでもあるARMとは異なり、x86-32またはx86-64の標準呼び出し規則は行いません。)カスタム呼び出し規則は、ただし、asmは機能するため、Microsoft またはgccの場合は3バイトlea (%ecx, %edx), %eax+ 1バイトに変更する必要はありません。ret__fastcall-mregparm
ピーターコーデス

1
ただし、stack-args呼び出し規約にとっては興味深い課題です。 pop1バイトのみですが、esp相対アドレス指定モードにはSIBバイトが必要です。したがって、呼び出し元ポップ呼び出し規約はpop %ecx(リターンアドレス)、pop %eax / pop %edx/ add %edx, %eax(2バイト)/ jmp *%ecx(2バイト)=合計7バイト。vs. mov 4(%esp), %eax(4B)/ add 8(%esp), %eax(4B)/ ret= 9バイト、またはを使用してその呼び出し元ポップバージョンの場合は11バイトを使用ret imm16します。これは、ESPをベースとするSIBの追加の1バイト、および各insnのdisp8の追加の1バイトです。
ピーターコーデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.