Java 7でthis code-golf challengeを実行しようとしました。知らない人のために:code-golfはできるだけ少ないバイトで特定のタスクを完了することです。明らかに、Javaは、特にJellyのような言語でこれを行うのに適したプログラミング言語ではありません。 05AB1E; Pyth; Javaで75〜300になる1-15バイトのタスクを完了した人も同様ですが、私はそれを楽しいものにしています。1年目に予期せぬ結果を出すカレンダー
Here is my current Java 7 answer.ただ参考のために、私はまた、ここでそれをコピーします:
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;}
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));
}
}
月の最後の日が月曜日になっているすべての1-インデックス付きヶ月を出力します:
1 2 10 **
5
9
1 7
2 10
1 2 10
結果がリンクされたチャレンジの結果と比較されるときに気付くかもしれませんが、res 1年目の最期は間違っています。
なぜ誰が知っていますか?もともと、私はCalendar.getInstance()
がデフォルトとして誤ったカレンダーを持っていると思ったので、チャレンジに指定されているようにnew GregorianCalendar()
に変更しました。しかし、これは既定のカレンダーであることに気付きました。
なぜ1年目で間違った結果が出るのですか?
http://stackoverflow.com/questions/8263220/calendar-set-year-issue –