Skip to content

Instantly share code, notes, and snippets.

@tyuki39
tyuki39 / timeOverwrap.groovy
Created March 27, 2011 06:34
時間帯重複チェック(超ベタなコード版 & クラス使用版 & Range適用版)
// 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 = [開始時,開始分,終了時,終了分] がオーバーラップしているかどうかをチェック
@tyuki39
tyuki39 / timeOverwrapExtended.groovy
Created April 5, 2011 22:23
時間帯重複チェック(応用編)
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)
@tyuki39
tyuki39 / XMLtoGraphViz.groovy
Created April 11, 2011 14:47
一方通行迷路の結果をGraphVizのdotにするためのコード
// 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 に与える
@tyuki39
tyuki39 / labyrinth.groovy
Created April 14, 2011 16:03
一方通行迷路の問題の回答
// 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 {
@tyuki39
tyuki39 / AdditionalCode4conf.py
Created May 1, 2011 21:10
Sphinxのセットアップ用ファイル群
# -- Additional Settings -------------------------------------------------------
execfile('../common.py')
@tyuki39
tyuki39 / READNE.txt
Created May 12, 2011 11:58
カスタムのインラインマークアップを定義する方法
.. role:: ロール名
という行を書くと、カスタムのインラインマークアップを定義することができ、
:ロール名:`ロール名を適用する文字列`
と書くと、次のHTMLコードに変換されます。
<span class="ロール名">ロール名を適用する文字列</span>
@tyuki39
tyuki39 / sample.rst
Created May 12, 2011 12:19
reSTのサンプル

italic, *italic*

strong, **strong**

@tyuki39
tyuki39 / README.txt
Created May 21, 2011 00:42
Gradleにおけるインクリメンタルビルドの実現例
例えば次のような構成に対して実行すると、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
@tyuki39
tyuki39 / fizzBuzzN.groovy
Created August 15, 2011 14:12
FizzBuzz(Nパターン)
// 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, "入力データの偶数番目には数値を与えて下さい。"
@tyuki39
tyuki39 / defaultvalue.bat
Created August 16, 2011 12:05
バッチファイルとシェルスクリプトの雑多な例
@ECHO OFF
SET VARIABLE1=VALUE1
IF NOT DEFINED VARIABLE1 (
SET VARIABLE1=DEFAULT1
)
IF NOT DEFINED VARIABLE2 (
SET VARIABLE2=DEFAULT2
)
echo %VARIABLE1%
echo %VARIABLE2%