DはDはD
なんか絶賛ICFP練習会が単独で行われている模様です。ちなみに03の問題に決めた後、不運な事が起こってしまいました・・・。
http://larsivi.net/node/112
このページのコードを見ていたのですが、Tangoっつーのがあるんかー、ということでこのintel-mac-10.4にぶち込んでみた訳です。
http://www.dsource.org/projects/tango/wiki/GdcDownloads
Just TangoとBundlesを入れました。
で、そのページのコードをコピペして実行してみるもなんか訳の分からんのが出てきてうわーってなっちゃいます。
ので、Tangoのページから直接tutorialとかを引っ張ってきました。
import tango.io.Console; void main() { Cout("Hello, World").newline; }
なんだこれきめぇ!
取りあえず出力するっぽいので直接gdc(gdc for Mac)に食わせる。
gdc hello.d Unsupported environment; neither Win32 or Posix is declared /usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../../include/d/4.0.1/tango/sys/Common.d:83: static assert is false
よーわからんので魔法の呪文を唱える。
gdc hello.d -fversion=Posix -lgtangobos -lgtango ./a.out Hello, World
出きったー!!!
じゃあもう一回さっきのコードに挑もう。
/usr/bin/ld: Undefined symbols: _deflate _deflateEnd _inflate _inflateEnd _deflateInit2_ _deflateInit_ _inflateBackInit_ _inflateInit2_ _inflateInit_ collect2: ld returned 1 exit status
なんこれ!!!!!!
その先に進む
まずはコンパイルを突破する事が出来たので、拾ってきたzipを引数として渡す。
今度は今度で、
auto archive = new ZipFolder(args[1]); auto info = archive.tree; //ここ bus error
落ちる。
うーんとこれは。
あがいてみた
auto archive = new FileFolder(args[1],true); auto info = archive.tree();
依然としてtree取ろうとすると落ちる。なにこのfunction!
変えてみた
Tangoやめて普通にPhobosで頑張ゆ!!
//Phobosのstd.fileの所からコピペしたサンプル import std.stdio; import std.file; void main(string[] args) { bool callback(DirEntry *de) { if(de.isdir) listdir(de.name,&callback); else writefln(de.name); return true; } listdir(args[1],&callback); } gdc test.d /usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../../include/d/4.0.1/std/c/stddef.di:15: module libc cannot read file 'gcc/config/libc.d'
よし辞めた!Pythonで書く。
pythonで書いた
import os import sys def my_walk(filename,ext,pattern,ln): print(filename) sum = 0 for root,dirs,files in os.walk(filename): for _file in files: if((root.find(pattern) != -1 or _file.find(pattern) != -1) and _file[-len(ext):]==ext): for i,_line in zip(range(1,ln+1),file(os.path.join(root,_file))): if(i==ln): sum+=int(_line) break return sum def main(): filename = sys.argv[1] sum1 = my_walk(filename,".js","HIJ",1) sum2 = my_walk(filename,".js","bar",5) return sum1*sum2 if __name__=="__main__": print(main())