以指数级增长!


18

挑战

如果有一个基1<b<10和索引,输出术语,定义如下:t1xt

  • x1=1110
  • xi+1是通过将转换为以为底,然后以为底重新解释其数字而获得的xib10
  • 输出应以为底10

第5项第5项的基本步骤是:

  • x1=1110
  • 1110=215所以x2=2110
  • 2110=415所以x3=4110
  • 4110=1315所以x4=13110
  • 13110=10115所以x5=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方法
  • 您可以为t使用不同的索引(例如0索引,1索引,2索引等)t
  • 您可以输出前t项。
  • 因为这是,所以该语言的最短代码胜出

1
我们需要支持更大的数字还是仅支持2 ^ 31-1的数字?
无知的体现

1
@EmbodimentofIgnorance您所用语言的最大值(不过请记住标准漏洞!)
MilkyWay90

是否存在大于10的碱基的挑战?(在这种情况下,您会重复地将11其解释为基数,b然后将其转换回10基数,
Neil

@Neil我没有包括大于10的底数,因为(例如)4a在10底中不是有效数字
MilkyWay90

您不会得到4a,因为您将以10为基数的数字解释为以base为基数,b并且每次都转换为以10为基数(即与此问题相反)。
尼尔

Answers:


6

JavaScript(Node.js),40字节

感谢@Neil在此版本上节省了5个字节,在BigInt版本上节省了2个字节

将输入作为(t)(base),其中t为1索引。

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

在线尝试!


JavaScript(Node.js),48个字节(BigInt版本)

将输入作为(t)(base),其中t为1索引。返回一个BigInt。

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

在线尝试!


您是否需要eval第一个版本?+将节省5个字节...
尼尔

BigInt在第二个版本中保存两个字节,因为您无需添加n到字符串。
尼尔

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):x短1个字符
Qwertiy

@Qwertiy实际上,它长了1个字节,因为我们需要在前面加上前缀f=(因为该函数正在引用自身)。
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

视网膜,67字节

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

在线尝试!接受逗号分隔的输入t(索引为0的输入)和b。一元进行所有计算,所以对于大量时间超时。说明:

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

初始化x0=11并将b转换为一元。

"$+"{`

重复t次。

^\d+
*

xi转换为一元。

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

转换为基数b

,_+

从输出中删除b



2

Clojure,109位元组

感谢MilkyWay90通过发现不必要的空间来删除​​10个字节, 感谢来自另一个不必要空间的另一个字节的无知体现

打高尔夫球

(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)
在“无知”的体现

呐喊,良好的抓👍
user70585



1

果冻8 7字节

‘b³Ḍ$⁴¡

在线尝试!

一个完整的程序,需要 b 作为第一个参数和1索引 Ť作为第二个论点。返回相关术语的整数(并隐式打印)。使用@Emigna的观察有关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ηζζ

在线尝试!链接是详细版本的代码。将输入作为Ť (0索引)和 b。说明:

≔11ζ

X0=11

FN

b 次。

≔⍘IζIηζ

计算 X一世

ζ

输出量 XŤ





0

PHP83 75字节

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

在线尝试!

这仅适用于“较小”的数字(例如,不适用于测试用例1和4)



0

盖亚 8字节

Bd
11@↑ₓ

在线尝试!

iterations然后从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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.