Alla crescita esponenziale delle cifre e oltre!


18

Sfida

Data una base e un indice , termine di output , definito come segue:1<b<10t1xt

  • x1=1110
  • xi+1 si ottiene convertendo in base e quindi reinterpretando le sue cifre in basexib10
  • L'output dovrebbe essere nella base10

Una passeggiata per la base 5, il termine 5 sarebbe:

  • x1=1110 .
  • 1110=215 quindi .x2=2110
  • 2110=415 quindi .x3=4110
  • 4110=1315 quindi .x4=13110
  • 13110=10115 quindi .x5=101110
  • Emettiamo la stringa "1011"o l'intero 1011.

Casi test

Nota: questi sono uno indicizzato

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

Appunti

  • Non sono ammesse scappatoie standard
  • È consentito qualsiasi metodo I / O predefinito
  • È possibile utilizzare diversi indici (come 0-indicizzato, 1-indicizzato, 2-indicizzato, ecc.) Pert
  • È possibile generare i primi termini .t
  • Poiché si tratta di , il codice più corto vince per quella lingua

1
Dobbiamo supportare numeri più grandi o solo numeri fino a 2 ^ 31 - 1?
Incarnazione dell'ignoranza

1
@EmbodimentofIgnorance Il massimo della tua lingua (ricorda però la scappatoia standard!)
MilkyWay90

C'è una sfida che include basi> 10? (In tal caso interpreterai ripetutamente 11come se fosse nella base be lo convertiresti di nuovo nella base 10, ecc.)
Neil

@Neil Non ho incluso basi superiori a 10 poiché (ad esempio) 4anon sarebbe un numero valido in base-10
MilkyWay90

Non lo otterresti 4a, dato che interpreteresti le cifre della base 10 come base be convertiresti ogni volta nella base 10 (cioè viceversa da questa domanda).
Neil

Risposte:


6

JavaScript (Node.js) , 40 byte

Grazie a @Neil per aver salvato 5 byte su questa versione e 2 byte sulla versione BigInt

Accetta input come (t)(base), dove è 1 indicizzato.t

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

Provalo online!


JavaScript (Node.js) , 48 byte (versione BigInt)

Accetta input come (t)(base), dove è 1 indicizzato. Restituisce un BigInt.t

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

Provalo online!


Devi farlo evalnella prima versione? +salverebbe 5 byte ...
Neil

E BigIntsalva due byte nella seconda versione, perché non è necessario aggiungere nalla stringa.
Neil,

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):xè più corto di 1 carattere
Qwertiy

@Qwertiy In realtà è 1 byte più lungo, perché avremmo bisogno di anteporre f=(poiché la funzione fa riferimento a se stessa).
Arnauld,

@Arnauld, oops. Quindi questo n=>b=>g=(x=11n)=>--n?g(BigInt(x.toString(b))):x:) Se la chiamata f(t)(b)()è consentita.
Qwertiy

5

05AB1E , 5 byte

>IF¹B

Provalo online!

Spiegazione

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

Si noti che non è necessario avviare esplicitamente la sequenza in 11 .
Iniziare base+1e fare un'iterazione aggiuntiva comporterà la prima iterazione dando 11 .




2

Retina , 67 byte

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

tb

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

x0=11b

"$+"{`

t

^\d+
*

xi

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

b

,_+

b



2

Clojure , 109 byte

Ringraziamenti a MilkyWay90 per la rimozione di 10 byte individuando spazi non necessari Ringraziamenti a Incarnazione dell'ignoranza per un altro byte da un altro spazio non necessario

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

Penso che il byte principale che potrebbe essere salvato sia l'espressione per ... ri-aggiustare? qualunque cosa sarebbe chiamata. In particolare:

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

Hai bisogno di quegli spazi? Puoi eliminare gli spazi?
MilkyWay90,

Non mi è nemmeno venuto in mente di rimuovere gli spazi in cui stavano separando le cose sintatticamente differenziabili; sembra che Clojure sia un po 'più permissivo di quanto pensassi. Grazie!
user70585

C'è ancora spazio inutile in(if (= t 1)
Incarnazione dell'ignoranza

Whoop, good catch 👍
user70585



1

Gelatina , 8 7 byte

‘b³Ḍ$⁴¡

Provalo online!

btb+1

Spiegazione

‘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

Spiegazione per quelli di noi che non sono in grado di riconoscere gli atomi a colpo d'occhio?
MilkyWay90,




1

Brainfuck , 270 byte

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

Provalo online!

0-indicizzati. Si presume che il numero di iterazioni sia al massimo 255.

Spiegazione

Il nastro è strutturato come segue:

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

Ogni cifra viene effettivamente memorizzata come quella cifra più 1, con 0 riservato per "non più cifre". Durante la conversione di base, le cifre su cui si sta attualmente lavorando vengono spostate di una cella a destra e la base viene spostata a sinistra dell'area di lavoro corrente.

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

Carbone , 14 byte

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

tb

≔11ζ

x0=11

FN

b

≔⍘IζIηζ

xi

ζ

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));}

Provalo online!

Questo funzionerà solo con numeri "piccoli" (ad es. Non test case 1 e 4)



0

Gaia , 8 byte

Bd
11@↑ₓ

Provalo online!

Prende iterationsquindi basato su 0 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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.