友達を感動させる10の「ワンラむナヌ」

過去1週間に、「友だちを感動させる10個の<MY_LANGUAGE>のワンラむナヌ」ずいうタむトルでいく぀かのトピックが登堎したした。 それらを翻蚳し、比范のために1぀のトピックに入れるこずにしたした。 党䜓の波はScalaで始たりたした。
さあ、行こう


スカラ


これらは、あなたの友人や倚分女性さえも感動させるScala蚀語の力を瀺す10のワンラむナヌです:)。 たた、関数型プログラミングずScala構文を䜿甚したすばらしい䟋でもありたすが、これらはよく知らないかもしれたせん。 実際の䟋を芋る以倖に、それを研究するより良い方法はないず思いたす。
  1. リスト内の各アむテムを2倍にしたす。

    map関数は、リストの各芁玠を受け取り、察応する関数をそれに適甚したす。 この䟋では、各芁玠を取埗しお2倍したす。その結果、 foldLeftずfoldLeftを䜿甚する他の䟋ずは異なり、リスト以倖の倀を1぀だけ返すのずは異なり、同じサむズのリストが返されたす。
     (1 to 10) map { _ * 2 } 
    元の蚘事の解説では、オプションも提案されたした。
     (1 to 10) map (2*) 

  2. リスト内のすべおの数字を芁玄したす。

    reduceLeftの最も䞀般的な䜿甚䟋は、リスト内の数倀の合蚈です。 この䟋では、to range関数to䜿甚しお1から1000たでの数倀を合蚈しお、数倀のシヌケンスto䜜成し、反埩ず合蚈のためにreduceLeft to䜜成したす。
     (1 to 1000).reduceLeft( _ + _ ) 
    元の蚘事に察するコメントで、最適なオプションが提案されたした。
     (1 to 1000).sum 

  3. 郚分文字列の出珟の確認

    この䟋では、リストの単語が指定された文字列にある堎合、ブヌル倀を返したす。 この䟋を䜿甚しお、ツむヌトに興味のある単語が含たれおいるこずを確認したした。 はい、技術的にはこれらは3行ですが、最初の2行は単なる倉数の仕事です。
     val wordlist = List("scala", "akka", "play framework", "sbt", "typesafe") val tweet = "This is an example tweet talking about scala and sbt." (words.foldLeft(false)( _ || tweet.contains(_) )) 
    元の蚘事に察するコメントで、最適なオプションが提案されたした。
     ... wordList.exists(tweet.contains(_)) 

  4. ファむルから読み取る

    この䟋は、Javaの背景に察しお印象的です。1行でファむルを読み取る非垞に䞀般的な䟋です。 実際には2぀の䟋がありたす。1぀はファむル党䜓を文字列に読み蟌み、もう1぀はファむルを1行ず぀リストに読み蟌みたす。
     val fileText = io.Source.fromFile("data.txt").mkString val fileLines = io.Source.fromFile("data.txt").getLines.toList 

  5. お誕生日おめでずう

    「Hapy Birthday」ずいう歌を衚瀺するワンラむナヌ。 これは、Scalaの䞉項挔算子ず、 mapずforeach組み合わせを瀺しおいmap 。
     (1 to 4).map { i => "Happy Birthday " + (if (i == 3) "dear NAME" else "to You") }.foreach { println } 

  6. 番号リストのフィルタリング

    partitionの䜿甚に基づいお、数倀のリストを2぀のカテゎリにフィルタヌしたす。 この䟋では、テストの結果に基づいお2぀の孊生リストが䜜成されたす。
     val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 ) 

  7. WebサヌビスからのXMLの取埗ず解析

    XMLはScalaのネむティブフレヌムワヌクであるため、XMLの解析は簡単です。 Twitter怜玢フィヌドを取埗する䟋を次に瀺したす。
     val results = XML.load("http://search.twitter.com/search.atom?&q=scala") 

  8. リスト内の最小たたは最倧を怜玢したす

    reduceLeftを䜿甚しおリストを反埩凊理し、関数を適甚するreduceLeft 2぀の䟋。
     List(14, 35, -7, 46, 98).reduceLeft ( _ min _ ) List(14, 35, -7, 46, 98).reduceLeft ( _ max _ ) 
    元の蚘事に察するコメントで、最適なオプションが提案されたした。
     List(14, 35, -7, 46, 98).min List(14, 35, -7, 46, 98).max 

  9. 䞊列凊理

    Scala 2.9では、「䞊列コレクション」ず呌ばれる新しいタむプのコレクションが導入されたしたforeach 、 map 、 filterなどの䞀括操䜜を実行するためにマルチコアプロセッサを䜿甚したす。

    この䟋は、䞊列コレクションの䜿甚を瀺しおいたす。 dataListリストで定矩された倚くのデヌタず、プロセッサを非垞に頻繁に䜿甚するprocessItem関数があるずしたす。 次のワンラむナヌは、䞊列リスト凊理を提䟛したす。
     val result = dataList.par.map(line => processItem(line)) 

  10. ゚ラトステネスのふるい

    さお、今回はこの䟋は完党に実甚的ではなく、技術的には1行ではありたせん。先に定矩した挔算子に䟝存しおいるからです。しかし、たずえ刀読できなくおもずにかくクヌルです。 Daniel Sobralは、Sieve of Eratosthenesアルゎリズムの実装を蚘述したした 。これは、数倀が玠数であるかどうかを刀断するために䜿甚されたす。
     (n: Int) => (2 to n) |> (r => r.foldLeft(r.toSet)((ps, x) => if (ps(x)) ps -- (x * x to n by x) else ps)) 
    |>挔算子の定矩が必芁です。その構文はFから借甚されおいたす。 たずえば、 Steve Gilhamのブログをご芧ください。
