기하 급수적 인 성장과 그 너머로!


18

도전

밑이 이고 색인 주어지면 출력 항 는 다음과 같이 정의됩니다.1<<101엑스

  • 엑스1=1110
  • 엑스나는+1 를 밑수 로 변환 한 다음 밑수 다시 해석하여 을 구합니다엑스나는10
  • 출력은 이어야합니다.10

5 번 항의 5 단계는 다음과 같습니다.

  • 엑스1=1110 입니다.
  • 1110=215 x 2 = 21 10 이므로 입니다.엑스2=2110
  • 2110=415 x 3 = 41 10 이므로 입니다.엑스=4110
  • 4110=1315 x 4 = 131 10 이므로 입니다.엑스4=13110
  • 13110=10115 이므로 입니다.엑스5=101110
  • 문자열 "1011"또는 정수를 출력합니다 1011.

테스트 사례

참고 : 이들은 하나의 색인입니다

base 2, term 5 --> 1100100111110011010011100010101000011000101001000100011011011010001111011100010000001000010011100011
base 9, term 70 --> 1202167480887
base 8, term 30 --> 4752456545
base 4, term 13 --> 2123103032103331200023103133211223233322200311320011300320320100312133201303003031113021311200322222332322220300332231220022313031200030333132302313012110123012123010113230200132021023101313232010013102221103203031121232122020233303303303211132313213012222331020133

노트

  • 표준 허점은 허용되지 않습니다
  • 모든 기본 I / O 방법이 허용됩니다
  • 대해 다른 색인 (예 : 0 색인, 1 색인, 2 색인 등)을 사용할 수 있습니다
  • 첫 번째 항을 출력 할 수 있습니다 .
  • 이것이 이므로 해당 언어에 가장 짧은 코드가 승리합니다.

1
더 큰 숫자 또는 최대 2 ^ 31-1의 숫자 만 지원해야합니까?
무지의 구현

1
무지의 @EmbodimentofIgnorance 최대 언어 (표준 허점을 기억하십시오!)
MilkyWay90

10이 넘는 기지를 포함하는 도전이 있습니까? (이 경우에는 11기본에있는 것처럼 반복해서 해석 b하고 다시 기본 10 등으로 변환합니다.)
Neil

@Neil (예를 들어) 4a10에서 유효한 숫자가 아니기 때문에 10보다 높은 염기를 포함하지 않았습니다
MilkyWay90

4a기본 10 자리를 기본으로 해석하고 b매번 10을 기본으로 변환하기 때문에 (즉,이 질문에서 다른 방법으로)을 얻지 못합니다 .

답변:


6

자바 스크립트 (Node.js) , 40 바이트

이 버전에서 5 바이트를 저장하고 BigInt 버전에서 2 바이트를 저장 한 @Neil에게 감사합니다.

입력을로 취합니다 (t)(base). 여기서 는 1 색인입니다.

n=>g=(b,x=11)=>--n?g(b,+x.toString(b)):x

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


JavaScript (Node.js) , 48 바이트 (BigInt 버전)

입력을로 취합니다 (t)(base). 여기서 는 1 색인입니다. BigInt를 리턴합니다.

n=>g=(b,x=11n)=>--n?g(b,BigInt(x.toString(b))):x

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


eval첫 번째 버전 이 필요 합니까? +5 바이트를 절약 할 수 있습니다.
Neil

그리고 문자열 BigInt에 추가 n할 필요가 없기 때문에 두 번째 버전에서는 2 바이트를 저장 합니다.

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):x1 자 더 짧습니다
Qwertiy

@Qwertiy 실제로 f=함수가 참조하기 때문에 앞에 붙일 필요가 있기 때문에 실제로 1 바이트 더 깁니다 .
Arnauld

@Arnauld, 죄송합니다. 그런 다음이 n=>b=>g=(x=11n)=>--n?g(BigInt(x.toString(b))):x:) 전화 f(t)(b)()가 허용되는 경우.
Qwertiy

5

05AB1E , 5 바이트

>IF¹B

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

설명

>       # increment <base>
 IF     # <term> times do:
   ¹B   # convert from base-10 to base-<base>

11 에서 시퀀스를 명시 적으로 시작할 필요는 없습니다 .
시작 base+1하여 추가 반복을 수행하면 첫 번째 반복이 11을 제공 합니다.


3

Japt , 9 바이트

ÆB=sV n
B

시도 해봐

(Two inputs, U and V)
Æ            Range [0..U)
 B=          For each, set B (B is preinitialized to 11) to 
   sV          B's previous value converted to base-V
   n           and back to base-10
B            Print out B's final value

이것은 결코 첫 번째 용어를 출력 할 수 없을까요?
얽히고 설킨

@Shaggy 2 바이트의 비용으로 수정 됨
무지의 구현

멋지게 저장 :) 자신을 할 생각하지 않았을 것입니다.
얽히고 설킨


2

레티 나 , 67 바이트

