मैं की औसत लंबाई Erlang का उपयोग करने की कोशिश कर रहा हूं।"फास्ट फ़ाइल में अनुक्रमों की औसत लंबाई": क्या आप इस एर्लांग कोड को बेहतर बना सकते हैं?
-module(golf).
-export([test/0]).
line([],{Sequences,Total}) -> {Sequences,Total};
line(">" ++ Rest,{Sequences,Total}) -> {Sequences+1,Total};
line(L,{Sequences,Total}) -> {Sequences,Total+string:len(string:strip(L))}.
scanLines(S,Sequences,Total)->
case io:get_line(S,'') of
eof -> {Sequences,Total};
{error,_} ->{Sequences,Total};
Line -> {S2,T2}=line(Line,{Sequences,Total}), scanLines(S,S2,T2)
end .
test()->
{Sequences,Total}=scanLines(standard_io,0,0),
io:format("~p\n",[Total/(1.0*Sequences)]),
halt().
संकलन/निष्पादन:
erlc golf.erl
erl -noshell -s golf test < sequence.fasta
563.16
इस कोड को लगता है एक fasta फ़ाइल इस
>title1
ATGACTAGCTAGCAGCGATCGACCGTCGTACGC
ATCGATCGCATCGATGCTACGATCGATCATATA
ATGACTAGCTAGCAGCGATCGACCGTCGTACGC
ATCGATCGCATCGATGCTACGATCTCGTACGC
>title2
ATCGATCGCATCGATGCTACGATCTCGTACGC
ATGACTAGCTAGCAGCGATCGACCGTCGTACGC
ATCGATCGCATCGATGCTACGATCGATCATATA
ATGACTAGCTAGCAGCGATCGACCGTCGTACGC
>title3
ATCGATCGCATCGAT(...)
जैसे मैं निम्नलिखित Erlang कोड का उपयोग कर इस सवाल answser करने की कोशिश की लग रहा है एक छोटी फास्ट फ़ाइल के लिए ठीक काम करने के लिए, लेकिन एक बड़े (> 100 एमओ) पार्स करने में घंटों लगते हैं। क्यूं कर ? मैं एक एरलांग नौसिखिया हूँ, क्या आप इस कोड को बेहतर बना सकते हैं?
मूल 'चुनौती' भी देखें: http://biostar.stackexchange.com/questions/1759 – Pierre
वाह, भाषाओं की विस्तृत श्रृंखला से गैर-तुच्छ कोड नमूने का उत्कृष्ट संग्रह। धन्यवाद! – sarnold