italic, *italic*
strong, **strong**
| // st = [時,分] が [0,0]~[24,0]の範囲内かどうかをチェック | |
| def isValidTime = { st -> ((0..23).contains(st[0]) && (0..59).contains(st[1])) || (st[0] == 24 && st[1] == 0) } | |
| // st1 = [時,分], st2 = [時,分] が st1 <= st2 を満たすかどうかをチェック | |
| def isNotGreaterThan = { st1, st2 -> st1[0] < st2[0] ? true : (st1[0] == st2[0] ? st1[1] <= st2[1] : false) } | |
| // pt = [開始時,開始分,終了時,終了分] が [開始時,開始分] <= [終了時,終了分] を満たすかどうかをチェック | |
| def isValidPair = { pt -> isValidTime(pt[0,1]) && isValidTime(pt[2,3]) && isNotGreaterThan(pt[0,1],pt[2,3]) } | |
| // pt1 = [開始時,開始分,終了時,終了分], pt2 = [開始時,開始分,終了時,終了分] がオーバーラップしているかどうかをチェック |
| class MyTime implements Comparable { | |
| int hour | |
| int minutes | |
| MyTime(hour, minutes) { | |
| this.hour = hour | |
| this.minutes = minutes | |
| assert isValid(), "The time ${this} is not valid." | |
| } | |
| int compareTo(that) { | |
| (hour*60+minutes) <=> (that.hour*60+that.minutes) |
| // XMLの形状は下記の通り(10x10の迷路限定) | |
| // ( from http://d.hatena.ne.jp/aya_eiya/20110329/1301406161 ) | |
| // <labyrinth> | |
| // <cell doors='East:true,West:false,South:true,North:false' position='1,1'></cell> | |
| // <cell doors='East:true,West:false,South:true,North:false' position='1,2'></cell> | |
| // ... | |
| // <cell doors='East:false,West:true,South:false,North:true' position='10,10'></cell> | |
| // </labyrinth> | |
| // | |
| // 実行後の出力結果を次のように GraphViz に与える |
| // aya_eiyaさんのお題 http://d.hatena.ne.jp/aya_eiya/20110329/1301406161 を | |
| // deve68さんの方式に従って解いてみた回答 http://d.hatena.ne.jp/deve68/20110410/1302464249 | |
| // 判定機能は未実装 | |
| final def MAXCOL = 10 | |
| final def MAXROW = 10 | |
| assert (MAXCOL == MAXROW) && (MAXCOL >= 2) | |
| // ノードクラス | |
| class Node { |
| # -- Additional Settings ------------------------------------------------------- | |
| execfile('../common.py') |
| .. role:: ロール名 | |
| という行を書くと、カスタムのインラインマークアップを定義することができ、 | |
| :ロール名:`ロール名を適用する文字列` | |
| と書くと、次のHTMLコードに変換されます。 | |
| <span class="ロール名">ロール名を適用する文字列</span> |
italic, *italic*
strong, **strong**
| 例えば次のような構成に対して実行すると、R.csv、A/A.csv、A/B/B.csvができます。 | |
| サンプルでは特別な変換処理はしていないので、R.dat、A.dat、B.datは空でも構いません。 | |
| A/A.datの内容を変更した場合に、A/A.csvを変更する処理だけが走ることを確認します。 | |
| | build.gradle | |
| | Rakefile | |
| | R.dat | |
| | | |
| \---A | |
| | A.dat |
| // http://d.hatena.ne.jp/fumokmm/20110815/1313405510の回答案 | |
| // 入力データの配列 | |
| def input_as_list = [7, "Hoge", 4, "Fizz", 2, "Buzz"] | |
| assert (input_as_list.size()) % 2 == 0, "入力データ数が2の倍数になっていません。" | |
| // 入力データをマップに変換 | |
| def input_as_map = [:].withDefault{""} | |
| (0..<(input_as_list.size()/2)).each { | |
| assert input_as_list[it*2].class == Integer, "入力データの偶数番目には数値を与えて下さい。" |
| @ECHO OFF | |
| SET VARIABLE1=VALUE1 | |
| IF NOT DEFINED VARIABLE1 ( | |
| SET VARIABLE1=DEFAULT1 | |
| ) | |
| IF NOT DEFINED VARIABLE2 ( | |
| SET VARIABLE2=DEFAULT2 | |
| ) | |
| echo %VARIABLE1% | |
| echo %VARIABLE2% |