Üstel basamak büyümesi ve ötesine!


18

Meydan okuma

Bir baz 1<b<10 ve bir indeks t≥1 verildiğinde , çıkış terimi xt , aşağıdaki gibi tanımlanır:

  • x1=1110
  • xi+1 ,xib tabanınadönüştürülmesive daha sonra baz 10'daki basamaklarının yeniden yorumlanmasıylaelde edilir.10
  • Çıktı 10 bazında olmalıdır10

5. temel, 5. terim için bir yürüyüş şöyle olacaktır:

  • x1=1110 .
  • 1110=215 yanix2=2110 .
  • 2110=415 yanix3=4110 .
  • 4110=1315 yanix4=13110 .
  • 13110=10115 yanix5=101110 .
  • Dizeyi "1011"veya tamsayıyı çıkarırız 1011.

Test Durumları

Not: bunlar bir dizine eklenmiştir

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

notlar

  • Standart boşluklara izin verilmez
  • Herhangi bir varsayılan G / Ç yöntemine izin verilir
  • Farklı dizinler kullanabilir (0 endeksli gibi, 1-endeksli vb 2 endeksli) için t
  • İlk t terimlerini çıktı alabilirsiniz .
  • Bu , o dil için en kısa kod kazanır

1
Daha büyük sayıları mı yoksa sadece 2 ^ 31 - 1'e kadar olan sayıları mı desteklememiz gerekiyor?
— Cehaletin Somutlaşması

1
@EmbodimentofIgnorance Dilinizin maksimum değeri (Yine de standart boşlukları hatırlayın!)
— MilkyWay90

10'un üzerinde baz içeren bir zorluk var mı? (Bu durumda tekrar tekrar 11temelde gibi yorumlayıp , tekrar btemel 10'a dönüştürürsünüz.)
— Neil

@Neil 10'dan yüksek bazlar dahil etmedim (örneğin) 4a10 tabanındaki geçerli bir sayı olmayacaktı
— MilkyWay90

Tabii ki 4a10 basamağı temel olarak yorumlayıp bher seferinde 10 basamağını çevireceğinizden (yani bu sorudan farklı bir şekilde) yararlanamazsınız.
— Neil

Yanıtlar:


6

JavaScript (Node.js) , 40 bayt

Bu sürümde 5 bayt ve BigInt sürümünde 2 bayt kaydettiği için @Neil'e teşekkürler

Olarak girişi alır (t)(base)burada, t 1-endekslenir.

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

Çevrimiçi deneyin!


JavaScript (Node.js) , 48 bayt (BigInt sürümü)

Olarak girişi alır (t)(base)burada, t 1-endekslenir. Bir BigInt döndürür.

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

Çevrimiçi deneyin!


evalİlk versiyonda ihtiyacınız var mı? +5 bayt kurtaracaktı ...
— Neil

Ve BigIntikinci sürümde iki bayt kaydeder, çünkü ndizeye eklemenize gerek yoktur .
— Neil

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):x1 char daha kısa
— Qwertiy

@Qwertiy Aslında 1 bayt daha uzun, çünkü başa gelmemiz gerekecek f=(çünkü fonksiyon kendini referans alıyor).
— Arnauld

@ Arnauld, ayy. O zaman bu n=>b=>g=(x=11n)=>--n?g(BigInt(x.toString(b))):x:) Çağrıya f(t)(b)()izin verilirse.
— Qwertiy

5

05AB1E , 5 bayt

>IF¹B

Çevrimiçi deneyin!

açıklama

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

Sekansı 11'de açıkça başlatmaya gerek olmadığını unutmayın .
Başlamak base+1ve fazladan bir yineleme yapmak ilk yinelemenin 11 ile sonuçlanmasına neden olur .


3

Japt , 9 bayt

ÆB=sV n
B

Dene

(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

Bu asla ilk terimi çıkaramayacak, değil mi?
— Shaggy

@Shaggy İki bayt pahasına düzeltildi
— Bilgisizlik

Güzel kurtardı :) Kendini yapmayı düşünemezdim.
— Shaggy


2

Retina , 67 bayt

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

Çevrimiçi deneyin! Virgülle ayrılmış girdileri t (0 indeksli) ve b . Tüm hesaplamalarını tek başına yapar, bu yüzden büyük sayılar için zaman aşımına uğrar. Açıklama:

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

x0=11 başlatın ve b tekli'ye dönüştürün .

"$+"{`

t kez tekrarlayın .

^\d+
*

xi unary'ye dönüştürün .

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

Tabana dönüştürme b .

,_+

Çıktıdan b silin .



2

Clojure , 109 bayt

Gereksiz alanları tespit ederek 10 baytın kaldırılması nedeniyle MilkyWay90'a teşekkür ederiz . Başka bir gereksiz alandan başka bir bayt için Cehaleti Yapılandırma Kredisi

golfed

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

Ungolfed

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

Sanýrým ana yer baytlarýn kurtarýlabileceđi ... yeniden yayým için? buna ne denirdi. özellikle:

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

Bu alanlara ihtiyacınız var mı? Boşlukları ortadan kaldırabilir misiniz?
— MilkyWay90

Sözdizimsel olarak ayırt edilebilir şeyleri ayırdıkları boşlukları kaldırmak için bile bana hiç rastlamadım; Clojure düşündüğümden biraz daha izin verici görünüyor. Teşekkür ederim!
— user70585

İçinde hala gereksiz bir alan var(if (= t 1)
— Bilgisizlik

Whoop, iyi yakalama user
— user70585 21:19



1

Jöle , 8 7 bayt

‘b³Ḍ$⁴¡

Çevrimiçi deneyin!

btb+1

açıklama

‘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

Atomları hızlı bir bakışta tanıyamayanlarımız için açıklama?
— MilkyWay90




1

beyinli , 270 bayt

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

Çevrimiçi deneyin!

0 endeksli. Yineleme sayısının en fazla 255 olduğu varsayılır.

açıklama

Bant aşağıdaki gibi yerleştirilir:

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

Her basamak aslında bu basamak artı 1 olarak saklanır ve 0 "artık basamak yok" için ayrılır. Temel dönüşüm sırasında, üzerinde çalışılmakta olan rakamlar bir hücre sağa taşınır ve temel geçerli çalışma alanının soluna taşınır.

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

Kömür , 14 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Girdileri şu şekilde alırt (0 dizinli) ve b. Açıklama:

≔11ζ

x0=11.

FN

döngü b zamanlar.

≔⍘IζIηζ

Hesaplamak xben.

ζ

Çıktı xt.





0

PHP , 83 75 bayt

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

Çevrimiçi deneyin!

Bu sadece "küçük" sayılarla çalışacaktır (örn. Test durumları 1 ve 4 değil)



0

Gaia , 8 bayt

Bd
11@↑ₓ

Çevrimiçi deneyin!

O iterationszaman 0 tabanlı alır 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


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.