首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化我的法术施放!

优化我的法术施放!
EN

Code Golf用户
提问于 2013-11-19 11:23:24
回答 1查看 645关注 0票数 8

我是个年轻的巫师,在我的魔法遭遇中,我非常努力地避免浪费法力。

我有X法术在任何特定的时间可用,他们每一个都有自己的法力消耗Y。

X,Y是严格低于11的正整数。

作为初学者,我的法力池波动很大(它总是低于11),我需要帮助尽可能少施展法术(卷轴是昂贵的,你知道),同时清空我的法力池。如果你找不到任何与我法力池大小完全匹配的法术组合,那么你应该给我提供最接近(而且更便宜)的法术组合。

我来到你和你无限的智慧,帮助我成为最伟大的黑暗巫师。我不会失望的。

输入样式(因为样式就是一切):

A、b、c、d、e、f

Y是法力池的大小。(a,b,c,d,e,f)是咒语。有6个法术,第一个消耗'a‘法力,第二个法术消耗'b’魔法,等等。

投入: 4;1 2 3 3 7 6

我有4个法力可用,6个法术可用。两个法术消耗1法力,1个法术消耗2法力,2个法术消耗3法力,等等。

输出:(3,1)

投入: 3;1 3 5 2 10

产出:(3)

投入:8;4 1 9

产出:(4,1)

投入: 4;1 2 2 3

产出:(2,2),(1,3)

你应该输出每一个组合的法术,但是没有必要区分相同的法术。

对任何你想要的机器来说,最短的咒语都会得到大量的感谢和命运的鞭子。

EN

回答 1

Code Golf用户

发布于 2013-11-27 00:14:58

Mathematica 131

一定有更短的方法,但这是我能想到的。

代码语言:javascript
复制
l=Length;
f[{a_,b_}]:=Select[t=Cases[s=SortBy[Union@Cases[Subsets[b],x_/;0<Tr@x<a+1:>{x,Tr@x}],Last],
{x_,s[[-1,2]]}:> x],l@#==l@t[[1]]&]
代码语言:javascript
复制
f[{4, {1, 2, 3, 7, 6}}]

{1,3}

代码语言:javascript
复制
f[{3, {1, 3, 5, 2, 10}}]

{{3}

代码语言:javascript
复制
f[{8, {4, 1, 9}}]

{4,1}

代码语言:javascript
复制
f[{4, {1, 2, 2, 3}}]

{1,3},{2,2}

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/15325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档