Skip to content

Instantly share code, notes, and snippets.

@maraigue
maraigue / hatenagroup2movabletype.rb
Last active Dec 9, 2018
はてなグループからエクスポートしたXMLファイルを、MovableType形式に変換する
View hatenagroup2movabletype.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'text/hatena'
require 'rexml/document'
AUTHOR = "BlogAuthor" # 著者名を入力してください
def check_node(node, expected_name)
case node
when REXML::Element
@maraigue
maraigue / cinderella-girls-name-prefix.rb
Last active Nov 2, 2018
シンデレラガールズのアイドル名を、手前から見て一致しているものが並ぶよう表示
View cinderella-girls-name-prefix.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
strs = DATA.readlines
strs.each{ |line| line.chomp!; line.encode('utf-8') }
strs.uniq!
strs.sort!
width = strs.map{ |s| s.length }.max
parent_end = [0] * width
@maraigue
maraigue / README.md
Last active Mar 9, 2017
アイマスのアイドル名でしりとり(なるべく多くの人数を入れるようにする)
View README.md

使い方

  1. http://chiraura.hhiro.net/shiritori/ を開きます。
  2. 「しりとりさせる単語集合」の欄に、「アイドル名一覧.txt」の内容を貼り付けます。「結果.txt」にある内容が得られます。

補足

濁点・半濁点はないものとしてしりとりします。

データについて

@maraigue
maraigue / enum_random.rb
Created Aug 29, 2016
[Ruby] ArrayじゃなくてEnumerableでsample(ランダムにn要素を選ぶ)を使えるようにする
View enum_random.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# ArrayじゃなくてEnumerableでsample(ランダムにn要素を選ぶ)を使えるようにする。
# 例えば、大きいファイルから1行をランダムに抜き出すなど。
#
# 厄介なのは、要素の個数が最初からはわからないこと。
# 作戦としては以下の通り。
# - k個目の要素までを読み込んだとき、そのk個目の要素が選ばれているべき確率は
# n/k。なのでその確率で選ばれるかを決める。
@maraigue
maraigue / gist:cb4a58fcdc964d5d10976f037b442521
Created May 24, 2016
sapporocpp/4moku https://github.com/sapporocpp/4moku Qt版の表示内容の大枠を作ってみているところ
View gist:cb4a58fcdc964d5d10976f037b442521
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
@maraigue
maraigue / starlight-stage-gekijou.rb
Last active Feb 25, 2017
デレステの劇場で登場したアイドルの回数を調べる(2017.2.25時点)
View starlight-stage-gekijou.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# 基準
# - プロデューサーは数えない
# - ちひろさんは数える
# - セリフのみの登場も数える
require 'yaml'
@maraigue
maraigue / zundoko2.rb
Last active Apr 5, 2016
[Ruby][74文字で書いた] 「ズン」か「ドコ」をランダムに出力し、「ズンズンズンズンドコ」が並んだ時点で「キ・ヨ・シ!」を出力し終了する
View zundoko2.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# https://twitter.com/kumiromilk/status/707437861881180160
c=0;loop{$><<%w(ドコ ズン)[k=rand(2)];break if c>3&&k==0;c=k*c+k};puts"キ・ヨ・シ!"
# 解説
#
# c=0
# 「ズン」が続いた数を数える。
@maraigue
maraigue / zundoko.rb
Created Mar 12, 2016
[Ruby] 「ズン」か「ドコ」をランダムに出力し、「ズンズンズンズンドコ」が並んだ時点で「キ・ヨ・シ!」を出力し終了する
View zundoko.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# https://twitter.com/kumiromilk/status/707437861881180160
# 「ズン」か「ドコ」をランダムに出力し、
# 「ズンズンズンズンドコ」が並んだ時点で
# 「キ・ヨ・シ!」を出力し終了する
Source = %w[ズン ドコ]
Pattern = %w[ズン ズン ズン ズン ドコ]
@maraigue
maraigue / kakutei.hpp
Last active Mar 14, 2016
4目並べ https://github.com/sapporocpp/4moku のAI:「次の自分の手で勝ち確定なら必ず選ぶ」「次の相手の手で負け確定は必ず避ける」
View kakutei.hpp
#include "4moku.hpp"
std::tuple<int,int> AI_FUNCTION(const Board& board,int player) {
// ・自分が勝つことが確定するような置き場所があるならそこに置く。
// ・自分が置くことで、次に相手が勝つことが確定する置き場所があるならそこは置かない。
// ・そうでなければ、置ける場所に置く。
const int num_players = 2;
// プレイヤー総数。実際はboardから取れるようになる予定
View gist:744992eeef8a36aba702

この資料は、4目並べ https://github.com/sapporocpp/4moku のAIを作る上での、基本事項のまとめや、「~~するにはどんなコードを書けばよい?」といった事例集です。

動かす方法

ビルドはmakeSConsに対応しています。どちらかでもインストールされている環境であれば、まずそれを試してください。またVisual Studio用のプロジェクトファイルもあります。

生成された実行ファイルは、以下のコマンドで動かします。

4moku 幅 高さ AIの番号1 AIの番号2 AIの番号3 ...
You can’t perform that action at this time.