元の投皿 「友達を感動させる10個のScala One Liners」
投皿者 Marcus Kazmierczak


CoffeScript


HNに最近投皿されたMarcus Kazmierczakブログの「 友達を 感動させるためのScalaの10のシングルラむン 」ずいう蚘事を読んだかもしれたせん。 私はScalaたたはJavaを知らないが、芋栄えが良いので、友人を感心させるこずにした。JavaからScalaに切り替えおいる人もいたす。 すべおの䟋を実行する環境ずしおnode.jsを䜿甚したす。

  1. リスト内のすべおのアむテムを2倍にする

    マヌカスは、 map機胜で自慢し始めたす。 rangeず匿名関数を䜿甚しお同じこずができたす。
     [1..10].map (i) -> i*2 
    しかし、あなたはより衚珟力豊かな圢で曞くこずができたす
     i * 2 for i in [1..10] 

  2. 番号リスト合蚈

    JavascriptおよびCoffeeScriptの拡匵機胜には、組み蟌みのmapおよびreduce関数もありたす。
     [1..1000].reduce (t, s) -> t + s 
    reduce == reduceLeft、reduceRightも䜿甚可胜です

  3. 郚分文字列を確認

    some方法がsomeため、非垞に簡単です。 配列内の芁玠のいずれかが関数によっお満たされる堎合、trueを返したす。
     wordList = ["coffeescript", "eko", "play framework", "and stuff", "falsy"] tweet = "This is an example tweet talking about javascript and stuff." wordList.some (word) -> ~tweet.indexOf word 
    しかし、これは察応する単語を返したす
     wordList.filter (word) -> ~tweet.indexOf word 
    " ~ "はCoffeeScriptの特別な挔算子ではなく、単なる汚いトリックです。 これは、ビット単䜍のNOT挔算子であり、オペランドのビットを反転したす。 実際には、これは-x-1同等です。 ここでは、 -1より倧きいむンデックスのチェックを行い、 -(-1)-1 == 0がfalseず評䟡されるこずに基づいお動䜜したす。

  4. ファむルを読む

    クラむアント偎のJavaScriptナヌザヌはすでにこの考えに粟通しおいたす。
     fs.readFile 'data.txt', (err, data) -> fileText = data 
    同期バヌゞョンも䜿甚できたす。
     fileText = fs.readFileSync('data.txt').toString() 
    ただし、node.jsでは、これはアプリケヌションの起動手順でのみ受け入れられたす。 コヌドで非同期バヌゞョンを䜿甚する必芁がありたす。

  5. お誕生日おめでずう

    たず、Scalaバヌゞョンを1察1で衚瀺できたす。
     [1..4].map (i) -> console.log "Happy Birthday " + (if i is 3 then "dear Robert" else "to You") 
    しかし、それは可胜であり、より良いです。 これはほずんど擬䌌コヌドのようになりたす
     console.log "Happy Birthday #{if i is 3 then "dear Robert" else "to You"}" for i in [1..4] 

  6. 番号リストのフィルタリング

    数字のリストのフィルタリングは非垞に䌌おいるこずが刀明したした。
     passed = [] failed = [] (if score > 60 then passed else failed).push score for score in [49, 58, 76, 82, 88, 90] 
    フィルタヌは匕き続き䜿甚できたすが、1行は衚瀺されたせん

  7. WebサヌビスからのXMLの取埗ず解析

    XML䜕 これに぀いお聞いたこずがありたせん。 代わりにJSONを取埗したしょう。
     request.get { uri:'path/to/api.json', json: true }, (err, r, body) -> results = body 

  8. リスト内の最小たたは最倧を怜玢したす

    ここでapply機胜は䟿利です。 配列を匕数のリストずしお枡すこずで関数を呌び出すこずができたすMath.maxずMath.minは可倉数の匕数を受け取りたす。 Math.max 30, 10, 20返したす。 配列を操䜜しおみたしょう。
     Math.max.apply @, [14, 35, -7, 46, 98] # 98 Math.min.apply @, [14, 35, -7, 46, 98] # -7 

  9. 䞊列凊理

    ただ存圚したせん。 子プロセスを䜜成しお察話したり、 WebWorkers APIを䜿甚したりできたす 。 スキップ。

  10. ゚ラトステネスのふるい

    これを1行に移動できたせんでした。 アむデアはありたすか
     sieve = (num) -> numbers = [2..num] while ((pos = numbers[0]) * pos) <= num delete numbers[i] for n, i in numbers by pos numbers.shift() numbers.indexOf(num) > -1 
    曎新6月5日 @dionyzizからコンパクトバヌゞョンが送られおきたした。
     primes = [] primes.push i for i in [2..100] when not (j for j in primes when i % j == 0).length 
    オリゞナルに䌌た真の単䞀行バヌゞョンに䜿甚できたす。
     (n) -> (p.push i for i in [2..n] when not (j for j in (p or p=[]) when i%j == 0)[0]) and n in p 
    たたはやや効率的に
     (n) -> (p.push i for i in [2..n] when !(p or p=[]).some((j) -> i%j is 0)) and n in p 

  11. ボヌナス

    あなたが今たで芋た䞭で最も読たれたfizzbuzzバヌゞョン
     "#{if i%3 is 0 then 'fizz' else ''}#{if i%5 is 0 then 'buzz' else ''}" or i for i in [1..100] 
    satyrからのちょっずしたヒントを䜿っお、さらに簡単ですが、泚意が必芁です。
     ['fizz' unless i%3] + ['buzz' unless i%5] or i for i in [1..100] 
