タグ

FizzBuzzに関するku-kai27のブックマーク (5)

  • if を追放する - Life Goes On

    Kコンビネータと真偽値に関する話題が挙がっていたので、それを使って何か書いてみようと思いました。 条件分岐と言えば FizzBuzz。以下のようなプログラムを考えます。 main = mapM putStrLn [ max (show n) $ fizz n ++ buzz n | n <- [1..100] ] fizz n = if mon n 3 == 0 then "Fizz" else "" buzz n = if mon n 5 == 0 then "Buzz" else "" まずは以下のように if' を定義しますが、これだけだとまだあまり変わっていません。 Haskell 標準の Bool 型を使っているし、パターンマッチで結局 if 相当のことをやっているからです。(ポイントフリーで書けない!!) fizz n = if' (mod n 3 == 0) "Fizz" "

    if を追放する - Life Goes On
  • Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想

    この原稿の最新版について この原稿に加筆した最新版が書籍「プログラミングGauche」に収録されています。 引用や紹介をされる方はなるべく書籍収録版を参照してください。 他の言語のプログラマがSchemeプログラムを書くとき、 どうしても発想が手続き的(procedural)になりがちです。 LispプログラマやSchemeプログラマの発想は手続き的な発想とはどうも違うらしい、 ということは分かるのですが、具体的に何が違うのでしょうか? ここではこの謎に迫ってみましょう。 実例 例えばこんな例題があります。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 どうしてプログラマに・・・プログラムが書けないのか? (原題: Why

  • RubyでFizzBuzzかけたよ!+いろいろ考えてみた - ミームの死骸を待ちながら

    404 Blog Not Found:やる気ってどこでやる気? 経由で見つけた↓の記事。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。 どうしてプログラマに・・・プログラムが書けないのか? こんなこと書いてて怖かったので、RubyでFizzBuzz書いてみた。Moduloが「%」であることを忘れてて所要時間4分20秒。かかりすぎ…。 for i in 1..100 d

    RubyでFizzBuzzかけたよ!+いろいろ考えてみた - ミームの死骸を待ちながら
  • 同じ日に同じ場所で同じ構成の同じノートPCを買っている方発見。 - >& STDOUT

    http://d.hatena.ne.jp/turipat/20090501/1241191557 あんまりびっくりしたのではてなで初TB。 同じって書きすぎてプチタルト崩壊。 ↓これの法人モデル。 TB先の方とはまったく逆の理由で、EeePCでの(Web | Native)開発環境構築に限界を感じたので、 性能とモビリティと価格を極限まで追求した結果にたどり着いた、場所、構成、価格。 そして邂逅。ミラクルです。 ここ数日、EeePCで満たせなかった構築欲をこれでもかとぶつけてみましたが、 その全てに充分な応答性を発揮してくれています。意外にもキーボードが死ぬほど 打ちやすいので、モノ書きさんにオススメかもですね。

    同じ日に同じ場所で同じ構成の同じノートPCを買っている方発見。 - >& STDOUT
  • RubyでFizzBuzz。こんな書き方があったか。。 - このブログは証明できない。

    dankogai氏が公開している、ブラウザでLLを実行するlleval。 lleval - run codes from your browser 404 Blog Not Found:Ajax - llevalのサポート言語がさらに増えました FizzBuzzのサンプルがついているのですが、RubyのFizzBuzzがオモシロかったのでメモ。 1.upto(30) do |i| s = [ [:Fizz][ i % 3 ], [:Buzz][ i % 5 ] ] * ''; puts s[1] ? s : i end セミコロンが付いているのはともかく、配列の使い方がウマイ。 まず、[:Fizz][ i % 3 ]のところ。1つめの括弧が配列のリテラルで、2つめの括弧で配列にアクセス。で、インデックスが配列のサイズ以上だとnilが返ります。 p [:Fizz][0] #=> :Fizz

  • 1