2018-02-01から1ヶ月間の記事一覧

意味不明なコード(Ruby)

笹田さんがツイートしておられた。# よくわからないプログラムdef foo a return true if a else return falseend— _ko1 (@_ko1) 2018年2月27日ホント意味不明。これ実行できるのかと思って試してみた。 $ pry [1] pry(main)> def foo a [1] pry(main)* retur…

Kindle の「天田士郎」本の Go と Swift 版を読んでみる

プログラミング経験者がGo言語を本格的に勉強する前に読むための本作者: 天田士郎発売日: 2017/03/10メディア: Kindle版この商品を含むブログを見るプログラミング経験者のためのSwift最速入門作者: 天田士郎発売日: 2017/05/26メディア: Kindle版この商品を…

横着なそろばん(Ruby)

アルゴリズム・パズルです。 問題: そろばんで例えば「8 + 9」をこの順に計算すると、「8 を入れる」のに玉を 4つ動かし、「9 を足す」のに玉を 2つ動かすので、全部で 6回玉を動かすことになります。また、逆に「9 + 8」の順に計算すると、全部で玉を 8回…

「絶対左折禁止」の迷路を解く(Ruby)

ブログにスターを頂いて、上のサイトを知りました。オリジナルの様々な迷路が出題されている、すばらしくおもしろそうなブログです。皆さんも御覧になってはいかがでしょうか? …とは別にステマでも何でもないのですが、そこで「絶対左折禁止」という迷路が…

与えられた迷路の最短経路を求める(Go言語)

以前 Ruby で解いたのの Go言語版です。Go言語のお勉強に移植してみました。まずは実行結果。 $ go build solve_maze.go $ time ./solve_maze ************************** *S* *$$$$ * *$* *$ *$ ************* * *$*$$$* $ ************ * *$$$ * $$$$$$$ *…

ある再帰曲線を描く(Ruby)

フィボナッチのうさぎ―数学探険旅行作者: キースボール,Keith Ball,佐藤かおり,佐藤宏樹出版社/メーカー: 青土社発売日: 2006/12/01メディア: 単行本 クリック: 3回この商品を含むブログ (9件) を見るこの本で言及されている再帰曲線を Ruby で描いてみまし…

急がば回れ(Ruby)

アルゴリズム・パズルです。 問題: 上のような規則があります。縦が 5cm、横が 6cm の長方形の場合、A から B までの最長経路は何 cm でしょうか。 Ruby で解いてみました。 q50.rb W, H = 6, 5 def yoko?(y) @yoko[y].inject(:+) < 2 end def tate?(x) @ta…

反転で作る互い違い(Ruby)

アルゴリズム・パズルです。 問題: 表が白で裏が黒の 16 枚のカードがあります。まず、これらを白と黒が 8 枚ずつ連続して見えるように円形に並べます。 そして、連続した 3 枚のカードを裏返していくことにします。適当な位置でこのように反転していくとき…

Go言語で汎用両端キューの実装

Go でキューの実装は、上記事で append を使って簡単にしています。なるほどと思いました。 ふつうはこれで充分ですよね。スタックは2本のキューで実装できるので、これも簡単です。しかし、任意の型を入れられるキュー、しかもメモリを効率よく使うキューが…

Go言語でじゃんけんゲーム

Go

Go言語のお勉強にいつものじゃんけんゲームを作ってみました。こんなのでも悩みましたよ…。 janken.go(Gist) package main import "fmt" import "math/rand" import "time" type Player struct { name string point byte hand byte } func show_hand(hand …

Go言語をとりあえず使ってみる

Go

Go 1.9 で。使ってみると遊びなら C言語を使うくらいなら Go の方がいいという感じ。 Go 結構いいな。「見た目派」の自分としては、ソースの見た目がすっきりしているし。:= のおかげで型をあんまり明示的に書かなくても済むのが Rubyist にはいいっぽい。 …

Go言語を Linux Mint(Ubuntu)にインストール

基本的には上のサイトどおりにやればよい。Linux Mint 18.3 で確認。 バージョン 1.9 を apt でインストールします。(追記:いまではバージョン 1.10 がインストールできるようです。10/16) $ sudo add-apt-repository ppa:gophers/archive $ sudo apt-get…

Object#method の奇妙なること(Ruby)

Object#method はメソッドをオブジェクト化してくれるのですよね。だから、こんな奇妙なブロックなしの世界が…。 [1] pry(main)> putout = method(:p) => #<Method: Object(Kernel)#p> [2] pry(main)> a = [1, 5, 4, -2, 10, 3] => [1, 5, 4, -2, 10, 3] [3] pry(main)> a.each(&putout</method:>…

Linux で tty(仮想コンソール)が黒い画面のままで起動しない

Linux Mint 18.3 Cinnamon 64 bit を使っていて端末エミュレータもふつうに使えるのですが、[Ctrl] + [Alt] + [F1] ~ [F6] で立ち上がる筈の tty(仮想コンソール)が、黒い画面のままでどうしようもありません。ここから 、[Ctrl] + [Alt] + [F8] で X Wind…

すべての組み合わせについて配列を n 個に分割する(Ruby)

Array#divide(n) です。遊びで作ってみました。 配列を n 個に分割する、すべての組み合わせをブロックに渡します。ブロックが与えられなければ Enumerator を返します。 [*2..6].divide(3) {|i| p i} #=> #[[2], [3], [4, 5, 6]] #[[2], [3, 4], [5, 6]] #[…

Gem 'oekaki' にタートルグラフィックスを追加

前回のエントリで作った Turtle クラスを Gem 'oekaki' に同梱しました。これでバージョンは 0.1.5 になります。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura 使い方はほぼ同じです。インスタンスの…

タートルグラフィックスで再帰曲線をいろいろ描いてみる(Ruby)

Ruby で簡単なタートルグラフィックスを実装して、いろいろ再帰曲線を描いてみました。描画には自作の Gem 'oekaki' を使っています。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura ※追記 Gem化しまし…

『プロを目指す人のための Ruby 入門』を読んでみた

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)作者: 伊藤淳一出版社/メーカー: 技術評論社発売日: 2017/11/25メディア: 大型本この商品を含むブログを見る 評判がよいので読んでみました。…

無駄に複雑な関数型 FizzBuzz(Ruby)

trans = ->(i) { if i % 15 == 0 "FizzBuzz" elsif i % 3 == 0 "Fizz" elsif i % 5 == 0 "Buzz" else i.to_s end } fizzbuzz = ->(n) { generate = ->(i, ar) { return ar if i > n generate[i + 1, ar + [trans[i]]] } generate[1, []] } p fizzbuzz[50] 何…

ふたたび Ruby で 8 queen(関数型プログラミングっぽく)

ここで Ruby で「8 クイーン問題」を解いてみましたが、関数型プログラミングのお勉強に Common Lisp のコード例を移植してみました。参考にしたのはこのサイトです。 実行するとこんな感じです。 ---------- No.1 ...@.... .@...... ......@. ..@..... ....…