Kev*_*sen 5 java calendar date dayofweek
我试图在Java 7中进行代码 - 高尔夫挑战.只是对于任何不知道的人:code-golf是以尽可能少的字节完成某个任务.显然,Java不是一种合适的编程语言,尤其是像Jelly这样的语言; 05AB1E; Pyth; 同样以1-15个字节完成任务,在Java中为75-300,但我只是为了好玩.
这是我目前的Java 7答案.仅供参考,我也会在这里复制:
import java.util.*;String c(int y){String r="";Calendar c=Calendar.getInstance();c.set(1,y);c.set(2,0);for(int i=0;i++<11;c.add(2,1)){c.set(5,c.getActualMaximum(5));if(c.get(7)==2)r+=i+" ";}return r;}
Run Code Online (Sandbox Code Playgroud)
import java.util.*;
class M{
static String c(int year){
String r = "";
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, 0);
for(int i = 0; i++ < 11; calendar.add(Calendar.MONTH, 1)){
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
if(calendar.get(Calendar.DAY_OF_WEEK) == 2){
r += i+" ";
}
}
return r;
}
public static void main(String[] a){
System.out.println(c(1));
System.out.println(c(297));
System.out.println(c(1776));
System.out.println(c(2000));
System.out.println(c(2016));
System.out.println(c(3385));
}
}
Run Code Online (Sandbox Code Playgroud)
哪个输出所有1个索引月份,其中月份的最后一天是星期一:
1 2 10 **
5
9
1 7
2 10
1 2 10
Run Code Online (Sandbox Code Playgroud)
您在将我的结果与链接挑战中的结果进行比较时可能会注意到,第1年的结果不正确.
有谁知道为什么?最初我认为Calendar.getInstance()默认情况下日历不正确,因此我将其更改new GregorianCalendar()为挑战中指定的日期.但我意识到这已经是默认日历了.
为什么第1年的结果不正确?
不幸的是,GregorianCalendar名字很糟糕.它实际上是"Julian/Gregorian日历,它们之间有切换."
幸运的是,您可以通过将切换设置为开始时间来将其用作纯公历:
GregorianCalendar calendar = new GregorianCalendar();
calendar.setGregorianChange(new Date(Long.MIN_VALUE));
Run Code Online (Sandbox Code Playgroud)
那时候,使用你当前的代码,你得到一个只有"4"的答案 - 由于一个一个错误< 12而没有拿起12个...你想要而不是< 11.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |