지수 시퀀스


13

Bochnia * 에 위치한 가장 오래된 폴란드 소금 광산 은 1248 년에 시작되었으며, 이는 우리가 마법의 숫자로 생각할 있습니다. 우리는 지수 순서에서 4 자리 숫자와 같다는 것을 알 수 있습니다 : 2 ^ 0, 2 ^ 1, 2 ^ 2, 2 ^ 3.

날짜는 실제로 시퀀스에서 4 자리이므로 더 길게 만들 수 있습니다. 무한대에 도달 할 때까지이 과정을 반복 할 수 있습니다. 숫자를 제한하면 시퀀스는 다음과 같습니다.2048

124816326412825651210242048

좀 더 나아 보이도록 숫자를 구분할 수 있습니다.

1|2|4|8|16|32|64|128|256|512|1024|2048

날짜보다 긴 순서로 사용자 지정을 시도해 봅시다. 예를 들어 5 자리 숫자를 원한다고 가정 해보십시오. 두 가지 이상의 가능성이 있습니다.

  • 24816
  • 81632
  • 64128

또는 3 자리 숫자 :

  • 124
  • 248
  • 816

여기에 3 자리 숫자를 추가 할 수도 있지만 시퀀스에는 두 개 이상의 숫자 가 있어야한다고 가정 해 봅시다 .

* 영어 위키 백과에는 이에 대한 정보가 없습니다. 폴란드어 버전을 입력하면 있습니다. 광산을 방문하면 근로자들도 1248 년에 시작되었다고 말할 것입니다.

도전

위의 예 에서처럼 2를 밑으로하여 지수 순서를 만듭니다.

2-27 범위의 숫자가 주어지면 입력과 같은 자릿수로 시퀀스의 모든 가능한 부분 (원하는 경우 2048 이상)을 출력하십시오. 48116을 반으로 자르기 때문에 숫자를자를 수 없으므로 같은 출력 은 유효하지 않습니다.

규칙 :

  • 표준 허점 은 금지되어 있습니다.
  • 입력이 범위 내의 숫자라고 가정 할 수 있습니다.
  • 프로그램은 범위 (28+)보다 큰 입력을 받아 들일 수 있지만 점수가 증가 / 감소하지는 않습니다.
  • 출력의 공백은 무시됩니다. like 124또는 like를 출력 할 수 있습니다 4 8 16.
  • 다른 가능성은 목록의 문자 ,./|또는 줄 바꿈 으로 구분해야합니다 .
  • 배열로 출력 할 수 있습니다.
  • 모든 가능성은 최소한 2 개의 다른 숫자를 포함해야 합니다 .
  • 시퀀스 의 일부 를 출력해야합니다. 다음과 같이 서로 인접하지 않은 숫자는 혼합 할 수 없습니다 14.
  • 하드 코드 된 출력은 허용되지 않지만 전체 시퀀스를 포함하는 문자열 / 숫자 / 배열을 하드 코드 할 수 있습니다.
  • 입력 27은 전체 2048 시퀀스를 반환해야합니다.
  • 앞에서 언급했듯이 숫자를 자르지 마십시오 . 전의. 16머물러야합니다 16– 사용할 수 없습니다 481– 반드시 사용해야 4816합니다.
  • 편집 : 나는 거기에 뭔가 잘못 말했을 수 있습니다; 2048은 프로그램이 마지막으로 지원해야하는 숫자이며 더 큰 int를 지원할 수 있습니다.

테스트 사례

입력: 2

12, 24, 48

입력: 3

124, 248, 816

입력: 4

1248, 4816, 1632, 3264

입력: 5

24816, 81632, 64128

입력: 27

124816326412825651210242048

그리고 나중에 숫자 ...

테스트 사례 중 하나라도 실수 한 경우 알려주거나 질문을 편집하십시오.


이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!


1
따라서 이것은 기본으로 2 만 있습니다. 맞습니까? 질문에서 그것을 명확히 할 수 있습니까? 그것이 "Sequence of Exponentiations"에 의해 암시되는지는 확실하지 않지만, 그것이 있다고해도 저를 모르는 사람들이있을 것입니다.
cole

@cole 사실, 그렇습니다. 단지 2입니다. 언급 해 주셔서 감사합니다!
RedClover

