Skip to content

Instantly share code, notes, and snippets.

@disktnk
disktnk / gist:3065170
Created July 7, 2012 06:53
星11個の数独の問題をAlloyで

#星11個の数独の問題をAlloyで

解いたら3秒かかりませんでした.きっかけは 世界一難しい数独、Alloyで解いてみたよ(RocketNews24から) - dec9ue's diary の記事.処理に82秒かかったとあり「それって超難問では?」と思ったので,自分も動かしてみて,その結果を以下につらつらと.ちなみに下記AlloyのコードはAlloyのサンプルでそこら辺に転がっているのを移してきただけで,私のオリジナルではない.

abstract sig Number { data: Number -> Number }
abstract sig Region1, Region2, Region3 extends Number {}

one sig N1, N2, N3 extends Region1 {} 
one sig N4, N5, N6 extends Region2 {} 
@disktnk
disktnk / gist:3193889
Created July 28, 2012 16:17
forループにInteger.MAX_VALUE入れた時の変な挙動

川中さんらの「アルゴリズムを学ぼう」のサンプルコードを愚直に写そうと思ったら,初っ端から躓いたので,そのメモ.といっても,本書のサンプルコードは正しい.MacのJava6で起こるけど,WinのJava7では再現しなかった.ちゃんと確かめてはいない.

##ひとまずリスト1-1のサンプルコードを写経

問題文は「aのk乗をmで割った余りを求めよ」で,そのままサンプルを写す.staticなのは,単純にmain関数からお手軽に呼び出したかったからというだけで,深い意味はない.

// aのk乗からmで割ったあまりを求める,本書のリスト1-1ママ
static int powmod(int a, int k, int m) {
 long t = 1;
@disktnk
disktnk / gist:4104284
Created November 18, 2012 08:44
Mac(OSX)で.bashrcを編集する

Application > Terminalを起動したとき,環境変数の追加その他もろもろを自動でやってほしいとき,.bashrcを編集すればよい.

初期状態では,ホームディレクトリに.bashrcファイルはないので,自分で作成する.

cd ~
vi .bashrc

例えばPATHに何かを追加したいときは,以下を足して保存.

@disktnk
disktnk / Pair.java
Last active September 12, 2020 12:05
C++の標準ライブラリにあるPairみたいなやつ. javadocに書いてある通り,StackOverflowにあったコードほぼママ. What is the equivalent of the C++ Pair<L,R> in Java? - Stack Overflow http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in-java
/**
* immutable pair class, like c++'s Pair<br>
* from <a href=
* "http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in-java"
* > What is the equivalent of the C++ Pair&lt;L,R&gt; in Java? - Stack Overflow </a>
*
* @param <A>
* first
* @param <B>
* second
@disktnk
disktnk / Cards.java
Last active December 10, 2015 21:08
JUnit実践入門を読んでいて,Theoryアノテーションを試してみたいと思ってたところ,ちょうどよさげな問題を解いたブログ「3年間の進歩 - uehaj's blog」( http://uehaj.hatenablog.com/entry/2013/01/09/125407 ) がポストされていたので,やってみた.
import java.util.Arrays;
public class Cards {
public String[] deal(int playerNum, String deck) {
if (playerNum < 1 || deck == null) {
return null;
}
String[] results = new String[playerNum];
Arrays.fill(results, "");
@disktnk
disktnk / ComplexArgFizzBuzz.java
Last active December 12, 2015 07:38
複素数偏角でFizzBuzz 元ネタ:Fizzbuzz in Complex Plane http://www.slideshare.net/KaoruMaeda/fizzbuzz-16341544 (2013/02/11 フォーマットでswitchを消せることに気付き fizzbuzz2 メソッドを追記)
import org.apache.commons.math3.complex.Complex;
public class ComplexArgFizzBuzz {
public String fizzbuzz(int n) {
Complex c = new Complex(-n % 5, n % 3);
int index = (int) c.getArgument();
String[] fizzbuzz = { "Fizzbuzz", "Buzz", "(^^", "Fizz" };
switch (index) {
case 2:
@disktnk
disktnk / PerformanceLog.cpp
Last active December 13, 2015 23:39
C++ (windows) でのミリ秒計測ログ埋め込み→クラス化、スレッドアンセーフ
#include "PerformanceLog.h"
#include <iostream>
namespace foo{
PerformanceLog::PerformanceLog(std::string place) : place_(place)
{
startTime_ = timeGetTime();
}
@disktnk
disktnk / F#.tmLanguage
Last active August 29, 2015 13:55
F# Syntax on Sublime Text 2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>fs</string>
<string>fsi</string>
<string>fsx</string>
</array>
// C++11
#include <iostream>
#include <chrono>
const auto startTime = std::chrono::system_clock::now();
// do something
const auto endTime = std::chrono::system_clock::now();
const auto elapse = endTime - startTime;
@disktnk
disktnk / ArraysBinarySearchTest.java
Created April 17, 2014 00:42
Arrays#binarySearch で値が見つからなかった場合のマイナス値をビット反転することで、挿入位置が分かる。
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.Arrays;
import org.junit.Test;
/**
* ArraysBinarySearchTest
*/