数字を合計し、数字を逆にした


26

0より大きい数を指定すると、すべての数字(1 .. n)が連結および反転された合計が出力され、それらが加算されます。たとえば、n = 6の場合:

1〜6の数字を連結したもの:

123456

逆に:

654321

これらを合計すると、777777になります。別の例はn = 11です。

1 2 3 4 5 6 7 8 9 10 11 > 1234567891011

そして

11 10 9 8 7 6 5 4 3 2 1 > 1110987654321

それらを一緒に追加すると、になり2345555545332ます。これはA078262としても知られています

最短のコードが勝ちます!



にバインドされnていますか、または任意の大きな整数をサポートする必要がありますか?
LegionMammal978

デフォルトは「bounded by max(256,yourlanguagesdefaultintegertypelimit)」だと思います。ただし、指定する必要があります。
電卓

@ LegionMammal978あなたの言語がサポートする限り。
ラマロ

重要なテストケース:10、を与える必要があります23333333231
アドナン

回答:


9

05AB1E、7バイト

LDRJsJ+

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

説明

LDRJsJ+

L        range from 1 .. input
 D       duplicate
  R      reverse
   JsJ   convert both arrays to strings
      +  add (coerces both strings to ints)

+ネストされた追加を行うリストでの設計の選択に非常に混乱しているのに対し、文字列ではintに変換してから追加します。しかし、ここでうまくいったと思います!:P
FryAmTheEggman

@FryAmTheEggman入れ子になった追加を削除します。それは...私はそれを実現してきた瞬間以来、便利ではありませんでした
アドナン・

3
Sheesh、PPCGを2時間放置し、私がいなくなったときに自分の名前をAqua Tartに変更します...ああ、PPCGユーザーの生活。
ETHproductions

6

ゼリー、9バイト

R,U$DF€ḌS

ライブコーディング 


2
それは私ですか、またはそのコードがいくつかのU $ Dを密かに盗むのを見ますか
-gcampbell


4

Pyth、12 10バイト

ssMjLk_BSQ

2バイトの@FryAmTheEggmanに感謝します!

Q入力が、あるSにそれを回す[1, 2, ..., input()]_B分岐することをオーバー_作成する(逆)[rng, rev(rng)]jLkそれを上にマッピングするjoinことによってk(「空の文字列」変数である)は、sMマップint上にこの得られた配列、及びs最終的に和を計算します。


4

JavaScript(ES6)、70 67 64バイト

a=>(z=[...Array(a)].map((b,c)=>c+1)).join``- -z.reverse().join``

入力を誤解して古いコードが作成されたため、要件を満たすように修正されました。


@TimmyD説明を追加しました。
Mwr247

@TimmyDああ!> _ <チャレンジに対する私の誤解はどのように...ええ、私はこれを修正しなければなりません。
Mwr247

@TimmyDオンラインに戻るのに十分な時間がかかった。これは修正され、それを理解してくれてありがとう。
Mwr247

別の回答で述べたように、これはパラメーターaが1〜12の場合にのみ機能します。これは本当に小さすぎます
-edc65

@ edc65 OPのコメントによると、これで十分です。
Mwr247

3

Python 3、74

DSMのおかげで6バイト節約されました。

エキサイティングなことは何もありません。範囲に参加してから、intに変換して追加します。

lambda x:sum(int(''.join(list(map(str,range(1,x+1)))[::i]))for i in(1,-1))

3

網膜、71

なぜなら、その仕事のために露骨に間違ったツールだからです。

