Phạm vi, đảo ngược, tổng!


21

Cho một số nguyên dương n là đầu vào, đầu ra tổng phạm vi đảo ngược của n.

Tổng phạm vi đảo ngược được tạo bằng cách tạo một phạm vi bao gồm tối đa n, bắt đầu bằng 1 và bao gồm n, đảo ngược từng số bên trong và tính tổng của nó.

Thí dụ:

Đây là những gì sẽ xảy ra cho đầu vào 10:

Phạm vi: [1,2,3,4,5,6,7,8,9,10]

Đảo ngược: [1,2,3,4,5,6,7,8,9,01](Số 1-char bị đảo ngược là chính họ, 10 số đảo ngược là 01 hoặc 1)

Tổng hợp: 46

Các số có hơn 3 chữ số được đảo ngược cùng số với 2 chữ số. Ví dụ, 1234 sẽ trở thành 4321.

Các trường hợp thử nghiệm:

Input -> Output

10 -> 46
5 -> 15
21 -> 519
58 -> 2350
75 -> 3147
999 -> 454545

Có thể tìm thấy các trường hợp văn bản hoàn chỉnh cho đầu vào của 999 ở đây , cảm ơn rất nhiều đến @ fireflame241.


Thêm kết quả trường hợp thử nghiệm (không được đánh số, xin lỗi, nhưng bạn có thể phân tích cú pháp và lấy số dòng của họ nếu bạn muốn): Hãy thử trực tuyến!
Stephen




4
-1 vì điều này không thú vị. Có vẻ như hầu hết, nếu không phải tất cả, các bài nộp đang sử dụng cùng một cách tiếp cận. Thử thách này có vẻ như là một loạt các vấn đề đã được hỏi, chỉ là cùng nhau không có phím tắt rõ ràng.
Trái cây Esolanging

Câu trả lời:


16

05AB1E , 3 byte

LíO

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!

Giải trình

L       # Range
 í      # Reverse
  O     # Sum

20
giải thích dữ liệu tho
ETHproductions

@ETHsản xuất tốt Reversenên Reverse eachthực sự ...
Erik the Outgolfer

@EriktheOutgolfer Nó không được vector hóa?
ASCII chỉ

@ ASCII chỉ vector hóa 05AB1E thực sự sâu 1 cấp chứ không phải ∞. Cũng chỉ "đảo ngược" là R, trong khi í"đảo ngược mỗi".
Erik the Outgolfer


8

JavaScript (ES6), 42 byte

f=n=>n&&+[...n+""].reverse().join``+f(n-1)

Rất tiếc, giải pháp đệ quy yêu thích của tôi không may dài hơn 3 byte:

f=n=>n&&+(g=x=>x?x%10+g(x/10|0):"")(n)+f(n-1)

8

Perl 6 , 20 byte

{(1..$_)».flip.sum}

Kiểm tra nó

Mở rộng:

{
   ( 1 .. $_ )\  # Range
   ».flip        # flip each value in the Range (possibly in parallel)
   .sum          # sum up the list
}

Là "có thể song song" được yêu cầu? Có vẻ như bạn có thể thoát khỏi một hoặc hai byte bằng cách bỏ qua nó.
Vụ kiện của Quỹ Monica

@QPaysTaxes Không. Phương thức ».flipgọi .flipphương thức trên mỗi giá trị trong Phạm vi. Cách ngắn nhất tiếp theo để làm điều này là .map(*.flip)thêm 5 byte.
Brad Gilbert b2gills

Ồ, vậy phần quan trọng là "mỗi", không phải "(có thể song song)". Có thể có giá trị tách chúng ra, sau đó.
Vụ kiện của Quỹ Monica