1
줄 바꿈으로 출력을 분리 할 수 ​​있습니까?
H.PWiz

1
걱정 마; 내가 말했듯이, 나는 그것을 밀고있었습니다. 일부 도전 과제 작성자는 출력 형식에 대해 매우 유연 할 수 있으므로 바이트 또는 2를 위해 물어볼 가치가 있습니다.) (참고 : 제안으로 해석해서는 안됩니다!)
Shaggy

1
소개에서는 폴란드어를 대문자로 사용해야합니다. "polish"는 다른 영어 단어 입니다.
Peter Cordes

답변:


7

05AB1E , 12 11 10 바이트

최대 시퀀스 지원 2^95 = 39614081257132168796771975168

₃ÝoŒʒg≠}Jù

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

설명

₃Ý            # push range [0 ... 95]
  o           # raise 2 to the power of each
   Œ          # get a list of all sublists
    ʒ         # filter, keep elements that satisfy:
     g        # length
      ≠       # false (not equal to 1)
       }      # end filter
        J     # join each
         ù    # keep numbers of length matching the input

Outgolfer Erik 덕분에
1 바이트 절약 Riley 덕분에 1 바이트 절약


X›될 수 있습니다
Outgolfer Erik

@EriktheOutgolfer : 오 예. 나는 항상 지금 존재한다는 것을 잊어 버립니다. 감사합니다 :)
Emigna

Y₃Ým₃Ýo있습니까?
Riley

@Riley : 예. 나는 전에 그것을 가지고 있었지만 어떤 이유로 든 그것을 바꿔야합니다. 감사합니다 :)
Emigna

지금 코드를 시험해보십시오 (챌린지 종료 후 훨씬 늦음) ... 귀하의 솔루션이 빈 배열을 반환하는 것 같습니다 ... 내가 잘못하고 있습니까?
RedClover

6

Pyth, 22 21 20 17 바이트

fqQlTjLkt#.:^L2yT

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

설명

fqQlTjLkt#.:^L2yT
            ^L2yT  Get the powers of 2 up to 2^20
        t#.:       Get all consecutive sequences of at least 2
     jLk           Concatenate each
fqQlT              Get the ones whose length is the input

21 바이트 :fqQlTmjkdftlT.:m^2d12
Mr. Xcoder



18 바이트 -fqQlTjLkftT.:^L2yT
Jakube

1

4

젤리 ,  19 18  16 바이트

사양 변경으로 인해 32768의 컷오프로 이동하여이 구현에서 1 바이트를 절약 할 수 있었지만 이제는 2048이 아닌 컷오프를 사용할 수있는 더 짧은 솔루션이있을 수 있습니다.
--yep. ..

Outgolfer Erik의 덕분에 -2 바이트 ( V필터의 암묵적인 올바른 인수 및 조임을 허용 하는 데 사용)-
예, 비효율적 인 것과 매우 유사합니다. 그의 upvote 가자 !

⁴Ḷ2*Ẇṫ17VDL$⁼¥Ðf

숫자를 가져와 숫자 목록을 반환하는 모나드 링크.

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

어떻게?

⁴Ḷ2*Ẇṫ17VDL$⁼¥Ðf - Link: number, n        e.g. 3
⁴                - literal sixteen             16
 Ḷ               - lowered range               [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
  2              - literal two                 2
   *             - exponentiate                [1,2,4,8,16,32,...,32768]
    Ẇ            - all sublists                [[1],[2],...,[1,2],[2,4],...,[1,2,4],...]
      17         - literal seventeen           17
     ṫ           - tail from index             [[1,2],[2,4],...,[1,2,4],...]]
        V        - evaluate as Jelly code      [12,24,...,124,...]
              Ðf - filter keep:
             ¥   -   last two links as a dyad
           $     -     last two links as a monad:
         D       -       decimal list (of entry) (i.e. 816 -> [8,1,6] or 24 -> [2,4])
          L      -       length                  (i.e. 816 -> 3, or 24 -> 2)
            ⁼    -   equals (n)                  (i.e. 816 -> 1, or 24 -> 0)
                 - ...resulting in             [816, 124, 248]

1
인가 당신과 너무 유사? (솔직히 말 해주세요 : p)
Outgolfer Erik

