올림픽 반지 순서 도전: 인덱스 정수

도전:

인덱스 정수 감안할 때 n, 중 출력 n순서 최대 인덱스를 포함하여이 순서의 ‘일 항목 또는 출력 n:

25,25,7,28,29,20,21,22,23,14,35,26,7,28,29,20,16,29,12,15,28,21,14,17,30,13,16,29,12,15,28,21,10,6,12,18,15,11,7,13,19,17,13,9,15,21,18,14,10,16,22,19,15,11,17,23,20,16,12,18,24,21,17,13,19,25,23,19,15,21,27,24,20,16,22,28,25,21,17,23,29,16,13,9,15,21,18,14,10,16,22,20,16,12,18,24,21,17,13,19

이 순서는 어떻게 작동합니까?

참고 :이 설명에서 인덱스 n는 1 인덱스입니다.
숫자 넣어 1통해 x길이의 두 라인에 n*6 - 1, x의 숫자 합계 후 현재 반복 사용 된 번호의 길이에 의존하고, n이들 두 줄의 “일 / 가장 오른쪽 올림픽 반지.

시퀀스의 첫 번째 숫자는 다음과 같이 계산됩니다.

The length of the lines are 5 (because 1*6 - 1 = 5):
12345
67891(0)

Then leave the digits in an Olympic Rings pattern:
1 3 5
 7 9

And sum them:
1+3+5+7+9 = 25

그래서 n=1결과 25.

시퀀스의 두 번째 숫자는 다음과 같이 계산됩니다.

The length of the lines are 11 (because 2*6 - 1 = 11):
12345678910
11121314151(6)

Then leave the digits in the second/right-most Olympic Rings pattern:
      7 9 0
       4 5

And sum them:
7+9+0+4+5 = 25

그래서 n=2결과 25.

시퀀스의 세 번째 숫자는 다음과 같이 계산됩니다.

The length of the lines are 17 (because 3*6 - 1 = 17):
12345678910111213
14151617181920212(2)

Then leave the digits in the third/right-most Olympic Rings pattern:
            1 2 3
             0 1

And sum them:
1+2+3+0+1 = 7

그래서 n=3결과 7.

기타

도전 규칙 :

  • 때 출력 n‘순서 번째 항목이, 대신 1 인덱스의 0 인덱스로 입력을 할 수 있지만,의 계산이 있음을 염두에 두어야하는 n*6 - 1다음이 될 것 (n+1)*6 - 1(n+1)*5 + n.
  • 길이에 도달하면 첫 번째 줄의 끝에서 두 자리 이상의 단일 숫자를 나눌 수 있으므로 n*5 + n-1두 개 이상의 숫자가있는 숫자는 부분적으로 1 행의 후미 부분이 될 수 있습니다. 2 행의 앞 부분

일반 규칙:

  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. ‘모든’프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 리턴 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트 링크를 추가하십시오.
  • 또한 필요한 경우 설명을 추가하십시오.

테스트 사례 :

다음은 테스트 사례 1-1,000의 붙여 넣기 저장소 이므로 자유롭게 선택할 수 있습니다.

몇 가지 더 높은 테스트 사례 :

1010:   24
1011:   24
2500:   19
5000:   23
7500:   8
10000:  8
100000: 25



답변

껍질 , 16 바이트

ΣĊ2ṁ↑_5↑2CṁdN←*6

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

H.PWiz 덕분에 -3 바이트 .

(빨강) 설명 :

ΣĊ2ṁ↑_5↑2CṁdN←*6⁰
Σ                 Sum
 Ċ2                Drop every second element
   ṁ↑_5             Map "take last 5 elements", then concatenate
       ↑2            Take first 2 elements
         C            Cut x into sublists of length y
          ṁdN          [1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,...] (x)
             ←         Decrement (y)
              *6        Multiply with 6
                ⁰        First argument


답변

망막 , 70 68 62 바이트

.+
10**
.
$.>`
~(`.+
6*$+*
)`.(.+)
L`.{$.1}
%,-6`.

,2,9`.
*
_

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

설명

입력 n을 호출 3하면 예제로 사용하겠습니다 .

.+
10**

10**짧은에 대한 10*$&*_어떤의 문자열 입력을 대체 10N의 밑줄.

.
$.>`

이제 각 밑줄을 밑줄을 포함하여 문자열의 길이로 바꿉니다. 따라서 이것은 단지 1 에서 10n 까지의 숫자가 모두 함께 연결됩니다 ( 10n 은 항상 필요한 길이의 두 줄을 채우기에 충분합니다).

~(`.+
6*$+*

