Cộng các chữ số và các chữ số đảo ngược


26

Cho một số> 0, xuất tổng với tất cả các chữ số (1 .. n) được nối và đảo ngược và thêm chúng lên. Ví dụ: với n = 6:

Các số từ 1 đến 6 được ghép nối:

123456

Đảo ngược:

654321

Cộng chúng lại với nhau sẽ cho kết quả là: 777777. Một ví dụ khác là 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

Thêm chúng lại với nhau sẽ dẫn đến 2345555545332. Điều này còn được gọi là A078262 .

Mã ngắn nhất sẽ thắng!



Có ràng buộc n, hoặc chúng ta phải hỗ trợ các số nguyên lớn tùy ý?
LegionMammal978

Tôi nghĩ mặc định là "giới hạn bởi max(256,yourlanguagesdefaultintegertypelimit)". Nhưng nó nên được chỉ định.
Máy

@ LegionMammal978 Cao như ngôn ngữ của bạn hỗ trợ.
Lamaro

Trường hợp thử nghiệm quan trọng : 10, mà nên cung cấp 23333333231.
Ad Nam

Câu trả lời:


9

05AB1E, 7 byte

LDRJsJ+

Hãy thử trực tuyến.

Giải trình

LDRJsJ+

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

Tôi cảm thấy rất bối rối bởi sự lựa chọn thiết kế dẫn đến +các danh sách thực hiện bổ sung lồng nhau, trong khi đối với chuỗi, nó chuyển đổi thành ints và sau đó thêm vào. Nhưng tôi đoán nó đã làm việc ở đây! : P
FryAmTheEggman

@FryAmTheEggman Tôi sẽ loại bỏ bổ sung lồng nhau. Nó chưa bao giờ hữu ích kể từ thời điểm tôi triển khai nó ...
Adnan

3
Sheesh, tôi rời PPCG trong hai giờ và bạn đổi tên mình thành Aqua Tart trong khi tôi đi ... Ôi, cuộc sống của một người dùng PPCG.
Sản xuất ETH

6

Thạch, 9 byte

R,U$DF€ḌS

mã hóa 


2
Có phải tôi hay tôi thấy mã đó đã bí mật ăn cắp một số U $ D?
gcampbell


4

Bình thường, 12 10 byte

ssMjLk_BSQ

Cảm ơn @FryAmTheEggman cho 2 byte!

Qlà đầu vào, Sbiến nó thành [1, 2, ..., input()], _Brẽ đôi nó lên _(ngược lại) để tạo ra [rng, rev(rng)], jLkbản đồ nó hơn joinbằng k(đó là "trống rỗng chuỗi" biến), sMbản đồ inttrên này mảng kết quả, và scuối cùng là tính toán tổng.


4

JavaScript (ES6), 70 67 64 byte

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

Đã sửa lỗi để đáp ứng yêu cầu, vì mã cũ đã được thực hiện dưới sự hiểu lầm của đầu vào.


@TimmyD Đã thêm một lời giải thích.
Mwr247

@TimmyD OH! > _ <Sự hiểu lầm của tôi về thử thách là làm thế nào ... Vâng, tôi sẽ phải sửa lỗi này.
Mwr247

@TimmyD Mất tôi đủ lâu để quay lại trực tuyến. Bây giờ nó đã được sửa và cảm ơn vì đã nắm bắt được điều đó.
Mwr247

Như đã lưu ý cho một câu trả lời khác, điều này chỉ hoạt động nếu tham số a nằm trong khoảng từ 1 đến 12, điều đó thực sự quá ít
edc65

@ edc65 Mỗi bình luận của OP , đủ lớn.
Mwr247

3

Trăn 3, 74

Đã lưu 6 byte nhờ DSM.

Không có gì quá thú vị, tham gia các phạm vi và sau đó chuyển đổi sang ints và thêm chúng.

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

3

Võng mạc , 71

Bởi vì nó ngang nhiên là công cụ sai cho công việc.

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

Hãy thử trực tuyến.