@QPaysTaxes Tôi không chắc tôi biết ý của bạn ».fliplà cuộc gọi siêu phương thức. Trong khi tôi có thể tách ra ».flipbằng cách sử dụng một khoảng trống \ như tôi đã làm trước đó; điều đó sẽ làm cho nó khó hiểu hơn, vì nó trông giống như sự kết thúc của một qqww/ /cấu trúc ( « a b "c d" »).
Brad Gilbert b2gills

7

Võng mạc , 41 36 35 byte

.+
$*
1
1$`¶
1+
$.&
%O^$`.

.+
$*
1

Hãy thử trực tuyến! Liên kết bao gồm các trường hợp thử nghiệm. Chỉnh sửa: Đã lưu 5 byte nhờ @FryAmTheEggman. Đã lưu 1 byte nhờ @ PunPun1000. Giải trình:

.+
$*

Chuyển đổi sang unary.

1
1$`¶

Tạo một phạm vi từ 1đến n.

1+
$.&

Chuyển đổi trở lại thập phân.

%O^$`.

Đảo ngược từng số.

.+
$*

Chuyển đổi trở lại đơn nguyên.

1

Tổng và chuyển đổi trở lại thập phân.


@FryAmTheEggman Bah, tôi cứ quên mất điều đó.
Neil

Bạn không cần trong .+¶ trận đấu sẽ diễn ra trên các dòng
PunPun1000

@ PunPun1000 Tôi đã cần nó trước khi sửa lỗi của FryAmTheEggman!
Neil

