challenge 年間カレンダー

nを入力としてn年の年間カレンダーを返すプログラムを作ってください
少なくとも日曜日と土曜日が判別出来るようにしてください
出力は標準出力でもファイルでも構いません
デザインは各自のお好みで

出力例1:
(y-calendar 2008)=>
#=Saturday, @=Sunday
2008/1 1 2 3 4 #5 @6 7 ...
2008/2 1 #2 @3 4 5 6 7 ...
...
2008/12 1 2 3 4 5 #6 @7 ...

出力例2:
(y-calendar 2008)=>
        M T W T F S S M
2008/ 1   1 2 3 4 5 6 7 ...
2008/ 2         1 2 3 4 ...
...
2008/12 1 2 3 4 5 6 7 8 ...

出力例3:
(y-calendar 2008)は2008.htmlを出力する
2008.htmlの中身
----
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>2008 calendar</title>
<style type="text/css">
* {font-family: monospace;}
span {margin: 0px 3px;}
span.sunday {color:red;font-weight:bold;}
span.saturday {color:blue;font-weight:bold;}
dd ul li{display:inline;}
</style>
</head>
<body>
<h1>2008 calendar</h1>
<dl>
<dt>2008/1</dt>
<dd><ul>
<li><span class="weekday">1</span></li>
<li><span class="weekday">2</span></li>
<li><span class="weekday">3</span></li>
<li><span class="weekday">4</span></li>
<li><span class="saturday">5</span></li>
<li><span class="sunday">6</span></li>
...
</ul></dd>
...
</dl>
</body>
</html>
----

Posted feedbacks - diff

何となく修正
1
2
3
4
5
6
7
8
9
--- calendar.cs.old     Sun Dec 30 10:22:50 2007
+++ calendar.cs Sun Dec 30 18:23:04 2007
@@ -6,10 +6,8 @@
-            Console.WriteLine("SUN MON TUE WED THR FRI SAT");
-            for(int i = 0; i < week; i++) {
-                Console.Write("    ");
-            }
+            Console.WriteLine("SUN MON TUE WED THU FRI SAT");
+            Console.Write    ("                           ".Substring(0, week * 4));

他言語化。(ウィンドウタイトルはそのままだけど、まあいいか)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- MeApp.java.old  Mon Dec 31 18:21:09 2007
+++ MeApp.java  Mon Dec 31 18:21:22 2007
@@ -35,7 +35,7 @@
 class MeMonthPanel extends JPanel {
     public MeMonthPanel(int year, int month) {
         setLayout(new BorderLayout());
-        add(new JLabel(String.format("%dŒŽ", month), JLabel.CENTER), BorderLayout.NORTH);
+        add(new JLabel(new DateFormatSymbols().getMonths()[month - 1], JLabel.CENTER), BorderLayout.NORTH);
         add(new MeMonthCanvas(year, month), BorderLayout.CENTER);
     }
 }

Tk.LabelFrameを使ってみた。

 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
--- 1.py    Mon Dec 31 18:42:39 2007
+++ 2.py    Mon Dec 31 18:44:14 2007
@@ -10,20 +10,14 @@
     for row in xrange(row_count):
         frame.grid_rowconfigure(row, weight=1)
 
-class MonthPanel(Tk.Frame):
+class MonthPanel(Tk.LabelFrame):
     def __init__(self, master, year, month):
-        Tk.Frame.__init__(self, master)
+        Tk.LabelFrame.__init__(self, master, text=u"%dŒŽ" % month)
 
-        label = Tk.Label(self, text=u"%dŒŽ" % month)
-        label.pack(side=Tk.TOP, fill=Tk.X)
-
-        frame = Tk.Frame(self)
-        frame.pack(side=Tk.TOP, fill=Tk.BOTH, expand=True)
-
-        grid_configure(frame, 7, 7)
+        grid_configure(self, 7, 7)
 
         def create_label(row, col):
-            label = Tk.Label(frame, bg="white")
+            label = Tk.Label(self, bg="white")
             label.grid(row=row, column=col, sticky="news", padx=1, pady=1)
             return label

Index

Feed

Other

Link

Pathtraq

loading...