Hoạt động cho đầu vào lên đến 6, nhưng trình thông dịch trực tuyến hết thời gian sau đó.


1
Bạn có thể rút ngắn nó xuống 74 bằng cách xóa dòng cuối cùng và thay đổi (c)+thành c.
daavko

@daavko vâng, tất nhiên, cảm ơn!
Chấn thương kỹ thuật số

Ngoài ra, $&$*c-> $*c\d+:?-> \d+và đó là 70. Và vì một số lý do, nó vẫn hoạt động ...
daavko

3

Jolf, 9 byte

Hãy thử nó ở đây! Thay thế bằng \x10.

+P►γzjP_γ
    zj    range 1...j
   γ      γ = ^
  ►        ^ .join("")
 P         as a number
+     P_γ  and γ reversed

Tôi thể đánh gôn bằng cách di chuyển xung quanh kiểu đúc.


Bạn đánh bại pyth và tay nắm cửa!
Cyoce

@Cyoce vì vậy tôi đã làm O_O
Conor O'Brien

3

JavaScript (ES6), 67 66 byte

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

Vâng, đó là một không gian. Ừ Ít nhất @Downgoat đã giúp tôi tiết kiệm một byte.


1
Bạn có thể xóa cái đầu tiên +và tạo dấu + +-> - -để lưu một byte
Hạ cấp

n => (a = [... Mảng (n)]. map (_ => n -)). tham gia- -a.reverse().join
edc65

Lưu ý: sử dụng số học js đơn giản, điều này được giới hạn ở các giá trị 1 .. 12
edc65

2

Nghiêm túc, 12 byte

,R;Rεj≈@εj≈+

Hãy thử trực tuyến!

Giải trình:

,R;Rεj≈@εj≈+
,R;           push two copies of range(1, input()+1)
   R          reverse one copy
    εj≈@εj≈   concatenate both and cast both to ints
           +  add

2

PowerShell, 35 byte

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

Chuyển đổi đầu vào thành các phạm vi với .., sau đó -joinghép chúng lại với nhau và thêm chúng vào.

Sẽ làm việc cho số đầu vào lên đến 138, trong khi 139sẽ cho Infinity, và 140trở lên sẽ barf ra một lỗi awesomely tiết đúc:

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

Điều này thêm chữ số theo chữ số, vì vậy nó có thể xử lý các con số cao hơn độ chính xác 53 bit của javascript

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")

Kiểm tra

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>


Có vẻ như không hoạt động cho 9. Ngoài ra, tại sao không khởi tạo cvới các biến khác?
Neil

Bạn có upvote của tôi.
Neil


2

MATL , 13 byte

:tP2:"wVXvU]+

EDIT (ngày 20 tháng 5 năm 2016) Mã trong liên kết sử dụng Xzthay vì Xv, do những thay đổi gần đây trong ngôn ngữ.

Hãy thử trực tuyến!

:                % 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

Không hoạt động trong 11 hoặc 10. (Gợi ý: phạm vi đảo ngược trước khi chuyển đổi thành chuỗi.)
Mama Fun Roll

@ ӍѲꝆΛҐӍΛNET Cảm ơn! Đã sửa
Luis Mendo

Tuyệt quá! Có một upvote.
Mama Fun Roll

2

05AB1E , 5 byte

LJDR+

Giải trình:

L     # Pushes an array containing 1 .. [implicit] input
 J    # Join the array to a string (eg. [1, 2, 3] -> 123)
  D   # Duplicate the array
   R  # Reverse the duplicate
    + # Add them together

Hãy thử trực tuyến!



1

Perl 6 , 25 byte