Tôi nhận thấy rằng O^$s`.để đảo ngược toàn bộ chuỗi cũng hoạt động.
Neil


6

Haskell, 34 byte

\n->sum$read.reverse.show<$>[1..n]

Đơn giản và dễ hiểu.



5

cQuents , 4 byte

;\r$

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

Giải trình

       Implicit input n.
;      Series mode. Outputs the sum of the sequence from 1 to n.
 \r$   Each item in the sequence equals:
 \r    String reverse of
   $                     current index (1-based)

5

Python 2 , 38 byte

Không thể tính các điều khoản cao hơn giới hạn đệ quy:

f=lambda x:x and int(`x`[::-1])+f(x-1)

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


Bạn có thể sử dụng import syssys.setrecursionlimit()nếu bạn muốn xử lý số lượng lớn hơn, trong tiêu đề tio.
Ông Xcoder


5

Röda , 56 41 36 byte

15 byte được lưu nhờ @fergusq

{seq 1,_|parseInteger`$_`[::-1]|sum}

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

Đây là một hàm ẩn danh lấy một số nguyên từ luồng đầu vào và xuất một số nguyên cho luồng đầu ra.

Giải trình

{seq 1,_|parseInteger`$_`[::-1]|sum} Anonymous function
 seq 1,_                             Create a sequence 1 2 3 .. input and push each value to the stream
        |                            For each value in the stream:
                     `$_`             Cast it into a string
                         [::-1]       And reverse it
         parseInteger                 And parse the resulting string as an integer, while pushing the value to the stream
                               |sum  Sum all the values in the stream

Bạn có thể tiết kiệm rất nhiều byte bằng cách sử dụng [::-1]thay vì đảo ngược. Ngoài ra ` $_` ngắn hơn _..""và dấu ngoặc đơn sau parseInteger là không cần thiết.
fergusq

@fergusq Cảm ơn vì những lời khuyên, Röda của tôi đã hơi rỉ sét :)
Kritixi Lithos

4

C # (Lõi .NET) , 103 97 byte

using System.Linq;r=>new int[r+1].Select((_,n)=>int.Parse(string.Concat((n+"").Reverse()))).Sum()

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

Liên kết TIO cho ra tất cả các kết quả từ 1 đến 999, vì vậy hãy kiểm tra công việc của tôi.

Tôi đã dự đoán nó sẽ ngắn hơn một chút, nhưng hóa ra nó Reverse()trả về một IEnumerable<char>chuỗi thay vì một chuỗi khác vì vậy tôi phải thêm một số phụ để biến nó thành chuỗi để tôi có thể phân tích nó thành int. Có lẽ có một cách ngắn hơn để đi từ IEnumerable<char>int đến chính xác.

Lưu ý nhỏ, điều này cũng sử dụng các chức năng Range() Reverse()Sum()tất cả theo thứ tự.

-6 byte nhờ TheLethalCoder


Bạn không cần dấu chấm phẩy. Tôi nghĩ rằng việc sử dụng new int[r].Select((_,n)=>...)sẽ giúp bạn tiết kiệm byte.
TheLethalCoder

@TheLethalCoder Cần có new int[r+1]đầu ra đúng vì chỉ mục bắt đầu từ 0, nhưng nó vẫn lưu một vài byte. RIP Range()mặc dù
Kamil Drakari

4

Hồng ngọc 56, 52, 41, 39 byte

->n{(1..n).sum{|i|i.to_s.reverse.to_i}}

Ruby, 34 byte (nếu lambda param là một chuỗi)

->n{(1..n).sum{|i|i.reverse.to_i}}

Cảm ơn @Unihedron cho giải pháp thứ hai.


1
->n{làm việc tốt
Mực giá trị

1
Tôi đã tạo ra một chương trình ngắn hơn trong cùng một công cụ (Ruby) đủ khác biệt (nó liên quan đến đầu vào và đầu ra) để gửi riêng, bạn có thể tìm thấy nó ở đây: codegolf.stackexchange.com/a/150636/21830
Unihedron

@Unihedron, haha, tôi không biết Ruby thật điên rồ khi cho phép phạm vi chuỗi. Cảm ơn.
akostadinov

Vâng, ruby ​​cũng có các tính năng tiện lợi như ?a..?z?a1..?h8(mặc dù bạn nên cẩn thận hơn với định dạng thứ 2: D)
Unihedron

Phạm vi phải thực hiện 1. (đối với giá trị bắt đầu) succvà 2. (nếu giá trị bắt đầu hoặc kết thúc không thực hiện succ) là số, do đó int..stringsẽ bị từ chối là "Giá trị xấu cho phạm vi". Điều ngược lại là đúng (nhưng than ôi không có phạm vi giảm tốc) hoặc (?1..n)có thể được sử dụng thay thế
Unihedron


3

Than , 14 13 byte

-1 byte nhờ Carlos Alejo

I∕…·⁰N«⁺ιI⮌Iκ

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng.

Giải trình

I                  Cast
  ∕     «           Reduce
   …·⁰N            Inclusive range from 0 to input as number
         ⁺          Plus
          ι         i
           I⮌Iκ   Cast(Reverse(Cast(k)))

Bạn có thể lưu một byte bằng cách thả cuối cùng ». Nhân tiện, ở đâu trong wiki Than được Reducenhà điều hành ghi lại?
Charlie

Không ở đâu, đó là sự quá tải của bộ phận thứ nhất: | Tôi có thể cung cấp cho bạn chỉnh sửa quyền truy cập nếu bạn muốn (xin lỗi tôi quá lười để tự làm điều đó)
ASCII - chỉ

Ngoài ra, tôi đã quên tại sao bỏ đi niềng răng kết thúc hoạt động lol
ASCII chỉ

Tôi thực sự muốn wiki Char than được ghi lại nhiều hơn một chút, vì vẫn còn một số tính năng hoạt động nhưng ẩn. Nếu bạn cấp cho tôi quyền truy cập, tôi sẽ cố hết sức để ghi lại chúng. Ví dụ: làm thế nào Modulotoán tử có thể được sử dụng để định dạng chuỗi trong Char than?
Charlie

1
@CarlosAlejo Tôi đã có một chút thời gian rảnh nên tôi đã bắt đầu viết tài liệu, hy vọng bạn thích nó!
Neil

3

Magneson , 102 byte

Nguồn

Điều đó không hiển thị lắm, vì vậy đây là phiên bản thu nhỏ (Lưu ý: Không thực sự chạy và vẫn không đẹp lắm)

Chỉ hiển thị mục đích

Magneson hoạt động bằng cách phân tích một hình ảnh và đánh giá các lệnh từ màu sắc của các pixel mà nó đọc. Vì vậy, bước qua hình ảnh cho thử thách này, chúng tôi có:

  • R: 0, G: 1, B: 1là một lệnh gán số nguyên, lấy một chuỗi cho tên biến và giá trị để gán. Chúng tôi sẽ sử dụng điều này để lưu trữ tổng số.
  • R: 0, G: 1, B: 0là một chuỗi dựng sẵn có giá trị VAR_1(Lưu ý: Đây chỉ là khi chúng tôi yêu cầu một chuỗi; mã màu có chức năng riêng khi được sử dụng ở nơi khác).
  • R: 3, G: 0, B: 0là một số nguyên. Magneson xử lý các số tiêu chuẩn bằng cách yêu cầu thành phần Đỏ chính xác là 3 và sau đó tạo thành một số bằng cách sử dụng trực tiếp giá trị xanh cộng với giá trị xanh nhân với 256. Trong trường hợp này, chúng ta chỉ nhận được số 0.
  • R: 0, G: 1, B: 1là một lệnh gán số nguyên khác. Lần này, chúng tôi đang lưu trữ một biến lặp, để theo dõi số chúng tôi đang sử dụng
  • R: 0, G: 1, B: 1là một chuỗi dựng sẵn có giá trị VAR_2(Một lần nữa, chỉ khi chúng ta cần một chuỗi)
  • R: 3, G: 0, B: 0là số 0, một lần nữa. Lên các bit thú vị bây giờ.
  • R: 1, G: 0, B: 0chỉ ra sự bắt đầu của một vòng lặp. Điều này cần một số và lặp lại đoạn mã sau nhiều lần.
  • R: 2, G: 0, B: 0là hàm STDIN, hoặc ít nhất là khi chúng ta cần một số. Điều này đọc một dòng đầu vào từ bàn điều khiển và biến nó thành một số, vì chúng tôi đã yêu cầu một số.
  • R: 0, G: 8, B: 0bắt đầu mã lặp của chúng tôi và đó là một lệnh cộng. Điều này thêm một số vào một biến số nguyên và do đó, lấy một chuỗi cho tên biến và số để thêm.
  • R: 0, G: 1, B: 1là chuỗi dựng sẵn cho VAR_2, đó là biến lặp của chúng tôi.
  • R: 3, G: 0, B: 1 là một số nguyên, nhưng lần này là số 1.
  • R: 0, G: 8, B: 0 là một lệnh bổ sung khác.
  • R: 0, G: 1, B: 0là chuỗi cho VAR_1, đó là tổng của chúng tôi.
  • R: 0, G: 3, B: 0là một hàm đảo ngược một chuỗi. Trong bối cảnh yêu cầu một số, sau đó nó chuyển đổi chuỗi đảo ngược thành một số.
  • R: 0, G: 2, B: 1là một lệnh truy xuất số nguyên và sẽ truy xuất số được lưu trữ trong một biến được cung cấp. Trong ngữ cảnh yêu cầu một chuỗi (chẳng hạn như từ lệnh đảo ngược), nó chuyển đổi số thành chuỗi.
  • R: 0, G: 1, B: 1là tên VAR_2; biến lặp của chúng tôi.
  • R: 1, G: 0, B: 1là điểm đánh dấu để kết thúc vòng lặp và quay trở lại điểm bắt đầu của vòng lặp nếu các tiêu chí không được đáp ứng (vì vậy nếu chúng ta cần tiếp tục lặp). Nếu không, tiến hành trở đi.
  • R: 0, G: 0, B: 1 là một lệnh println rất đơn giản và lấy một chuỗi.
  • R: 0, G: 2, B: 1 lấy một số nguyên từ một biến
  • R: 0, G: 1, B: 0 là tên của tổng biến của chúng tôi, VAR_1

    Tất cả trong tất cả, chương trình:

  • Gán giá trị 0 cho VAR_1VAR_2
  • Vòng lặp từ 0 đến một số được cung cấp trong STDIN
    • Thêm một vào VAR_2
    • Thêm giá trị nguyên của đảo ngược VAR_2vàoVAR_1
  • In nội dung của VAR_1


3

CJam , 12 byte

ri){sW%i}%:+

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

-1 cảm ơn Business Cat .

Giải trình:

ri){sW%i}%:+
r            Get token
 i           To integer
  )          Increment
   {sW%i}    Push {sW%i}
    s         To string
     W        Push -1
      %       Step
       i      To integer
         %   Map
          :+ Map/reduce by Add

Bạn có thể thêm một lời giải thích? Tôi không hiểu CJam (cũng không phải GolfScript). Nhưng MY đã đánh bại hai (mặc dù cổ xưa về ngôn ngữ chơi gôn)!
Zacharý

@ Zacharý đã xong ...
Erik the Outgolfer

Bạn không cần,
Business Cat

@BusinessCat Ohhh đã sử dụng quá nhiều vào GolfScript ...
Erik the Outgolfer

3

APL (Dyalog) , 10 7 byte

3 byte được chơi golf nhờ @ Adám bằng cách chuyển đổi sang giao dịch từ tàu

+/⍎⌽⍕⍳⎕

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

          Input (example input: 10)
          Range; 1 2 3 4 5 6 7 8 9 10
          Stringify; '1 2 3 4 5 6 7 8 9 10'
          Reverse; '01 9 8 7 6 5 4 3 2 1'
          Evaluate; 1 9 8 7 6 5 4 3 2 1
+/         Sum; 46

Để @Uriel & Bò quạ về câu hỏi trò chuyện: Chà, tôi đã làm phần Toán học, ngoài ra, tôi đã bị đình chỉ trò chuyện, do đó tôi không trả lời trong đó.
Zacharý


@ Adám Cảm ơn vì tiền boa. Loại bỏ sự ¨thông minh :)
Kritixi Lithos

3

Java 8, 97 byte

IntStream.range(1,n+1).map(i->Integer.valueOf(new StringBuffer(""+i).reverse().toString())).sum()

CHỈNH SỬA

Theo nhận xét của Kevin Cruijssen, tôi muốn cải thiện câu trả lời của tôi.

Java 8, 103 byte

n->java.util.stream.LongStream.range(1,n+1).map(i->new Long(new StringBuffer(""+i).reverse()+"")).sum()

1
Integer.valueOfcó thể được chơi golf new Integer.reverse().toString()có thể được chơi gôn .reverse()+"". Ngoài ra, bạn phải bao gồm các tham số nhập khẩu và lambda cần thiết, như java.util.stream.IntStreamn->trước nó. Và bạn cũng có thể chơi golf IntStream& Integerđến LongStreamLong. Câu trả lời cuối cùng sẽ là n->java.util.stream.LongStream.range(1,n+1).map(i->new Long(new StringBuffer(""+i).reverse()+"")).sum()( 103 byte - Câu trả lời hiện tại của bạn có thêm thông số nhập và lambda sẽ là 117 byte .) Vẫn là +1, câu trả lời hay!
Kevin Cruijssen

@KevinCruijssen Cảm ơn bạn về đầu vào có giá trị của bạn. Tôi sẽ cập nhật câu trả lời của tôi. Cảm ơn. :)
CoderCroc

3

Japt , 7 5 byte

-2 byte nhờ @Shaggy.

õs xw

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

Giải trình

õs xw  Implicit input of integer U
õs     Create range [1,U] and map to strings
    w  Reverse each string
   x   Sum the array, implicitly converting to numbers.

Giải pháp cũ, 7 byte

Giữ điều này vì nó là một cách sử dụng thực sự mát mẻ z2.

õs z2 x

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

Giải trình

õs z2 x  Implicit input of integer U
õs       Create range [1,U] and map to strings
   z2    Rotate the array 180°, reversing strings
      x  Sum the array, implicitly converting back to integers

1
Bạn biết z2trên một mảng phẳng giống như w, righ ... uhm ... xin lỗi cho sự bất cập của tôi tại Japt ...
ETHproductions

6 byte: õ_swÃxnhờ bổ sung mới N.s(f).
Xù xì

Hoặc thậm chí chỉ õs xwcho 5 byte.
Xù xì

@Shaggy Tôi không thể tin rằng không ai đề cập đến giải pháp 5 byte cho đến bây giờ ... sẽ chỉnh sửa trong giây lát. Đối với 6 byte, nếu điều đó được thêm vào sau khi thử thách này được đăng, tôi nghĩ rằng điều đó sẽ không cạnh tranh.
Justin Mariner

@JustinMariner, tôi cũng không thể! : D Mặc dù, có vẻ xấu hổ khi bỏ z2mánh khóe đó ; đó là thiên tài khá chết tiệt. Lưu ý rằng không cạnh tranh không còn là một điều .
Xù xì

3

C ++, 146 byte

#include<string>
using namespace std;int r(int i){int v=0,j=0;for(;j<=i;++j){auto t=to_string(j);reverse(t.begin(),t.end());v+=stoi(t);}return v;}

Làm tốt lắm! Bạn có thể tiết kiệm một số byte bằng cách xóa tiêu đề và đặt "bằng cách sử dụng không gian tên std" (kiểm tra ở đây tio.run/#cpp-gcc ). Tôi cũng nghĩ rằng bạn có thể thay thế "auto t" chỉ bằng "t" (?)
koita_pisw_sou

Vâng, koita_pisw_sou nói đúng về phần đầu tiên. Nhưng bạn cần auto.
Zacharý

@koita_pisw_sou Ý bạn là tôi có thể loại trừ chỉ thị tiêu đề khỏi số byte? Tương tự cho không gian tên? autotừ khóa là cần thiết
HatsuPulumKun

Có, hãy kiểm tra liên kết tôi đã gửi
koita_pisw_sou

(Rất tiếc, tôi không chắc chắn về việc xóa tiêu đề!) Nhưng tôi đã đề cập đến việc using namespace std;lưu byte.
Zacharý



2

RProgN 2 , 8 byte

{Ø.in}S+

Giải thích

{Ø.in}S+
{    }S # Create a stack in range 0 through the implicit input, using the function defined
 Ø.     # Append nothing, stringifying the number
   i    # Reverse the string
    n   # Convert back to a number
       +# Get the sum of the stack, and output implicitly.

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




2

Neim , 4 byte

Δ𝐫)𝐬

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

Giải trình

Δ )              for each element 1 to n (outputs list)
 𝐫               reverse 
   𝐬             sum 

2
Giải pháp thay thế: 𝐈Ψ𝐫𝐬(tạo phạm vi bao gồm, đảo ngược từng yếu tố, tổng hợp)
Okx

@Okx không biết rằng Ψmã thông báo đã tồn tại! chắc chắn sẽ sử dụng nó trong nhận thức muộn màng. thực sự tốt đẹp
không gian rác

2

C (gcc) , 71 byte

q(n,x,p){p=n?q(n/10,x*10+n%10):x;}f(w,a,e){for(a=0;w;)a+=q(w--,0);e=a;}

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


Đợi ... cái gì? Làm thế nào f()trả về kết quả của nó mà không có bất kỳ returntuyên bố? Liệu e=alệnh có thao tác các thanh ghi theo cách mà kết quả được lưu trữ trong cùng một thanh ghi so với thanh ghi được sử dụng bởi các giá trị được trả về không?
scottinet
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.