레인지, 리버스, 합계!


21

입력으로 양의 정수 n이 주어지면, 역 범위 합의 n을 출력합니다.

역 범위 합은 1부터 시작하여 n을 포함하고 n을 포함하고 각 숫자를 뒤집고 합산하여 최대 n까지의 범위를 만듭니다.

예:

다음은 10의 입력에서 발생하는 일입니다.

범위: [1,2,3,4,5,6,7,8,9,10]

역전 : [1,2,3,4,5,6,7,8,9,01](1 문자 역수 는 자체, 10 역수 는 01 또는 1 임)

합집합: 46

3 자리 이상의 숫자는 2 자리의 숫자와 같은 방식으로 반전됩니다. 예를 들어 1234는 4321이됩니다.

테스트 사례 :

Input -> Output

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

999의 입력에 전체 텍스트의 경우를 찾을 수 있습니다 여기 @ fireflame241에 대단히 감사합니다.


더 많은 테스트 사례 결과 (번호가 매겨지지 않았지만 죄송하지만 원하는 경우 파싱하여 줄 번호를 얻을 수 있음) : 온라인으로 시도하십시오!
Stephen




4
흥미롭지 않기 때문에 -1입니다. 전부는 아니지만 대부분의 제출물이 동일한 접근 방식을 사용하는 것 같습니다. 이 도전은 이미 제기 된 많은 문제처럼 보이지만 바로 가기없이 함께 연결되어 있습니다.
Esolanging 과일

답변:


16

05AB1E , 3 바이트

암호

LíO

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명

L       # Range
 í      # Reverse
  O     # Sum

20
dat
description

@ETHproductions 잘 Reverse해야 Reverse each실제로 ...
에릭 Outgolfer

@EriktheOutgolfer 그것은 벡터화되지 않습니까?
ASCII 전용

@ASCII 전용 05AB1E 벡터화는 실제로 ∞가 아니라 1 레벨 깊이입니다. 또한 "reverse"는 R이고 "reverse"는 "reverse"입니다 í.
아웃 골퍼 에릭 10


8

자바 스크립트 (ES6), 42 바이트

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

내가 가장 좋아하는 이중 재귀 솔루션은 불행히도 3 바이트 더 깁니다.

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

8

펄 6 , 20 바이트

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

그것을 테스트

넓히는:

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

'병행 가능'이 필요합니까? 생략하면 1 ~ 2 바이트를 제거 할 수있는 것 같습니다.
기금 모니카의 소송

@QPaysTaxes No. 범위의 각 값에 대해 메소드를 ».flip호출합니다 .flip. 다음으로 가장 짧은 방법 .map(*.flip)은 5 바이트입니다.
브래드 길버트는 b2gills

아, 그래서 핵심 부분은 "(병렬로)"가 아니라 "각"입니다. 그렇다면 그것들을 나눌 가치가 있습니다.
기금 모니카의 소송

@QPaysTaxes 나는 당신이 무슨 뜻인지 ».flip하이퍼 메소드 호출 인지 확실하지 않습니다 . 내가 분할 할 수 있지만 ».flipunspace를 사용하여 \ 내가 전에했던 것처럼; 그렇게하면 qqww/ /구문 의 끝처럼 보일 수 있으므로 이해하기가 더 어려워집니다 ( « a b "c d" »).
Brad Gilbert b2gills

7

망막 , 41 36 35 바이트

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

.+
$*
1

온라인으로 사용해보십시오! 링크에는 테스트 사례가 포함됩니다. 편집 : @FryAmTheEggman 덕분에 5 바이트를 절약했습니다. @ PunPun1000 덕분에 1 바이트를 절약했습니다. 설명:

.+
$*

단항으로 변환합니다.

1
1$`¶

에서 1까지 범위를 만듭니다 n.

1+
$.&

십진수로 다시 변환합니다.

%O^$`.

각 숫자를 바꾸십시오.

.+
$*

단항으로 다시 변환합니다.

1

합계를 다시 소수로 변환합니다.


@FryAmTheEggman Bah, 나는 그것에 대해 계속 잊고 있습니다.
Neil

당신은 필요가 없습니다 에서 .+¶ 줄에 걸쳐 일치 경기를
PunPun1000

@ PunPun1000 FryAmTheEggman의 수정 전에 필요했습니다!
Neil

