我正在使用foobar. with google task“Please Pass the Coded Messages”,我在我的电脑上对每个可能的数字进行了正确的计算,但是foobar打印出“Test 5 failed [Hidden]”这个隐藏测试是什么意思?
我的成果:
正在验证解决方案...
测试1通过!
测试2通过!
测试3通过!
测试4通过!
测试5失败[隐藏]
请传递编码消息
你需要给兔子工作人员传递一个信息,但为了避免被发现,你同意使用的代码是......模糊的,至少可以说。兔子们被给予食物的标准发行的盘子上印有数字0-9,以便更容易分类,而且你需要合并几组盘子来创造代码中的数字。一个数字是代码的一部分的信号是它能被3整除。你可以很容易地计算出15和45这样的小数字,但是像144和414这样的大数字就有点棘手了。在给定有限的盘子数量的情况下,编写一个程序来帮助自己快速创建大数字,以便在代码中使用。
你有L,一个包含一些数字的列表(0到9).写一个函数解(L)找出可以由这些数字中的部分或全部组成并且可被3整除的最大数。如果不能组成这样的数,则返回0作为解决方案。L将包含1到9位的任何数字。相同的数字可能在列表中出现多次,但是列表中的每个元素只能使用一次。
语言
要提供Java解决方案,请编辑Solution.java要提供Python解决方案,请编辑solution.py
测试用例
您的代码应该通过以下测试用例。请注意,它也可以针对此处未显示的隐藏测试用例运行。
-- Java cases -- Input:Solution.solution({3,1,4,1})输出:4311
输入:Solution.solution({3,1,4,1,5,9})输出:94311
-- Python cases -- Input:solution.solution([3,1,4,1])输出:4311
输入:solution.solution([3,1,4,1,5,9])输出:94311
使用verify [file]测试解决方案并查看其效果。完成代码编辑后,使用submit [file]提交答案。如果解决方案通过测试用例,则将从主文件夹中删除该解决方案。
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class Solution {
public static int solution(int[] l) {
List<Integer> initList = new ArrayList<>();
List<Integer> resList = new ArrayList<>();
Queue<Integer> rem0queue = new LinkedList<>();
Queue<Integer> rem1queue = new LinkedList<>();
Queue<Integer> rem2queue = new LinkedList<>();
StringBuilder sbResult = new StringBuilder();
int result = 0, sum = 0, rem;
for(int x: l){
if(x < 0) return result;
initList.add(x);
}
Collections.sort(initList);
//System.out.println(initList);
for(int y: initList) {
sum += y;
if((y % 3) == 0) rem0queue.add(y);
else if((y % 3) == 1) rem1queue.add(y);
else rem2queue.add(y);
}
if(sum == 0) return result;
rem = sum % 3;
switch (rem) {
case 0:
resList.addAll(rem0queue);
resList.addAll(rem1queue);
resList.addAll(rem2queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
result = Integer.parseInt(sbResult.toString());
break;
case 1:
if(!rem1queue.isEmpty()) rem1queue.remove();
else {
if(!rem2queue.isEmpty()) rem2queue.remove();
if(!rem2queue.isEmpty()) rem2queue.remove();
}
resList.addAll(rem1queue);
resList.addAll(rem2queue);
resList.addAll(rem0queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
//if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
result = Integer.parseInt(sbResult.toString());
break;
case 2:
if(!rem2queue.isEmpty()) rem2queue.remove();
else {
if(!rem1queue.isEmpty()) rem1queue.remove();
if(!rem1queue.isEmpty()) rem1queue.remove();
}
resList.addAll(rem2queue);
resList.addAll(rem1queue);
resList.addAll(rem0queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
//if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
result = Integer.parseInt(sbResult.toString());
break;
}
//System.out.println("Sum of digits " + sum + "\n" + "Rem num " + rem + "\n"+ "Result num " + sbResult);
return result;
}
}
1条答案
按热度按时间1u4esq0p1#
例如,尝试输入数组{5}或{5,5}