整理清单

12

`M``L`通过在`k`保持列表排序的同时最多插入整数元素来从升序列表创建。插入的整数应该以最大前向差异`M`尽可能小的方式选择。我们将这个最小值称为“平滑度”。

输入值

• 一个非负整数`k`
• `L`包含至少2个元素的升序整数列表。

输出量

• 升序整数列表`M`
• 如果存在多个正确答案，则输出恰好其中一个（任何一个都足够）。
• 您的解决方案必须在一分钟之内在我的计算机上解决任何示例测试用例（我将仅测试关闭的用例。我的PC低于平均水平。）。

例子

``````0, 10 20 => 10 20 (10)

2, 1 10 => 1 4 7 10 (3)

2, 2 10 15 => 2 6 10 11 15 (4)

3, 2 10 15 => 2 5 8 10 12 15 (3)

5, 1 21 46 => 1 8 15 21 27 33 39 46 (7)

5, 10 20 25 33 => 10 14 18 20 24 25 29 33 (4)

3, 4 4 6 9 11 11 15 16 25 28 36 37 51 61 => 4 4 6 9 11 11 15 16 22 25 28 36 37 45 51 59 61 (8)

15, 156 888 2015 => 156 269 382 495 608 721 834 888 1001 1114 1227 1340 1453 1566 1679 1792 1905 2015 (113)

8, -399 -35 -13 56 157 => -399 -347 -295 -243 -191 -139 -87 -35 -13 39 56 108 157 (52)

5, 3 3 3 => 3 3 3 3 (0)
``````

5

Pyth，28 27字节

``````S+Qu?smt%hHrFdC,QtQ>GvzGhvz
``````

``````3
[2, 10, 15]
``````

``````S+Qu?smt%hHrFdC,QtQ>GvzGhvz

Implicit:
z is the number of insertions, in string form.
Q is the input list.
C,QtQ            Pairs of elements, e.g. [(2, 10), (10, 15)]
rFd                 d = (a, b) -> range(a, b)
%hH                    Take every H+1th element of that range
t                       And throw out the first one.
m                        Perform this process for each element pair
s                         And combine the results into one list.

The above is a minimal set of additional elements
To reduce the maximal difference to H+1.

u                     hvz    Repeat until the result stops changing, where
the prior result is G, H starts at 0 and
increases by 1 each repetition, and
G is initialized to eval(z)+1.
?               >GvzG       If not G[eval(z):], return G. In other words,
if the prior result was short enough, stop.
Also, this is always false on the initial call.
smt%hHrFdC,QtQ             Otherwise, recalculate with H incremented.
S+Q                            Take the result, add the original list, and sort.
``````

``````S+Qu?smt%hHr.udC,QtQ>GvzGhvz
``````

orlp 2015年

@orlp这是一个伟大的把戏，当我用它的方式早在一天`u`的工作不同，`e`根本不存在，`urGHd`是比较短的`rhd@d1`。我将其放在“ Pyth技巧”页面上。
isaacg 2015年

orlp 2015年

@orlp谢谢。实际上，`yvz`在时失败`vz = 0`，但是`hvz`可以解决问题。
isaacg 2015年

randomra'5

8

蟒蛇2，104

``````def f(L,k,d=1):
M=[];p=L[0]
for x in L:M+=range(p+d,x,d);p=x
return M[k:]and f(L,k,d+1)or sorted(L+M)
``````

edc65

@ edc65这真的会花很长的时间，但是在此之前我还是采用了堆栈深度的方法。
xnor 2015年