{([~] @_=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
}

Sử dụng:

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

Tôi nghĩ bạn có thể làm với $nthay vì$^n
andlrc

@ dev-null Không phải nếu tôi muốn nó là đầu vào cho khối. một -> $n {là một khác nhau để $^n.
Brad Gilbert b2gills

1

R, 34 60 64 byte

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

Giả sử pryrgói được cài đặt. điều này đưa ra fnhư một tốc ký để tạo chức năng.

Chỉnh sửa thêm 26 byte nhưng trả về một chức năng hoạt động, không phải là một cái gì đó hoàn toàn sai.

Chỉnh sửa đã thêm 4 byte khác để xử lý các trường hợp trên n = 10 trong đó strtoi (đã sử dụng trước đó) đang trả về NA


1

Lua, 57

a=''b=''for i=1,...do a=a..i b=b.. ...-i+1 end return a+b

1

Lua, 53 byte

Chương trình này nlà một đối số dòng lệnh.

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

Tôi giả sử rằng việc xuất ra một số có phần thập phân bằng 0 là ổn (ở dạng 777777.0vì đây là cách mặc định để xuất một số bằng lua (không có sự phân biệt giữa số nguyên và số float)


Nó không phải là chuỗi chính nó được đảo ngược, mà là các chữ số. Mã của bạn không thành công vào n> = 10.
Moop 23/2/2016

@Moop Đã sửa ở mức giá 1 byte ^^ '. Cảm ơn vì nhận xét ^^ '
Katenkyo 23/2/2016

Bạn có thể tiết kiệm thêm 3 lần nữa bằng cách sử dụng ... thay vì arg [1] công việc tuyệt vời trên concat ngược cho r, không nghĩ đến điều đó trong câu trả lời của tôi. +1
Moop

@Moop Tôi thấy bài viết của bạn, sử dụng nó rất hay, tôi thậm chí không biết bạn có thể sử dụng ...như thế! Tôi sẽ giữ nó theo cách này vào lúc này, bởi vì tôi không thể sử dụng bất cứ thứ gì khác ngoài trình biên dịch trực tuyến và nó không thể xử lý được điều đó (Tôi muốn kiểm tra nó và chơi với nó một chút trước khi đưa nó vào trả lời :))
Katenkyo 23/2/2016

1

Perl 5, 37 byte

25 byte, cộng với 1 cho -pvà 11 cho-MList::Gen

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

Giải pháp trước đó, 40 byte: 39, cộng với một cho -p

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

1

Perl, 36 byte

Bao gồm +1 cho -p

Chạy với STDIN

perl -p reverse.pl <<< 6

reverse.pl

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

1

APL Dyalog , 17 byte

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

kịp thời cho đầu vào
'enumerate cho đến khi nhập
x←danh sách cửa hàng trong x
đảo ngược x
x(... )hãy thêm danh sách đảo ngược với danh sách ban đầu
⍕¨¨chuyển đổi mỗi số của mỗi danh sách thành chuỗi ký tự
∊¨làm cho mỗi danh sách các chuỗi ký tự thành chuỗi ký tự đơn
⍎¨chuyển đổi mỗi chuỗi ký tự thành một số
+/tổng hai số .



0

Võng mạc, 80 byte (mã hóa ISO 8859-1)

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

IO là đơn nguyên với 'tính cách đếm. Về lý thuyết hỗ trợ bất kỳ số nguyên nào bạn ném vào nó, trong thực tế ... trình thông dịch trực tuyến từ chối xử lý bất cứ thứ gì lớn hơn 6 (đơn nguyên '''''').

Hãy thử trực tuyến!
Hãy thử trực tuyến! (IO thập phân - 91 byte)


0

, 12 ký tự / 15 byte

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

Try it here (Firefox only).

Meh.

Giải trình

Đưa ra một phạm vi [1,input], tham gia nó; lấy cùng một phạm vi, đảo ngược nó, sau đó tham gia nó; tổng của cả hai phạm vi là kết quả.


0

Ruby, 40 ký tự

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

Chạy mẫu:

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 byte

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

Có thể có thể được đánh gôn hơn nữa. Không thực sự chắc chắn.


0

Groovy, 42 39 ký tự

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

Chạy mẫu:

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

groovy:000> ({[1..it,it..1]*.join()*.toLong().sum()})(6)
===> 777777
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.