.+,(\d+)
11,$1*
"$+"{`^\d+
*
)+`(?=_.*,(_+))(\1)*(_*)
$#2*_$.3
,_+

온라인으로 사용해보십시오! 쉼표로 구분 된 입력 (0 색인) 및 취 합니다. 단항으로 모든 계산을 수행하면 많은 시간이 초과됩니다. 설명:

.+,(\d+)
11,$1*

엑스0=11

"$+"{`

^\d+
*

엑스나는

)+`(?=_.*,(_+))(\1)*(_*)
$#2*_$.3

,_+



2

클로저 , 109 바이트

불필요한 공간을 찾아서 10 바이트를 제거한 MilkyWay90의 크레딧 다른 불필요한 공간에서 다른 바이트에 대한 무지의 실시 예

골프

(defn f([b t](f b t 11))([b t v](if(= t 1)v(f b(dec t)(read-string(.(new BigInteger(str v))(toString b)))))))

언 골프

(defn f
  ([base term] (f base term 11))
  ([base term value] (if (= term 1)
                      value
                      (f base (dec term) (read-string (. (new BigInteger (str value)) (toString base)))))))

바이트를 저장할 수있는 주요 장소는 다음과 같은 표현이라고 생각합니다 . 그게 뭐든간에. 구체적으로 특별히:

(read-string (. (new BigInteger (str value)) (toString base)))

그 공간이 필요합니까? 공백을 없앨 수 있습니까?
MilkyWay90

그들이 구문 적으로 구별 할 수있는 것들을 분리하고 있던 공간을 제거하는 일조차 일어나지 않았다. Clojure가 생각보다 조금 더 관대 한 것처럼 보입니다. 감사합니다!
user70585

에서 불필요한 공간이 여전히있다(if (= t 1)
무지의 실시 예

Whoop, good catch 👍
user70585



1

젤리 , 8 7 바이트

‘b³Ḍ$⁴¡

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

+1

설명

‘b³Ḍ$⁴¡ | Main link: first argument b, second argument t
‘       | b + 1
    $⁴¡ | Repeat the following t times
 b³     | Convert to base b
   Ḍ    | Convert back from decimal to integer

원자를 한 눈에 알아볼 수없는 사람들을위한 설명?
MilkyWay90




1

brainfuck , 270 바이트

++<<++<,+++<-[----->-<]<,,[<-----[->++++++++++<]++>[-<+>],]<[>>>>>>[<<<[->>+<<]>>>>>]<<[[>+<-]>>[-[<++++++++++>-]>+>]<[<<]>>[-<<+>>>+<]>>[-[<-[>>+>>]>>[+[-<<+>>]>[-<]<[>]>++>>>]<<<<<-]+>[-<+<+>>]<<[->>+<<]>>>]<[-]<[[-<+>]<<]<]<[->>+<<]<-]>>>>[>>]<<[>-[-----<+>]<----.<<]

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

인덱스가 0입니다. 반복 횟수는 최대 255 인 것으로 가정합니다.

설명

테이프는 다음과 같이 배치됩니다.

num_iterations 0 0 base digit0 0 digit1 0 digit2 ...

각 숫자는 실제로 해당 숫자에 1을 더한 값으로 저장되며 0은 "더 이상 숫자 없음"으로 예약됩니다. 기본 변환 중에 현재 작업중인 숫자는 한 셀 오른쪽으로 이동하고 기본은 현재 작업 영역의 왼쪽으로 이동합니다.

++<<++              Initialize initial value 11
<,+++<-[----->-<]   Get single digit as base and subtract 48 to get actual number
<,,[<-----[->++++++++++<]++>[-<+>],]   Read multiple digits as number of iterations
<                   Go to cell containing number of iterations

[                   For each iteration:
  >>>>>>              Go to tens digit cell
  [<<<[->>+<<]>>>>>]  Move base to just before most significant digit
  <<                  Return to most significant digit

  [                   For each digit in number starting at the left (right on tape):
    [>+<-]            Move digit one cell to right (to tell where current digit is later)
    >>[-[<++++++++++>-]>+>]  Multiply each other digit by 10 and move left
    <[<<]>>           Return to base
    [-<<+>>>+<]       Copy base to just before digit (again) and just before next digit to right (left on tape)
    >>[               For each digit at least as significant as this digit:

      -[<-[>>+>>]>>[+[-<<+>>]  Compute "digit" divmod base
      >[-<]<[>]>++    While computing this: add quotient to next digit; initialize digit to "1" (0) first if "0" (null)
      >>>]<<<<<-]     End of divmod routine

      +>[-<+<+>>]     Leave modulo as current digit and restore base
      <<[->>+<<]      Move base to next position
      >>>
    ]

    <[-]<             Delete (now useless) copy of base
    [[-<+>]<<]<       Move digits back to original cells
  ]                   Repeat entire routine for each digit

  <[->>+<<]           Move base to original position
  <-                  Decrement iteration count
]

>>>>[>>]<<[>-[-----<+>]<----.<<]  Output by adding 47 to each cell containing a digit

0

, 14 바이트

≔11ζFN≔⍘IζIηζζ

≔11ζ

엑스0=11

FN

≔⍘IζIηζ

엑스나는

ζ

엑스







0

Gaia , 8 바이트

Bd
11@↑ₓ

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

0부터 iterations시작 base합니다.

Bd		| helper function: convert to Base b (implicit) then convert to base 10
		| main function:
11		| push 11
  @		| push # of iterations
   ↑ₓ		| do the above function (helper function) that many times as a monad


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