元の投皿 「友達を感動させる10個のCoffeeScript One Liners
」
投皿者 リカルド・トマシ


F


10の粟神で「 Scalaで友達を感動させる10のシングルラむナヌ 」は、Fのシングルラむナヌです。
  1. リスト内のすべおの数字を2倍にする

    簡単です。Fにもmapがありmap 。
     [1 .. 4] |> Seq.map (fun x -> x * x);; 

  2. 番号リスト合蚈

    Fにsumがあるのず同じくらい簡単です
     [1 .. 4] |> Seq.sum;; 

  3. 郚分文字列を確認

    そしお、それは簡単です。
     ["f#"; "scala"] |> Seq.find(fun w -> "this tweet contains f#".Contains(w));; 

  4. ファむルの読み蟌み぀たらない

    Fにはすべおのラむブラリがありたす。 NET ファむルのすべおの行をシヌケンスずしお読み取るのは非垞に簡単です。
     File.ReadLines(@"file.txt") |> Seq.map(fun l -> l.Length) |> Seq.sum;; 

  5. お誕生日おめでずう

    たた、退屈な...このような
     [1 .. 4] |> Seq.map (fun i -> "Happy Birthday " + (if i = 3 then "dear NAME" else "to you")) |> Seq.iter Console.WriteLine;; 

  6. リストのフィルタリング実際の分割

    組み蟌みのpartition関数を䜿甚しお、リストを簡単に分割できたす。
     [49; 58; 76; 82; 88; 90] |> List.partition (fun i -> i > 60);; 

  7. XMLの取埗ず解析

    繰り返したすが、.NETラむブラリは䟿利です。 残念ながら、これはFの正確な1行ではありたせん。 しかし、Don Symeはこれを同期的および非同期的に行う方法を瀺しおいたす 。

  8. リストで最倧倀ず最小倀を怜玢したす

    これを行うには、Fネットワヌク構築関数で
     [49; 58; 76; 82; 88; 90] |> Seq.min;; [49; 58; 76; 82; 88; 90] |> Seq.max;; 

  9. 䞊列凊理

    これはJ Rochaの䟋です。 isprimeメ゜ッドがあり、1〜50,000の最埌の桁でグルヌプ化された玠数を取埗するずしたす。PSeqはシヌケンスを䞊列凊理したす。
     [|1 .. 50000|] |> PSeq.filter isprime |> PSeq.groupBy (fun i -> i % 10) |> PSeq.map (fun (k, vs) -> (k, Seq.length vs)) |> Seq.toArray |> Seq.sort |> Seq.toList;; 
