Go

31ゲーム(Go言語)

Go

「たけしのコマ大数学科」の問題をいろいろ Ruby で解いているときに、こんな問題がありました。 問題: 1から6までのトランプ24枚を使い、2人が交互に1枚ずつ取り、2人の取ったカードの合計を先に31にした方が勝ち、というゲームをする。(31を超…

Go言語でカレンダーを出力してみた

obelisk.hatenablog.comここの Ruby 版の移植です。出力例。 $ go run calender.go 2018/10 sun mon tue wed thu fri sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 コード。 calender.go package main import …

Go言語でスライスの要素の順列、組み合わせを与える

Go

これって組み込み関数がないのですかねえ...順列。コード。 permutation.go package main import "fmt" //スライスの 位置 i の要素を除いたスライスを返す(arを破壊しないようコピーしている) func remove(ar []int, i int) []int { tmp := make([]int, l…

選択ソート(C言語、Go言語)

選択ソートは決められた範囲の中から最小値(もしくは最大値)を選んでいくという、わかりやすいソートです。C言語版。 selection_sort.c #include <stdio.h> void selection_sort(int ar[], int len) { int i, j, min, tmp; for (i = 0; i < len - 1; i++) { min = i</stdio.h>…

Go言語と Ruby で 8 queens 問題

Go で「8 queens 問題」を解いてみました。実際は n queens が解けます。すべての解を出力します。num = 8 の場合、解は 92通りあります。こんな感じ。 ------------------ n = 1 @....... ....@... .......@ .....@.. ..@..... ......@. .@...... ...@.... …

ヒープソート(C言語、Go言語)

(追記)ヒープを作るのに、何だかふつうとはちがう(オリジナルの?)アルゴリズムを採用してしまったようですね。これでもちゃんと動作しますが、ふつうの方法よりも多少効率が悪いようです。最後にふつうの実装も載せます。 ヒープソートですが、まず「(…

バブルソート(C言語、Go言語)

バブルソートはわかりやすいソートです。隣どうしを比較して、前の方が値が大きければ値を交換します。それを繰り返し行うことでソートします。ただ、わかりやすく実装も簡単ですが、効率はよくありません。ソートのアルゴリズムとしてはまず使わないのでは…

クイックソート(C言語、Go言語)

クイックソートを C言語と Go言語で実装してみました。クイックソートは、配列の中からひとつ任意にサンプルを取ってきます。これを「ピボット」といいます。あとは、配列からピボットを除いたものを、その値がピボットより大きいか小さいかで二つの配列に分…

マージソート(C言語、Go言語)

マージソートを C と Go で実装してみました。このソートは二つの配列をマージ(統合)する作業がキモです。それぞれソートされた二つの配列を、統合してひとつのソートされた配列を作るわけですね。これができればあとは簡単です。C言語。 merge_sort.c #in…

挿入ソート(C言語、Go言語)

C言語で挿入ソートです。挿入ソートは遅いけれどわかりやすい。カードで考えると、(ソート済の)並んだカードの正しい位置に、残ったカードをそれぞれ一枚ずつ挿入していく(なのでそれもソート済になっている)というやり方で全体をソートします。 inserti…

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

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

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

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

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…