包装分发

2021-02-19 20:21

在工作中,我发现了一个很好且简单的挑战。工作是在货物单元中以特定的方式储存产品能力。自从一个订单可以有不同的批次,从生产开始依次进行,我们通常会列出每

解答动态

  • 订单号:

                    • A

                      • 30件

                            • B

                              • 38件

                                  • C

                                    • 12件

                                      • ,我们的货物可装12件我们会做这个的列表:
                                        A

                                        • 12 12 6-B

                                          • -6 12 12 8-C

                                            • -4 8// 其中x-表示x件将与下一行的-y件一起存储,z//表示在这些z件之后有一个不同的订单,因此我们不能再添加任何内容,最后一批货物已经完成。
                                              task 在这个挑战中,您必须获取生产表并一个货物容量和输出分配的清单。
                                              规格 生产表是以一系列数字的形式表示的批次数量。
                                              您只需输出分配的数量,我们不关心上面提到的附加符号-//
                                              每个批次必须单独分配,因此输出是一个清单你可以用任何合理的格式表示的列表,只要指定它并且保持一致就可以了即:每批至少有一个工件货物单位可以包含至少一个工件订单(输入列表)至少有一个批次 ,因此只能处理正整数(gt;[[12,12,6],[6,12,12,8],[4,8]][1],1=gt;[[1,1]][1],2=>;[[1]][1,12,34)、34、34、34、20、20、20、20、20、20、20、7、20、7、20、7、7、7[5)、1、1、1、1、1、1、1、1、1、1、1、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15、15 4],[11,15,8],[7,1],[14,15,1],[14,15,2],[9],[4,8]]规则输入/输出可由以下公式给出:方便吗方法。你呢可以将它打印到标准输出,作为函数结果或错误消息返回可接受。标准漏洞是禁止。这个代码高尔夫是不是所有的高尔夫规则都适用,最短的代码(以字节为单位)获胜。 Sandbox

                                              • J,36 34 27 24 bytes (]amp;:-)I. 试试看在线!
                                                -3 bytes感谢bubbler
                                                将容量作为左arg,生产表作为右arg。
                                                如何使用12 f 30 38 12作为示例。
                                                (…)I.将右arg扩展为具有30 0、38 1和12 2的掩码的并矢钩子:
                                                0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 #\amp;:-。左边的#12表示大小为12的块,#\将计算在内各:
                                                1212 8 [:I.使用我们之前使用的相同扩展技巧将每个现有的扩展为一个唯一的整数:
                                                00 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 55 5 5 6 6 6 6 6 6 ]…/。使用步骤1中的掩码将上一步的输出分组为大小为30、38和12的组:
                                                0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 (#/。~)/。对于这些群体中的每一个,按价值自我分组,返回每个表中项目数的列表组别:
                                                12 ________ ________ 12 _________ ___ 6 ___ / \ / \ / \ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 ___ 6 ___ ________ 12 _________ ________ 12 _________ _____ 8 _____ / \ / \/\/\2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 最后,将这些结果分别框起来<;@因为J不允许不规则数组。

                                                • Stax,19字节

                                                  • ?ΘΘ 运行并调试it
                                                    Ex刨削:未包装源:
                                                    {i]*m$s/{Rm:f{h}/mmhj隐式输入:12[30 38 12]{i]*m:Map over阵列:i]:带索引的Push singleton数组,例如[1]*:按相应元素重复,例如[1。。。(38次)]结果:[[gt;][gt;][gt;]$:展平:[gt;gt;gt;]s/:拆分为最大包大小的组:[[gt;][gt;][gt;gt;][gt;][gt;];4乘以2lt;8乘以2>;]{

                                                    • Rm:运行长度编码每个元素:[[[0 12]][[0 12]][[0 6][1 6]][[1 12]][[1 8][2 4]][[2 8]]]:f:展平:[[0 12][0 12][0 6][1 6][1 12][1 12][1 8][2 4][2 8]]{h}/:分成第一个元素相等的组:[[[0 12][0 12][0 6]][[1 6][1 12][1 8]][[2 4][2 8]]]m:对于每个元素,例如:[[0 12][0 12][0 6]]m:转置:[[0 0 0][12 12 6]]H:第二个元素:[12 12 6]J:用空格连接:quot;隐式打印

                                                      • JavaScript(ES6),57 bytes 期望(容量)(列表)。
                                                        n=gt;a.map(g=v=gt;m?m: v,…g(v-x,m=m-x

                                                          • n)]:[],m=n) 在线试用!
                                                            Commented n=gt;//n=载货量,a[]=生产清单a.map(g=v=gt;m?m//append x=min(m,v):v,//…g(//拆分递归调用的结果:v-x,//subtract x from v m=m-x//subtract x from m;如果结果为0:

                                                              • n//使用容量为n的新货物重新启动)//递归调用结束]//数组结束://else:[],//停止递归m=n//从m=n开始)//map()结束

                                                                • ,31字节θ…eι?oνκ?f?νηf…···································θκ······!链接到详细版本的代码。以双倍行距在自己的行上输出每个条目。前任夷平面:
                                                                  umθ…eι?oνκ? 对于输入数组的每个元素,将其索引n次推送到预定义的空列表,然后用空数组替换它,从而创建一个主批次列表。
                                                                  f?νη 将索引列表拆分为具有给定容量的批次,并在每个批次上循环。
                                                                  f…·ι?ι 在当前批次中的每个值上循环。
                                                                  ?§θκ№κ 将值的频率推送到主批次列表。
                                                                  iθ 打印结果列表。

                                                                  • 05AB1E,9 bytes OYI÷1ε 在线试用或验证所有测试用例。
                                                                    Ex夷平面:
                                                                    O#对第一个(隐式)输入列表求和Y#将列表推到范围[0,sum]I÷#Integer除以第二个输入整数1#将其分成第一个输入列表的组值ε#映射到每个组:?γ#并对其进行游程编码,这将把值和计数作为两个分开的列表放入堆栈中,由于我们使用的是一个大映射“ε”,因此#将只保留最上面的一个带有计数#(之后将隐式输出结果)

                                                                    • End

                                                                    免责声明:

                                                                    本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。