평가! 이 단계와 다음 단계는 다른 프로그램의 소스 코드를 생성 한 다음 연결된 정수 문자열에 대해 실행됩니다.

해당 프로그램을 생성하기 위해이 단계는 먼저 정수를 6n 밑줄로 바꿉니다 ( $+프로그램의 원래 입력 참조).

)`.(.+)
L`.{$.1}

로 그 다음 그 밑줄을 대체 L`.{…}어디에 이다 6N-1 (선 우리가보고있는 길이). 그래서 우리는 정규 표현식을 생성했습니다. 정규 표현식은 수량자가 원래 입력에 따라 다릅니다.

이 프로그램이 평가되면 길이 6n-1의 청크와 일치 하며 그 중 두 개 이상이 있습니다. 예제 입력의 경우 다음 3과 같이 끝납니다.

12345678910111213
14151617181920212
22324252627282930

이제 관련 숫자를 추출하면됩니다.

%,-6`.

먼저, 각 줄 ( %)에서 마지막 5 자리 ( ,-6)를 제외한 모든 숫자를 제거합니다 . 그게 우리에게

11213
20212
82930

드디어:

,2,9`.
*

단항 2의 처음 10 자리 ( 9, 이것은 0부터 시작 )의 다른 모든 숫자 ( )를 확장합니다 . 이들은 올림픽 링 포지션에있는 사람들입니다.

_

그리고 밑줄의 수를 세어 합산하고 결과를 10 진수로 변환합니다.


답변

파이썬 2 , 94 90 바이트

n=input()*6
s=''.join(map(str,range(n*2)))
print sum(map(int,s[n-5:n:2]+s[n*2-5:n*2-1:2]))

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


답변

Japt , 33 32 30 29 28 27 바이트

아, 이쁘지 않아요!

1 차 인덱스로 n 번째 항을 출력합니다 .

*6É
*2 õ ¬òU mt5n)¬¬ë2 ¯5 x

시도 해봐


설명

                         :Implicit input of integer U           :e.g., 3
*6É
*6                       :Input times 6                         :18
  É                      :Subtract 1                            :17
   \n                    :Assign the above to variable U

*2 õ ¬òU mt5n)¬¬ë2 ¯5 x
*2 õ                     :[1,U*2]                               :[1,2,3,...,33,34]
     ¬                   :Join to a string                      :"123...3334"
      òU                 :Partitions of length U                :["123...13","1415...212","22324...30","31323334"]
         m               :Map
          t5n)           :  Get last 5 characters               :["11213","20212","82930","23334"]
              ¬          :Join to a string                      :"11213202128293023334"
               ¬         :Split to an array                     :["1","1","2","1","3","2","0","2","1","2","8","2","9","3","0"],["2","3","3","3","4"]]
                ë2       :Get every second element              :["1","2","3","0","1","8","9","0","3","3"]
                   ¯5    :Get first 5 elements                  :["1","2","3","0","1"]
                      x  :Reduce by addition                    :7
                         :Implicit output of result


답변

파이썬 2 , 97 바이트

n=input()*6;k=1;s=''
exec's+=`k`;k+=1;'*n*2
print sum(int(s[p])for p in(n-2,n-4,n-6,n*2-4,n*2-6))

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


답변

파이썬 3, 129123 바이트

p=lambda r,x='',i=1:sum(map(int,str(x[6*r-2]+x[6*r-4]+x[6*r-6]+x[12*r-4]+x[12*r-6])))if len(x)>12*r-2else p(r,x+str(i),i+1)

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

이것은 꽤 엉망이지만 작동합니다.


답변

05AB1E , 22 21 20 바이트

6*<xLJsô2£íε5£}SāÉÏO

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

설명

6*<                    # push input*6-1
   xL                  # leave it on the stack while pushing [1 ... 12*input-2]
     J                 # join the numbers to a single string
      sô               # split the string into pieces of size input*6-1
        2£             # take the first 2 such pieces
          í            # reverse each string
           ε5£}        # take the first 5 chars of each
               S       # split to a single list of digits
                ā      # push range [1 ... len(list)]
                 ÉÏ    # keep only the numbers in the list of digits which are odd in this
                   O   # sum

대체 21 바이트 접근

6*<©·LJƵYS24S®-ì®-(èO