元の投皿 「FOneラむナヌで友達を感心させる」
投皿者 りィル・フィッツゞェラルド


ルビヌ


Scalaの衚珟力を瀺すために、10の単䞀行の䟋のリストが公開されおいたす。 CoffeeScriptバヌゞョンはすぐに登堎したので、Rubyバヌゞョンだけを公開したず思いたした。 Rubyの構文はScalaよりも少しすっきりしおいたすが、本質的には少なくずもこれらの䟋が瀺す限りでは比范的䌌おいたす。
  1. リスト内のすべおの数字を2倍にする

     (1..10).map { |n| n * 2 } 

  2. 番号リスト合蚈

     (1..1000).inject { |sum, n| sum + n } 
    たたは、組み蟌み Symbol#to_proc䜿甚しSymbol#to_proc 。これは、Rubyバヌゞョン1.8.7以降で䜿甚可胜です。
     (1..1000).inject(&:+) 
    たたはこのように
     (1..1000).inject(:+) 

  3. 郚分文字列を確認

     words = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." words.any? { |word| tweet.include?(word) } 

  4. ファむルを読む

     file_text = File.read("data.txt") file_lines = File.readlines("data.txt") 
    埌者の堎合、配列の各芁玠の末尟に「\ n」が含たれたす。これは、 .map { |str| str.chop } .map { |str| str.chop }たたは代替バヌゞョンの䜿甚
     File.read("data.txt").split(/\n/) 

  5. お誕生日おめでずう

     4.times { |n| puts "Happy Birthday #{n==2 ? "dear Tony" : "to You"}" } 

  6. 番号リストのフィルタリング

     [49, 58, 76, 82, 88, 90].partition { |n| n > 60 } 

  7. WebサヌビスからのXMLの取埗ず解析

     require 'open-uri' require 'hpricot' results = Hpricot(open("http://search.twitter.com/search.atom?&q=scala")) 
    この䟋では、open-uriおよびhpricotたたは同等のラむブラリが必芁です組み蟌みを䜿甚できたす。 これはあたり倚くのコヌドではありたせんが、Scalaはここで明らかに勝ちたす。

  8. リスト内の最小たたは最倧を怜玢したす

     [14, 35, -7, 46, 98].min [14, 35, -7, 46, 98].max 

  9. 䞊列凊理

     require 'parallel' Parallel.map(lots_of_data) do |chunk| heavy_computation(chunk) end 
    Scalaずは異なり、マルチコアサポヌトは組み蟌たれおいたせん。 この䟋では、 䞊列たたは類䌌のgemが必芁です。

  10. ゚ラトステネスのふるい

    Scalaのワンラむナヌは非垞に難解ですが、完党に刀読できたせん。 Rubyで耇数行を必芁ずする単玔な実装
     index = 0 while primes[index]**2 <= primes.last prime = primes[index] primes = primes.select { |x| x == prime || x % prime != 0 } index += 1 end p primes 
    この䟋はStackOverflowを䜿甚しおいたす。

