Để tăng trưởng số mũ và hơn thế nữa!


18

Thử thách

Cho cơ sở và chỉ số , thuật ngữ đầu ra , được xác định như sau:1<b<10t1xt

  • x1= =1110
  • xTôi+1 có được bằng cách chuyển sang cơ sở và sau đó diễn giải lại các chữ số của nó trong cơ sởxTôib10
  • Đầu ra phải ở cơ sở10

Đi bộ qua cơ sở 5, học kỳ 5 sẽ là:

  • x1= =1110 .
  • 1110= =215 nên .x2= =2110
  • 2110= =415 nên .x3= =4110
  • 4110= =1315 nên .x4= =13110
  • 13110= =10115 nên .x5= =101110
  • Chúng tôi xuất chuỗi "1011"hoặc số nguyên 1011.

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

Lưu ý: đây là một chỉ mục

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

Ghi chú

  • Sơ hở tiêu chuẩn không được phép
  • Mọi phương thức I / O mặc định đều được cho phép
  • Bạn có thể sử dụng các chỉ mục khác nhau (chẳng hạn như 0 chỉ mục, 1 chỉ mục, 2 chỉ mục, v.v.) chot
  • Bạn có thể xuất các điều khoản đầu tiên .t
  • Vì đây là , mã ngắn nhất sẽ thắng cho ngôn ngữ đó

1
Chúng ta có phải hỗ trợ các số lớn hơn hay chỉ các số lên tới 2 ^ 31 - 1?
Hiện thân của sự thiếu hiểu biết

1
@EmbodimentofIgnorance Tối đa ngôn ngữ của bạn (Tuy nhiên, hãy nhớ lỗ hổng tiêu chuẩn!)
MilkyWay90

Có một thách thức bao gồm các căn cứ> 10? (Trong trường hợp đó, bạn sẽ liên tục diễn giải 11như thể nó ở trong căn cứ bvà chuyển đổi nó trở lại căn cứ 10, v.v.)
Neil

@Neil Tôi không bao gồm các cơ sở cao hơn 10 vì (ví dụ) 4asẽ không phải là số hợp lệ trong cơ sở 10
MilkyWay90

Bạn sẽ không nhận được 4a, vì bạn sẽ diễn giải 10 chữ số cơ bản thành cơ sở bvà chuyển đổi sang cơ sở 10 mỗi lần (nghĩa là cách khác xung quanh câu hỏi này).
Neil

Câu trả lời:


6

JavaScript (Node.js) , 40 byte

Cảm ơn @Neil vì đã lưu 5 byte trên phiên bản này và 2 byte trên phiên bản BigInt

Lấy đầu vào là (t)(base), trong đó t là 1 chỉ mục.

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

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


JavaScript (Node.js) , 48 byte (phiên bản BigInt)

Lấy đầu vào là (t)(base), trong đó t là 1 chỉ mục. Trả về một BigInt.

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

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


Bạn có cần evaltrong phiên bản đầu tiên? +sẽ tiết kiệm 5 byte ...
Neil

BigIntlưu hai byte trong phiên bản thứ hai, vì bạn không cần thêm nvào chuỗi.
Neil

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):xngắn hơn 1 char
Qwertiy

@Qwertiy Nó thực sự dài hơn 1 byte, vì chúng ta cần phải trả trước f=(vì hàm này tự tham chiếu).
Arnauld

@Arnauld, ôi. Sau đó, cái này n=>b=>g=(x=11n)=>--n?g(BigInt(x.toString(b))):x:) Nếu cuộc gọi f(t)(b)()được cho phép.
Qwertiy

5

05AB1E , 5 byte

>IF¹B

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

Giải trình

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

Lưu ý rằng không cần phải bắt đầu trình tự rõ ràng ở 11 .
Bắt đầu tại base+1và thực hiện một lần lặp thêm sẽ dẫn đến lần lặp đầu tiên cho 11 .


3

Japt , 9 byte

ÆB=sV n
B

Thử nó

(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

Điều này sẽ không bao giờ có thể xuất ra thuật ngữ đầu tiên, phải không?
Xù xì

@Shaggy Đã sửa với giá hai byte
Hiện thân của sự thiếu hiểu biết vào

Được cứu một cách độc đáo :) Sẽ không nghĩ đến việc làm điều đó.
Xù xì


2

Võng mạc , 67 byte

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

Hãy thử trực tuyến! Có các đầu vào được phân tách bằng dấu phẩy t (được lập chỉ mục 0) và b . Có phải tất cả các tính toán của nó trong unary vì vậy lần ra cho số lượng lớn. Giải trình:

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

x0= =11b

"$+"{`

t

^\d+
*

xTôi

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

b

,_+

b



2

Clojure , 109 byte

Tín dụng cho MilkyWay90 để xóa 10 byte bằng cách phát hiện các khoảng trắng không cần thiết Tín dụng để thể hiện sự thiếu hiểu biết cho một byte khác từ một không gian không cần thiết khác

Chơi gôn

(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)))))))

Ung dung

(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)))))))

Tôi nghĩ rằng các byte vị trí chính có thể được lưu là biểu thức cho ... chạy lại? bất cứ điều gì sẽ được gọi là. Đặc biệt:

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

Bạn có cần những không gian đó? Bạn có thể loại bỏ không gian?
MilkyWay90

Tôi thậm chí không xảy ra với tôi để loại bỏ không gian nơi chúng đang phân tách những thứ khác biệt về mặt cú pháp; Có vẻ như Clojure dễ dãi hơn tôi nghĩ. Cảm ơn bạn!
user70585

Vẫn còn một khoảng trống không cần thiết trong(if (= t 1)
Hiện thân của sự thiếu hiểu biết

Rất tiếc, bắt tốt
user70585



1

Thạch , 8 7 byte

‘b³Ḍ$⁴¡

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

btb+1

Giải trình

‘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

Giải thích cho những người trong chúng ta không thể nhận ra các nguyên tử trong nháy mắt?
MilkyWay90




1

Brainfuck , 270 byte

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

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

Chỉ số 0. Số lần lặp được giả định là tối đa 255.

Giải trình

Các băng được đặt ra như sau:

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

Mỗi chữ số thực sự được lưu dưới dạng chữ số đó cộng với 1, với 0 được dành riêng cho "không có thêm chữ số". Trong quá trình chuyển đổi cơ sở, các chữ số hiện đang được làm việc được di chuyển một ô sang bên phải và cơ sở được di chuyển sang bên trái của khu vực làm việc hiện tại.

++<<++              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

Than , 14 byte

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

tb

≔11ζ

x0= =11

FN

b

≔⍘IζIηζ

xTôi

ζ

xt





0

PHP , 83 75 byte

function c($b,$t,$v=11){return $t==1?$v:c($b,$t-1,base_convert($v,10,$b));}

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

Công cụ này sẽ chỉ hoạt động với các số "nhỏ" (ví dụ: không phải trường hợp kiểm tra 1 và 4)



0

Gaia , 8 byte

Bd
11@↑ₓ

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

Đưa 0 dựa trên iterationssau đó 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


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.