LL Golf Hole 3 - 13日の金曜日を数え上げる
Posted feedbacks - Java
毎月の 13 日が金曜かどうかを調べ上げています。
初めに現在が 13 日であるかどうか調べ、 ・13日より前なら、現在の日時を 13 日に設定 ・13日より後なら、現在の日時を翌月の 13 日に設定 とし、調べ上げを開始しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.util.*;
import static java.util.Calendar.*;
public class Count13Friday {
public static void main(String[] args) {
Calendar to = new GregorianCalendar(2013, 12, 31);
Calendar current = new GregorianCalendar();
int currentDate = current.get(DATE);
if (currentDate != 13) {
current.set(DATE, 13);
if (13 < currentDate) {
current.add(MONTH, 1);
}
}
List<Date> fridays = new ArrayList<Date>();
while (current.compareTo(to) <= 0) {
if (current.get(DAY_OF_WEEK) == FRIDAY) {
fridays.add(current.getTime());
}
current.add(MONTH, 1);
}
System.out.println("Fridays = " + fridays);
}
}
|
JavaはGolf向きじゃないんですよねー,といいつつChallenge。 基本アルゴリズムは同じで,削れるだけ削ってみました。 現在243バイト。
1 | import java.util.*;class F{public static void main(String[]a){int n=0,d;for(Calendar c=new GregorianCalendar();c.get(1)<2014;c.add(2,1)){d=c.get(5);c.set(5,13);if(d<=13&&c.get(7)==6){System.out.println(c.getTime());n++;}}System.out.print(n);}}
|
Javaで頑張って短くしてみました。 自分はこれが限界・・・。
1 | import java.util.*;public class P{public static void main(String[]s){int c=0;for(Calendar a=Calendar.getInstance();a.get(1)<2014;a.add(5,1)){if(a.get(5)==13&&a.get(7)==6){System.out.println(a.getTime());c++;}}System.out.print(c);}}
|
public class P の publicを消して、224バイト。 これがJavaの限界かな?と1日考えた自分の結論です。
括弧が一組削れます。これで222バイト。
1 | import java.util.*;class P{public static void main(String[]s){int c=0;for(Calendar a=Calendar.getInstance();a.get(1)<2014;a.add(5,1))if(a.get(5)==13&&a.get(7)==6){System.out.println(a.getTime());c++;}System.out.print(c);}}
|




takano32
#6985()
[
Ruby
]
Rating4/8=0.50
今日から2013年12月31日までの、13日の金曜日とその総数を表示してください。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: DateTime - Rubyリファレンスマニュアル
Rating4/8=0.50-0+
[ reply ]