재미있게도 나는 단지 사용하려고 노력했으며 V1000 대신 16에서 작동합니다 ⁴Ḷ2*Ẇṫ17VDL$⁼¥Ðf.
Jonathan Allan

나는 가장 많이 가고있다 : p
Erik the Outgolfer

@EriktheOutgolfer 그들은 이제 비슷할 수도 있지만 우리는 둘 다 그들을 유지해야한다고 생각합니다. 나는 당신이 독립적으로 당신을 생각해 냈고 나는 eval 트릭도 발견했을 것이라고 확신합니다 (정확히 그것을보고 있었기 때문에 , 체인을 올바르게 연결해야했습니다.)
Jonathan Allan

@EriktheOutgolfer 나는 당신이 남성이라는 가정을했고, 그렇게 언급되기를 원하지만 실제로는 어느 쪽도 사실을 모릅니다. 다른 대명사를 선호하는 경우 알려주십시오!
Jonathan Allan


4

Japt , 22 20 19 16 바이트

입력을 지원 639하지만 이후에 순서대로 간격이 나타나기 시작 234합니다 (지원되는 입력 범위의 전체 목록은 여기 참조 ). 문자열 배열을 출력합니다.

IÆIo!²ãX m¬lUäc

그것을 테스트

I(64)는 L(100) 으로 대체 될 수 있지만 과학적 표기법과 정밀한 부정확성이 발생합니다. 그것들을 걸러내는 것은 분명히 바이트 수를 늘리고 최대 입력만을 올립니다 736.

                     :Implicit input of integer U
I                    :64
 Æ                   :Map each X in [0,64)
  Io                 :  Range [0,64)
    !²               :  Raise 2 to the power of each
      ãX             :  Subsections of length X
         m           :  Map
          ¬          :    Join
           lU        :  Filter elements of length U
             Ã       :End map
              ¤      :Slice off the first 2 elements
               c     :Flatten


3

껍질 , 18 17 바이트

출력은 개행으로 분리됩니다

fo=⁰LmṁsftQ↑12¡D1

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

어떻게?

           ↑12¡D1    The sequence [1,2,4...2048]
              ¡      Repeatedly apply function, collecting results in a list
               D     double
                1    initially applying to 1
           ↑12       Take the first 12 elements
          Q          Get all sublists
        ft           With a length greater than 1
     mṁs             Convert each list into a string, e.g [4,8,16] -> "4816"
fo=⁰L                Keep only those whose length is equal to the input

3

젤리 , 16 바이트

ȷḶ2*ẆṫȷḊVDL$⁼¥Ðf

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

참고 : 매우 비효율적입니다. 숫자 목록을 반환합니다.


Tio는이 코드를 파싱 할 수없는 것 같습니다 ... 항상 60 초를 초과합니다 ...
RedClover


1
@Soaku 그것은 이론적으로 작동합니다-그것은 매우 비효율적이기 때문에 시간이 초과되었습니다.
Jonathan Allan

1
@Soaku 나는 내 의견을 의미했다. 나는 이미 그것들을 교체했으며 출력이 [12, 24, 48]있습니다.
Outgolfer Erik

1
@Soaku 추가 비용없이 할 수 있다면 최대한으로 가지 않겠습니까? ;)
Outgolfer Erik

3

자바 스크립트 (ES7) 102 100 바이트

로 일치하는 모든 하위 시퀀스를 인쇄합니다 alert().

l=>[...1e11+''].map((_,k,a)=>a.map((_,x)=>(s=(g=n=>x<=k|n<k?'':g(n-1)+2**n)(x)).length-l||alert(s)))

데모

NB :이 스 니펫은 결과를 버퍼링하여 사용자 친 화성을 위해 콘솔에 인쇄합니다.


3

하스켈 , 72 67 바이트

f n=[s|i<-[0..99],j<-[i+1..99],s<-[show.(2^)=<<[i..j]],length s==n]

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

Laikoni 덕분에 5 바이트 절약

길이 가 99있기 때문에 한계를 사용했습니다 .2^99> 27


27의 입력에 대해 여분의 경우를 반환합니다.
Jonathan Allan

99를 11로 바꾸면 유효 해집니다 . 그러나 2048보다 큰 숫자는 유효하지 않다고 말하지 않았습니다. 나는 2048이 최소 범위 라고만 언급했다 .
RedClover

