gpt4 book ai didi

java - 需要优化程序逻辑。单词问题1 Sweet1

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:30 25 4
gpt4 key购买 nike

所以我正在为我的男女混合垒球队创建一个花名册应用程序。联盟规则规定,如果两个男生连续击球,则必须有一个女生跟随。如果男女比例不平衡,这会导致问题,例如,如果有 4 个女孩和 14 个男孩,为了满足“男孩男孩”的要求,至少有一个女孩必须在击球顺序的同一轮中击球两次女孩的规则,然后她必须放在女孩队列的后面,所以下一次通过第二个女孩移动到第一个女孩位置,第三个移动到第二个,依此类推。所以到第三个或第四局我们疯狂地在收据或其他东西的背面涂写修改后的击球顺序,因为我们试图跟踪谁在何时击球。

然后,我正在创建的应用程序的目的是允许用户输入击球顺序,按下按钮,然后查看该击球顺序外推,比方说,通过顺序四次(obv 用户可以决定多少),相应地移动阵容中的女孩。

到目前为止,该应用程序允许您添加玩家、设置他们的性别并按照所需的顺序排列他们。这一切都在数据库中进行了跟踪。现在我要“按一个按钮,通过订单查看 x 次”。假设命令严格是“男男女”,我所拥有的有效。但它无法处理其中的任何变化,例如初始顺序是“男女孩男男”或“女男男”。我编写的逻辑只是忽略了这一点并将其更改为“男男女”。

我可以使用什么逻辑来正确处理任何初始击球顺序?

这是我的代码:

//pos == numerical position in the roster
public void computeKickingOrder() {
String TAG = "cKO";
// instantiate dbhandler
DatabaseHandler db = new DatabaseHandler(this);

// get all tasks
List<Player> players = db.getAllPlayers();
List<Player> guys = new ArrayList<Player>();
List<Player> girls = new ArrayList<Player>();
List<Player> theRoster = new ArrayList<Player>();

int pCount = players.size();
int cycles = 4;
Log.d(TAG, "Total Players: " + pCount);

Log.d(TAG, "Generating " + cycles + " runs through the order.");

//one cycle = guycount + guycount/2

//Iterator<Player> itr = players.iterator();
Iterator<Player> itr;

// first cycle through the whole roster and separate out guys and girls
// use cycles + 5 to ensure that there are plenty of players available in each list
for (int i = 0 ; i < cycles + 5 ; i++) {
itr = players.iterator();
while(itr.hasNext()) {
Player p = itr.next();
if(p.getGender().equals("M")) { guys.add(p); }
else { girls.add(p); }
}
}

Log.d(TAG, "guys.size(): " + guys.size());
Log.d(TAG, "girls.size(): " + girls.size());




//below code automatically creates guy guy girl order IGNORES that a girl might be first or second
int girlSpot = 0;
int guyKicks = 1;
int pos = 1;
for(int i=0; i<guys.size(); i++) {
if(guyKicks<3) {
Player p = guys.get(i);
p.setPos(pos);
theRoster.add(p);
guyKicks++;
Log.d(TAG, pos + " | " + p.getGender() + " | " + p.getName());

}

else {
guyKicks = 1;
Player p = girls.get(girlSpot);
p.setPos(pos);
theRoster.add(p);
girlSpot++;
Log.d(TAG, pos + " | " + p.getGender() + " | " + p.getName());
}

pos++;

}

最佳答案

您可以创建一个简单的状态机。查看启动顺序中的前两项,您就知道您处于什么状态。也就是说,如果您有三种状态:

state 1: guy
state 2: guy
state 3: girl

程序流程从状态 1 到状态 2,然后从 2 到 3,再从 3 回到 1。

现在,如果您查看起始顺序中的前两项,您就会知道自己处于什么状态:

[guy, guy]:  starting state 1
[guy, girl]: starting state 2
[girl, guy]: starting state 3

关于java - 需要优化程序逻辑。单词问题1 Sweet1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15623119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com