O^$s`.전체 문자열을 뒤집는 것도 효과가 있음 을 알았습니다 .







5

로다 , 56 41 36 바이트

@fergusq 덕분에 15 바이트 절약

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

온라인으로 사용해보십시오!

이것은 입력 스트림에서 정수를 가져 와서 출력 스트림으로 정수를 출력하는 익명 함수입니다.

설명

{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

[::-1]reverse 대신 사용하여 많은 바이트를 절약 할 수 있습니다 . 또한` $_`는보다 짧으며 _..""parseInteger 뒤의 괄호는 필요하지 않습니다.
fergusq

@fergusq 팁 주셔서 감사합니다, 내 로다 조금 녹슨 : 간
Kritixi LITHOS

4

C # (. NET 코어) , 103 97 바이트

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

온라인으로 사용해보십시오!

TIO 링크는 1에서 999까지의 모든 결과를 출력하므로 언제든지 작업을 확인하십시오.

나는 이것이 조금 더 짧을 것으로 예상했지만 다른 문자열 대신에 Reverse()리턴을 반환 IEnumerable<char>하므로 문자열로 다시 변환하기 위해 여분의 것을 추가해야 int로 구문 분석 할 수 있습니다. 어쩌면 IEnumerable<char>int로 올바르게 전환 하는 더 짧은 방법이있을 수 있습니다 .

사소한 점은 함수 Range() Reverse()Sum()모두 순서대로 사용합니다.

TheLethalCoder 덕분에 -6 바이트


뒤에 세미콜론이 필요하지 않습니다. 나는 생각 new int[r]하고 .Select((_,n)=>...)바이트를 절약 할 것입니다.
TheLethalCoder

@TheLethalCoder new int[r+1]인덱스가 0에서 시작하기 때문에 올바른 출력을 얻는 데 걸리지 만 여전히 몇 바이트를 절약합니다. RIP Range()그래도
Kamil Drakari

4

루비, 56, 52, 41, 39 바이트

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

루비, 34 바이트 (람다 매개 변수가 문자열 인 경우)

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

두 번째 솔루션에 대한 @Unihedron에게 감사드립니다.


1
->n{잘 작동합니다.
Value Ink

1
동일한 도구 (Ruby)에서 자체 제출이 될만큼 다른 (입력 및 출력을 처리하는) 짧은 프로그램을 만들었
Unihedron

@ Unihedron, haha, Ruby가 문자열 범위를 허용하기에 미친 지 몰랐습니다. 감사.
akostadinov

예, 루비에는 ?a..?zand와 같은 멋진 기능이 있습니다. ?a1..?h8(두 번째 형식 : D에주의하는 것이 더 좋습니다)
Unihedron

범위는 1. (시작 값의 경우) 구현 succ및 2. (시작 또는 종료 값이 구현되지 않은 경우 succ) 숫자 여야하므로 int..string"범위의 잘못된 값"으로 거부됩니다. 그 반대의 경우도 마찬가지이지만 (아아도 (?1..n)
하향


3

, 14 13 바이트

Carlos Alejo 덕분에 -1 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전입니다.

설명

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

마지막을 삭제하여 바이트를 저장할 수 있습니다 ». 그건 그렇고, 숯 위키에서 Reduce운영자 는 어디에 기록되어 있습니까?
Charlie

어디에도, 그것은 부서 하나의 과부하입니다. | 원하는 경우 편집 액세스 권한을 부여 할 수 있습니다 (죄송합니다. 직접 처리하기에는 너무 게으른 것입니다)
ASCII 전용

또한 그래, 나는 중괄호를 남기지 않는 이유를 잊어 버렸다. lol
ASCII 전용

나는 여전히 작동하지만 숨겨진 기능이 일부 있기 때문에 숯 위키가 좀 더 문서화되기를 정말로 원합니다. 편집 권한을 부여하면 최선을 다해 문서화 할 것입니다. 예 : Modulo연산자를 사용하여 어떻게 숯으로 문자열을 포맷 할 수 있습니까?
찰리

1
@CarlosAlejo 나는 약간의 자유 시간을 가졌기 때문에 물건을 문서화하기 시작했습니다.
Neil

3

Magneson , 102 바이트

출처

눈에 잘 띄지 않으므로 여기에 확장 버전이 있습니다 (참고 : 실제로 실행되지는 않지만 여전히 예쁘지 않습니다)

표시 목적 만

Magneson은 이미지를 파싱하고 읽은 픽셀의 색상에서 명령을 평가하여 작동합니다. 이 도전에 대한 이미지를 단계별로 살펴보면 다음과 같은 이점이 있습니다.

  • R: 0, G: 1, B: 1정수 할당 명령으로 변수 이름과 할당 할 값에 대한 문자열을 사용합니다. 이것을 사용하여 합계를 저장합니다.
  • R: 0, G: 1, B: 0는 값을 가진 미리 작성된 문자열입니다 VAR_1(참고 : 문자열을 요청하는 동안에 만 사용되며 다른 곳에서 사용하는 경우 색상 코드에는 별도의 기능이 있습니다).
  • R: 3, G: 0, B: 0원시 숫자입니다. Magneson은 Red 구성 요소가 정확히 3이되도록 표준 숫자를 처리 한 다음 파란색 값을 직접 더한 값에 256을 곱한 녹색 값을 사용하여 숫자를 만듭니다.이 경우 숫자 0 만 얻습니다.
  • R: 0, G: 1, B: 1또 다른 정수 할당 명령입니다. 이번에는 반복 변수를 저장하여 현재 사용중인 숫자를 추적합니다.
  • R: 0, G: 1, B: 1값이있는 미리 작성된 문자열입니다 VAR_2(한 번 더 문자열이 필요할 때만)
  • R: 3, G: 0, B: 0다시 한 번 숫자 0입니다. 이제 흥미로운 부분으로 넘어갑니다.
  • R: 1, G: 0, B: 0루프의 시작을 나타냅니다. 이것은 숫자를 취하고 다음 코드 조각을 여러 번 반복합니다.
  • R: 2, G: 0, B: 0STDIN 함수이거나 적어도 숫자가 필요할 때입니다. 이것은 콘솔에서 입력 라인을 읽고 숫자를 요청했기 때문에 숫자로 바꿉니다.
  • R: 0, G: 8, B: 0루핑 코드를 시작하며 추가 명령입니다. 이것은 정수 변수에 숫자를 추가하므로 변수 이름에 대한 문자열과 추가 할 숫자가 필요합니다.
  • R: 0, G: 1, B: 1에 대한 사전 빌드 문자열이며 VAR_2반복 변수입니다.
  • R: 3, G: 0, B: 1 원시 숫자이지만 이번에는 숫자 1입니다.
  • R: 0, G: 8, B: 0 또 다른 추가 명령입니다.
  • R: 0, G: 1, B: 0에 대한 문자열이며 VAR_1총합입니다.
  • R: 0, G: 3, B: 0문자열을 바꾸는 함수입니다. 숫자를 요청하는 경우에는 반전 된 문자열을 숫자로 변환합니다.
  • R: 0, G: 2, B: 1정수 검색 명령이며 제공된 변수에 저장된 숫자를 검색합니다. 문자열을 요구할 때 (예 : reverse 명령에서) 숫자를 문자열로 변환합니다.
  • R: 0, G: 1, B: 1이름입니다 VAR_2; 반복 변수.
  • R: 1, G: 0, B: 1는 루프를 끝내는 마커이며 기준이 충족되지 않으면 루프의 시작으로 돌아갑니다 (따라서 계속 반복해야하는 경우). 그렇지 않으면 계속 진행하십시오.
  • R: 0, G: 0, B: 1 매우 간단한 println 명령이며 문자열을 사용합니다.
  • R: 0, G: 2, B: 1 변수에서 정수를 검색
  • R: 0, G: 1, B: 0 합계 변수의 이름입니다. VAR_1

    대체로 프로그램은 다음과 같습니다.

  • 0에 값을 할당 VAR_1하고VAR_2
  • STDIN에 제공된 숫자에서 0까지 반복
    • 하나를 추가 VAR_2
    • 반전의 정수 값 VAR_2VAR_1
  • 내용을 인쇄합니다 VAR_1


3

CJam , 12 바이트

ri){sW%i}%:+

온라인으로 사용해보십시오!

Business Cat 덕분에 -1 .

설명:

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

설명을 추가해 주시겠습니까? CJam (또는 GolfScript)을 이해하지 못합니다. 그러나 내 골프 골프 언어에 관해서는 고대의 2 개를 쳤다!
Zacharý

@ Zacharý 완료 ...
Outgolfer Erik

당신은 필요하지 않습니다,
비즈니스 고양이

@BusinessCat Ohhh는 명백히 GolfScript에 너무 많이 사용했습니다 ...
Outgolfer Erik

3

APL (Dyalog) , 10 7 바이트

기차에서 tradfn으로 변환하여 @ Adám 덕분에 3 바이트 골프

+/⍎⌽⍕⍳⎕

온라인으로 사용해보십시오!

          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 & Cows에게 채팅 질문에 대해 다음과 같이 말했습니다. 글쎄, 나는 수학 부분을 추가했습니다.
Zacharý

7 바이트 :+/⍎⌽⍕⍳⎕
Adám

@ Adám 팁 주셔서 감사합니다. 제거 중은 ¨영리 :)했다
Kritixi LITHOS

3

자바 8, 97 바이트

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

편집하다

의 의견에 따라 Kevin Cruijssen답변을 개선하고 싶습니다.

자바 8, 103 바이트

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

1
Integer.valueOf에 golfed 할 수 있습니다 new Integer, 그리고 .reverse().toString()에 golfed 할 수 있습니다 .reverse()+"". 또한 필수 가져 오기 및 람다 매개 변수 java.util.stream.IntStreamn->이전 과 마찬가지로 포함 해야합니다. 그리고 당신은 골프도 할 수있는 IntStream& IntegerLongStreamLong. 최종 답변은 n->java.util.stream.LongStream.range(1,n+1).map(i->new Long(new StringBuffer(""+i).reverse()+"")).sum()( 103 바이트 -수입과 람다 매개 변수가 추가 된 현재 답변은 117 바이트 입니다.) 여전히 +1, 좋은 답변입니다!
케빈 크루이 센

@KevinCruijssen 소중한 의견을 보내 주셔서 감사합니다. 답변을 업데이트하겠습니다. 감사. :)
CoderCroc

3

Japt , 7 5 바이트

@Shaggy 덕분에 -2 바이트

õs xw

온라인으로 사용해보십시오!

설명

õ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.

이전 솔루션, 7 바이트

의 멋진 사용이기 때문에 이것을 유지하십시오 z2.

õs z2 x

온라인으로 사용해보십시오!

설명

õ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
당신은 알고 z2평면 배열과 동일에 w, 맞 ... 음 ... JAPT에서 내 무능력을 변명
ETHproductions

6 바이트 : õ_swÃx의 새로운 추가 덕분에 N.s(f).
Shaggy

또는 심지어 õs xw5 바이트입니다.
Shaggy

@Shaggy 나는 지금까지 아무도 5 바이트 솔루션을 언급했다고 믿을 수 없다. 6 바이트 1 은이 도전이 게시 된 후에 추가 된 경우 경쟁이 아닌 것으로 생각합니다.
저스틴 마리너

@JustinMariner도 마찬가지입니다! : D 비록 그 z2속임수 를 버리는 것은 수치스러운 일 입니다. 그것은 꽤 지독한 천재였습니다. 비경쟁은 더 이상 일이 아닙니다 .
Shaggy

3

C ++, 146 바이트

#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;}

잘 했어! 헤더를 제거하고 "네임 스페이스 std 사용"(여기에서 tio.run/#cpp-gcc 확인 )을 넣어 일부 바이트를 절약 할 수 있습니다 . 또한 "auto t"를 "t"(?)로 바꿀 수 있다고 생각합니다.
koita_pisw_sou

예, koita_pisw_sou가 첫 번째 부분에 관한 것입니다. 하지만 당신은 필요합니다 auto.
Zacharý

@koita_pisw_sou 바이트 수에서 헤더 지시문을 제외 할 수 있습니까? 네임 스페이스와 동일합니까? auto키워드가 필요
HatsuPointerKun

예, 내가 보낸 링크를 확인하십시오.
koita_pisw_sou

(후프, 헤더 제거에 대해 확신하지 못합니다!) 그러나 using namespace std;바이트 저장 을 언급하고있었습니다 .
Zacharý



2

RProgN 2 , 8 바이트

{Ø.in}S+

설명

{Ø.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.

온라인으로 사용해보십시오!





당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.