.+
$*a:$&$*
+`^(a+)a\b(.*)\b1(1+)$
$1 $& $3
 ?(\w)+ ?
$#1
\d+:?
$&$*c
c

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

最大6個の入力に対して機能しますが、その後オンラインインタプリタはタイムアウトします。


1
最後の行を削除してに変更(c)+すると、74に短縮できcます。
daavko

@daavkoはい、もちろんありがとう!
デジタル外傷

また、$&$*c- > $*c\d+:?- > \d+何らかの理由でそれが、それが70だと作業を続け...
daavko


3

JavaScript(ES6)、67 66バイト

n=>(a=[...Array(n+1).keys()].slice(1)).join``- -a.reverse().join``

はい、それはスペースです。あー 少なくとも@Downgoatでバイトを節約できました。


1
あなたは最初+を削除し、バイトを保存するために+ +-> - -を行うことができます
-Downgoat

n =>(a = [... Array(n)]。map(_ => n-))。join- -a.reverse().join
edc65

注:単純なjs算術を使用すると、これは値1 .. 12
edc65


2

PowerShell、35バイト

param($a)+-join(1..$a)+-join($a..1)

入力をで範囲に変換してから..-joinそれらを一緒にして、合計します。

までの入力数で機能しますが138、を139与えるInfinity140、上記で驚くほど冗長なキャストエラーが発生します。

Cannot convert value "12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413
5136137138139140" to type "System.Int32". Error: "Value was either too large or too small for an Int32."


2

JavaScript(ES6)、99

これにより、桁ごとに数字が追加されるため、JavaScriptの53ビットの精度をはるかに超える数値を処理できます。

n=>eval("for(a=b=c=r='';n;a+=n--)b=n+b;for(i=a.length;i--;r=c%10+r)c=(c>9)-(-a[i]-b[i]);c>9?1+r:r")

テスト

f=n=>eval("for(a=b=c=r='';n;a+=n--)b=n+b;for(i=a.length;i--;r=c%10+r)c=(c>9)-(-a[i]-b[i]);c>9?1+r:r")

// Less golfed
U=n=>{
  for(a=b=c=r=''; n; --n)
      b=n+b, a+=n;
  for(i=a.length; i--; r = c%10+r) 
      c=(c>9)-(-a[i]-b[i]);
  return c>9? 1+r : r;
}

function test() {
  var n=+I.value
  R.textContent=f(n)
}  

test()
N: <input id=I value=11 oninput="test()"> -> <span id=R></span>


9では機能しないようです。また、c他の変数で初期化しないのはなぜですか。
ニール

あなたは私の賛成票を持っています。
ニール


2

MATL、13バイト

:tP2:"wVXvU]+

編集(2016年5月20日)言語の最近の変更により、リンクのコードはのXz代わりに使用さXvれます。

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

:                % range [1,2,...,n], where n is input
 tP              % duplicate and flip
   2:"     ]     % do this twice
      w          % swap
       V         % convert array of numbers to string with numbers and spaces
        Xv       % remove spaces
          U      % convert to number
            +    % add the two numbers

11または10では機能しません(ヒント:文字列に変換する前に範囲を逆にします。)
ママファンロール

@ӍѲꝆΛҐӍΛПҒЦꝆありがとう!修正済み
ルイスメンドー

すばらしいです!賛成票を持っている。
ママファンロール



1

Perl 6、25バイト

{([~] @_=1..$^n)+[R~] @_}
{
  (
    [~]           # reduce with the string concatenation infix op:
    @_ = 1 .. $^n # the range 1 to input ( also stored in @_ )
  )
  +               # add that to
  [R~] @_         # @_ reduced in reverse
}

使用法:

for 6, 11, 12 -> $n {
  say {([~] @_=1..$^n)+[R~] @_}( $n )
}
777777
2345555545332
244567776755433

私はあなたが行うことができると思う$nの代わりに$^n
andlrc

@ dev-nullブロックへの入力にしたいのではない。これ-> $n {はとは異なり$^nます。
ブラッドギルバートb2gills

1

R、34 60 64バイト

f=pryr::f;g=f(as.numeric(paste(x,collapse='')));f(g(1:n)+g(n:1))

pryrパッケージがインストールされていると仮定します。これはf、関数を作成するための速記として提供します。

編集は26バイトを追加しましたが、機能する関数を返しますが、まったく問題ではありません。

編集はさらに4バイトを追加して、strtoi(以前使用されていた)が返されたn = 10を超えるケースを処理 NA



1

Lua、53バイト

このプログラムはn、コマンドライン引数として使用します。

s=""r=s for i=1,arg[1]do r,s=i..r,s..i end print(s+r)

私は、小数部が0の数値を出力することは大丈夫だと想定しました(777777.0これは、luaで数値を出力するデフォルトの方法であるためです(整数と浮動小数点の区別はありません))


反転される文字列自体ではなく、数字です。コードはn> = 10で失敗します
。– Moop

@Moop 1バイトの価格で修正しました^^ '。コメントありがとうございます^^ '
かてんきょう

arg [1]の代わりに...を使用してさらに3を保存できます。rの逆連結に関する素晴らしい作業ですが、私の答えでは考えていませんでした。+1
ムープ

@Moop私はあなたの投稿を見ました、それをうまく使って、あなたが...そのように使うことができることさえ知りませんでした!私はオンラインコンパイラ以外のものを使用することはできず、それを処理することはできないので、私はしばらくこのままにします(テストして、それを入れる前に少し遊んでみたいです)回答:))
かてんきょう

1

Perl 5、37バイト

25バイト、プラス1 -pおよび11-MList::Gen

$_=<[.]1..$_>+<[R.]1..$_>

以前のソリューション、40バイト:39、プラス1 -p

@a=reverse@_=1..$_;$"=$\;$_="@a"+"@_"

1

Perl、36バイト

+1を含む -p

STDINで実行

perl -p reverse.pl <<< 6

reverse.pl

$_=eval join"",map{abs||"+"}-$_..$_

1

Dyalog APL、17バイト

+/⍎¨∊¨⍕¨¨x(⌽x←⍳⎕)

入力のプロンプト
の入力までの「列挙
x←xの店舗リスト
は逆のx
x(... )前付加は、元のリストにリストを反転し
⍕¨¨た文字列に変換各リストの各数値を
∊¨単一の文字列に文字列の各リストを作成する
⍎¨番号に各文字列を変換する
+/二つの数の和。


0

Mathematica、64バイト

Plus@@FromDigits/@#&[""<>ToString/@#&/@{#,Reverse@#}&[Range@#]]&

0

Retina、80バイト(ISO 8859-1エンコード)

'+
$0¶$0
+`^(('+)')
$2 $1
+`('('+))$
$1 $2
(')+( |$)?
$#1
(\d+)¶(\d+)
$1$*'$2$*'

IOは'、カウント文字として単項です。理論的には、実際にあなたが投げる整数をサポートしています...実際には...オンラインインタープリターは6(単項'''''')より大きいものを処理することを拒否します。

オンラインでお試しください!
オンラインでお試しください!(10進数のIO-91バイト)


0

𝔼𝕊𝕄𝕚𝕟、12文字/ 15バイト

⨭⟮⩤⁽1ï⟯⨝,Ⅰᴚ⨝

Try it here (Firefox only).

えー

説明

範囲を取り、[1,input]それを結合します。同じ範囲を取り、それを逆にしてから結合します。両方の範囲の合計が結果です。


0

ルビー、40文字

->n{eval (l=[*1..n])*''+?++l.reverse*''}

サンプル実行:

irb(main):001:0> ->n{eval (l=[*1..n])*''+?++l.reverse*''}[11]
=> 2345555545332

irb(main):002:0> ->n{eval (l=[*1..n])*''+?++l.reverse*''}[6]
=> 777777

0

C#、126バイト

using System.Linq;a=>{var b=Enumerable.Range(1,a);return long.Parse(string.Concat(b))+long.Parse(string.Concat(b.Reverse()));}

おそらくさらにゴルフすることができます。よくわからない。


0

Groovy、42 39文字

{[1..it,it..1]*.join()*.toLong().sum()}

サンプル実行:

groovy:000> ({[1..it,it..1]*.join()*.toLong().sum()})(11)
===> 2345555545332

groovy:000> ({[1..it,it..1]*.join()*.toLong().sum()})(6)
===> 777777
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.