@JonathanAllan 여전히 옳다고 생각합니다. "원하는 경우 2048 이상"633825300114114700748351602688 시퀀스를 취했습니다. 다른 솔루션 (2-27 범위)이 없음을 보장하기 때문입니다. 실제로, 나는 45 한계로 충분하다고 생각합니다 length$(show$2^44)++(show$2^45)==28.
jferard

귀하의 답변 실제로 편집 된 @ jferard (실제로는 "2048로 제한됨"). 이 경우에도 광산을 줄일 수 있습니다.
Jonathan Allan

1
@JonathanAllan 네, 실제로이 질문을 게시 한 직후 질문의 규칙 중 일부가 잘못되어 오도 된 것을 깨달았습니다.
RedClover

2

수학, 122 바이트

(s=#;FromDigits@F[f/@#]&/@Select[Subsequences[Array[2^#&,99,0]],l@#>1&&(l=Length)@(F=Flatten)[(f=IntegerDigits)/@#]==s&])&  


입력

[27]

산출

{879609302220817592186044416, 134217728268435456536870912, 524288104857620971524194304, 163843276865536131072262144, 204840968192163843276865536, 256512102420484096819216384, 641282565121024204840968192, 163264128256512102420484096, 1248163264420256256256256256256256256256128128

Input [1000]
Output  1441151880758558722882303761517117445764607523034234881152921504606846976230584300921369395246116860184273879049223372036854775808184467440737095516163689348814741910323273786976294838206464147573952589676412928295147905179352825856590295810358705651712118059162071741130342423611832414348226068484722366482869645213696944473296573929042739218889465931478580854784377789318629571617095687555786372591432341913615111572745182864683827230223145490365729367654460446290980731458735308812089258196146291747061762417851639229258349412352483570327845851669882470496714065569170333976494081934281311383406679529881638685626227668133590597632773712524553362671811952641547425049106725343623905283094850098213450687247810566189700196426901374495621121237940039285380274899124224247588007857076054979824844849517601571415210995964968969903520314283042199192993792198070406285660843983859875843961408125713216879677197516879228162514264337593543950336158456325028528675187087900672316912650057057350374175801344

2

C, 170 바이트

i,j;f(n){char t[99],s[12][5]={"1"};for(i=j=1;i<12;)sprintf(s+i++,"%d",j*=2);for(i=0;i<12;++i,strlen(t)-n||j>1&&puts(t))for(j=*t=0;strlen(t)<n&&j+i<12;)strcat(t,s+i+j++);}

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

풀림 :

i,j;
f(n)
{
    char t[99], s[12][5] = {"1"};
    for (i=j=1; i<12;)
        sprintf(s+i++, "%d", j*=2);
    for (i=0; i<12; ++i, strlen(t)-n || j>1 && puts(t))
        for (j=*t=0; strlen(t)<n && j+i<12;)
            strcat(t, s+i+j++);
}



1

apt, 24 바이트

공감하지 마십시오

이제 @Shaggy와 같은 방식으로 골프를 치는 것이 아니라는 것을 깨달았습니다. (답을 제거해야합니까?)

이 질문을 게시 한 후 오랜 시간이 지난 후, 나는 첫 골프 언어를 배웠습니다. 이 때문에 나는 여기서 행운을 시험하기로 결정했습니다.

2oI,@IÆ2pYÃãX ®q
c f_Ê¥N

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

점수는 최고가 아니며 좋지도 않지만이 작업을 수행하는 데 많은 시간이 걸렸습니다.

어떤 이유로 든 x는 길이 배열 만 반환 할 수 있기 때문에 많은 점수를 잃습니다 ... 그렇지 않으면 ~ 10 바이트 일 수 있습니다.

설명:

2oI,@IÆ2pYÃãX ®q # All 2^ combinations:
2oI              # Range 2-64
   ,@            # Map (X as index)
     IÆ          #   Range 0-64, map (Y as index)
       2pY       #   2^Y
          Ã      #   End function (map)
                 #   this = array of powers.
           ãX    #   All combinations with X length
              ®q # Join then (arrays to numbers)

c f_Ê¥N          # Filter length to input:
c                # Flatten
  f_             # Filter
    Ê            #  Length
     ¥           #  ==
      N          #  Parsed input

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