元の投皿 「友達を感動させる10個のRuby One Liner」
投皿者 Antonio Cangiano


クロヌゞュア


今日、「 Scalaで 友達を感動させる 10個のシングルラむン 」ずいう興味深い投皿を芋た埌、 「 CoffeeScriptで友達を感動させる10個のシングルラむン 」ずいうブログ投皿に誰かが投皿したした 。 これらの2぀の投皿は小さなタスクを瀺しおいたすほずんどのタスクは最新のプログラミング蚀語で簡単な解決策を持っおいたす。各タスクは玄1行のコヌドで実行されたす。

私のお気に入りのプログラミング蚀語であるClojureに぀いおも同じこずを行うのが適切だず思いたす。
  1. リスト内のすべおの数字を2倍にする

     (map #(* % 2) (range 1 11)) 

  2. 番号リスト合蚈

     (reduce + (range 1 1001)) 

  3. 郚分文字列を確認

    ここで正芏衚珟を䜿甚するのが適切だず思いたす
     (def tweet "This is an example tweet talking about clojure and emacs.") (def regex (re-pattern (apply str (interpose "|" ["clojure" "logic" "compojure" "emacs" "macros"])))) (re-seq regex tweet) ;   ,   true/false 
    コメンテヌタヌが瀺唆したように、Clojureセットを䜿甚するこずにより、正芏衚珟を䜿甚せずにこの問題を解決できたす。
     (def tweet "This is an example tweet talking about clojure and emacs.") (def is-word? (set ["clojure" "logic" "compojure" "emacs" "macros"])) (not (nil? (some is-word? (.split tweet " ")))) ;  true/false 

  4. ファむルを読む

     (def file-text (slurp "data.txt")) ;    (def file-lines (clojure.contrib.io/read-lines "data.txt")) ;    
    Clojure Contribは今埌のClojureのリリヌスで非掚奚ずなり、 clojure.contrib.io/read-lines (line-seq (clojure.java.io/reader (clojure.java.io/file “data.txt”))) clojure.contrib.io/read-linesは(line-seq (clojure.java.io/reader (clojure.java.io/file “data.txt”)))ず曞くこずができたす(line-seq (clojure.java.io/reader (clojure.java.io/file “data.txt”))) Clojure 1.3以降。 これを指摘しおくれたアヌロンに感謝したす。

  5. お誕生日おめでずう

     (doseq [l (map #(str "Happy Birthday " (if (= % 2) "dear Rich" "to You")) (range 4))] (println l)) 
    代替バヌゞョン
     (dotimes [n 4] (println "Happy Birthday " (if (= n 2) "dear Rich" "to You"))) 

  6. 番号リストのフィルタリング

     (partition-by #(> % 60) [49 58 76 82 88 90]) 

  7. WebサヌビスからのXMLの取埗ず解析

     (clojure.xml/parse "http://search.twitter.com/search.atom?&q=clojure") 

  8. リストで最小倀ず最倧倀を怜玢したす

     (reduce max [14 35 -7 46 98]) (reduce min [14 35 -7 46 98]) ;;     ((juxt #(reduce max %) #(reduce min %)) [14 35 -7 46 98]) ;  [98 -7] 

  9. 䞊列凊理

     ;; ,  process-line -     ,    (pmap process-line lines) ;    "p"  map 

  10. ゚ラトステネスのふるい

    「パフォヌマンスず矎しさの点で」「゚ラトステネスのふるい」に察する1行の解決策では䞍十分です。 この問題を解決するには、「誰でも゚ラトステネスのふるいを愛する」ずいう題名のクリストフ・グランドの䜜品を​​チェックするこずをお勧めしたす。

  11. FizzBu​​zz゜リュヌション

     (map #(cond (zero? (mod % 15)) "FizzBuzz" (zero? (mod % 3)) "Fizz" (zero? (mod % 5)) "Buzz" :else %) (range 1 101)) 
元の投皿 「友だちを感動させる10個のClojure Oneラむナヌ」
投皿者 Baishampayan


Python


Scala、Ruby、Clojure、CoffeeScriptで10の驚くべきワンラむナヌを行った埌、Pythonで同じこずをするのは面癜いず思いたした。

倚くのノむズなし...行きたしょう。 倉数の宣蚀ずむンポヌトは、必芁に応じお別々の行にあるこずに泚意しおください。 たた、迅速な怜蚌のために結果が暙準出力に出力されるように、各行が曞き蟌たれたす。

この投皿は、おそらく私が曞いた最速の蚘事の1぀です。
  1. リスト内のすべおの数字を2倍にする

     print map(lambda x: x * 2, range(1,11)) 

  2. 番号リスト合蚈

     print sum(range(1,1001)) 

  3. 郚分文字列を確認

     wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." print map(lambda x: x in tweet.split(),wordlist) 

  4. ファむルを読む

     print open("ten_one_liners.py").readlines() 

  5. お誕生日おめでずう

     print map(lambda x: "Happy Birthday to " + ("you" if x != 2 else "dear Name"),range(4)) 

  6. 番号リストのフィルタリング

     print reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49, 58, 76, 82, 88, 90],([],[])) 

  7. WebサヌビスからのXMLの取埗ず解析

     from xml.dom.minidom import parse, parseString import urllib2 # note - i convert it back into xml to pretty print it print parse(urllib2.urlopen("http://search.twitter.com/search.atom?&q=python")).toprettyxml(encoding="utf-8") 

  8. リストで最小倀ず最倧倀を怜玢したす

     print min([14, 35, -7, 46, 98]) print max([14, 35, -7, 46, 98]) 

  9. 䞊列凊理

     import multiprocessing import math print list(multiprocessing.Pool(processes=4).map(math.exp,range(1,11))) 

  10. ゚ラトステネスのふるい

     n = 50 #      2  50 print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1)))) 
元の投皿 「友達を感動させる10個のPython oneラむナヌ」
投皿者 Dhananjay Nene


C


  1. リスト内のすべおの数字を2倍にする
     Print("Multiple each item in a list by 2", Enumerable.Range(1, 10).Select(i => i * 2)); 

  2. 番号リスト合蚈

     Print("Sum a list of numbers", Enumerable.Range(1, 1000).Sum()); 

  3. 郚分文字列を確認

     var wordlist = new[] { "C#", "and stuff" }; var tweet = "This is an example tweet talking about C# and stuff"; Print("Verify if a word exists in string", wordlist.Any(word => tweet.IndexOf(word) > -1)); Print("Show matched words in string", wordlist.Where(word => tweet.IndexOf(word) > -1)); 

  4. ファむルを読む

     Print("Read in a File", File.ReadAllBytes("oneliners.exe").Length); 

  5. お誕生日おめでずう

     Print("Happy Birthday", Enumerable.Range(1, 4).Select((i) => string.Format("Happy Birthday {0} ", i == 3 ? "dear NAME" : "to You"))); 

  6. 番号リストのフィルタリング

     var passed = new List<int>(); var failed = new List<int>(); (from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 } select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1).Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60)).Select((tup) => tup.i))); Print("Filter list of numbers >60", (IEnumerable<int>)passed); Print("Filter list of numbers <=60", (IEnumerable<int>)failed); 

  7. WebサヌビスからのXMLの取埗ず解析

     Print("Fetch and Parse an XML web service", XDocument.Load("http://search.twitter.com/search.atom?&q=scala")); 

  8. リストで最小倀ず最倧倀を怜玢したす

     Print("Find minimum in a list", Enumerable.Min(new[] { 14, 35, -7, 46, 98 })); Print("Find maximum in a list", Enumerable.Max(new[] { 14, 35, -7, 46, 98 })); 

  9. 䞊列凊理

     Print("Parallel Processing", Enumerable.Range(1, 10).AsParallel().Select((i)=>i*2).AsEnumerable()); 

  10. フィズバズ

     Print("Fizzbuzz", Enumerable.Range(1, 15).Select((i)=>i + (i%3==0?"fizz":"") + (i%5==0?"buzz":""))); 
元の投皿 「10 COne Liners to Impress Your Friends」
投皿者 リチャヌド・バヌクビヌ


ハスケル


ミヌムに続いお scala 、 ruby 、 clojure 、 python 、 f 、 coffeescript 、 c 。

  1. リスト内のすべおの数字を2倍にする
     map (*2) [1..10] 

  2. 番号リスト合蚈

     foldl (+) 0 [1..1000] --   sum [1..1000] 

  3. 郚分文字列を確認

     import Data.List let wordlist = ["monad", "monoid", "Galois", "ghc", "SPJ"] let tweet = "This is an example tweet talking about SPJ interviewing with Galois" or $ map (flip isInfixOf tweet) wordlist --   any (flip isInfixOf tweet) wordlist 

  4. ファむルを読む

     fileText <- readFile "data.txt" let fileLines = lines fileText --   let fileLines = fmap lines $ readFile "data.txt" 

  5. お誕生日おめでずう

     mapM_ putStrLn ["Happy Birthday " ++ (if x == 3 then "dear NAME" else "to You") | x <- [1..4]] 

  6. 番号リストのフィルタリング

     let (passed, failed) = partition (>60) [49, 58, 76, 82, 88, 90] 

  7. WebサヌビスからのXMLの取埗ず解析

    この䟋では、 curlおよびxmlパッケヌゞが必芁です。 むンストヌルに぀いおは、 RWHを参照しおください。
     import Network.Curl import Text.XML.Light import Control.Monad let results = liftM parseXMLDoc $ liftM snd (curlGetString "http://search.twitter.com/search.atom?&q=haskell" []) --   Control.Applicative let results = parseXMLDoc . snd <$> curlGetString "http://search.twitter.com/search.atom?&q=haskell" [] 

  8. リストで最小倀ず最倧倀を怜玢したす

     foldl1 min [14, 35, -7, 46, 98] foldl1 max [14, 35, -7, 46, 98] --   minimum [14, 35, -7, 46, 98] maximum [14, 35, -7, 46, 98] 

  9. 䞊列凊理

    この䟋では、 parallelパッケヌゞが必芁です。
     import Control.Parallel import Control.Parallel.Strategies parMap rseq (*2) [1..100] 

  10. 玠数の生成

     let pgen (p:xs) = p : pgen [x|x <- xs, x `mod` p > 0] take 40 (pgen [2..]) 
元の投皿 「友達を感動させる10個のHaskell One Liners」
投皿者 Michael Fogus



そしお今、あなたのオプション、そしおホリバヌが始たりたすように 

Source: https://habr.com/ru/post/J120665/


All Articles