Skip to content

Instantly share code, notes, and snippets.

@aoi0308
aoi0308 / prime.scala
Created December 24, 2011 17:19
1000個の素数をファイルにカンマ区切りで各行10個ずつ出力するプログラム
import scala.math
import java.io.{Writer, FileWriter}
/**
* 引数nが素数かどうかを判定します。
* 引数psには√n以下の素数が全て含まれている必要があります。
*/
def isPrimeNumber(n: Int, ps: Seq[Int]): Boolean = {
require(n > 0)
val sqrt = math.sqrt(n).toInt
@aoi0308
aoi0308 / prime.pl
Created December 25, 2011 05:26
素数をカンマ区切りで各行10個ずつ出力するプログラム。
#!/opt/local/bin/perl
#
# 素数をカンマ区切りで各行10個ずつ出力するプログラム。
#
# 使い方
# $ perl prime.pl {number} [filename]
#
use strict;
use warnings;
use POSIX;
@aoi0308
aoi0308 / prime.hs
Created December 30, 2011 16:46
1000個の素数をファイルにカンマ区切りで各行10個ずつ出力するプログラム
isPrimeNumber :: Int -> [Int] -> Bool
isPrimeNumber n = not . any ((== 0) . (mod n)) . filter (<= sr)
where
sr = floor $ sqrt $ fromInteger $ toInteger n
createPrimeList :: Int -> [Int]
createPrimeList 0 = []
createPrimeList len = _create 3 [2]
where
_create n ps
@aoi0308
aoi0308 / csv2gift.rb
Created February 10, 2012 09:41
エクセルで小テストを作成、CSV形式で保存、GIFTフォーマットに変換 を目的としたスクリプト
#
# 番号,問題名,問題文,選択肢(選択肢は項目ごとに改行)
# とりあえず多岐選択、記述形式、組み合わせに対応
# Cloze形式はログに出力してスキップ(後で手入力する)
# 単一選択は ~foo(1個以上) =bar(1個)
# 複数選択は ~%10%foo で、正の数の合計100になるように
# 記述形式は =foo を1個以上
# 組み合わせは =foo -> bar を1個以上
#
@aoi0308
aoi0308 / payment.scala
Created March 16, 2012 02:22
所持金と支払価格から、お釣りが最小になる払い方を求める。
/**
* do execute.
* $ scala payment.scala {pocket} {price}
*/
object Main {
implicit val coins = List(1, 5, 10, 50, 100, 500, 1000, 5000, 10000)
def main(args: Array[String]): Unit = {
if (args.length != 2) sys.exit(-1)
@aoi0308
aoi0308 / scala_3_6.scala
Created March 24, 2012 16:25
コップ本第2版のP.76のプログラムを少しいじったもの
import scala.io.Source
def widthOfLength(s: String): Int = s.length.toString.length
if (args.length == 0) {
Console.err.println("Please enter filename")
sys.exit(-1)
}
val lines = Source.fromFile(args(0)).getLines().toList
@aoi0308
aoi0308 / accum.scala
Created April 9, 2012 16:21
アキュムレータ
/**
* ハッカーと画家のP.198に載ってるアキュムレータをScalaで実装。
* 元ネタは Common Lisp
* (defun foo (n)
* (lambda (i) (incf n i)))
*
* Int固定じゃなくてもっと汎用的にするにはどうするんだろ。
*/
def accum(n: Int): (Int => Int) = {
var m = n
@aoi0308
aoi0308 / accum.scala
Created April 10, 2012 02:12
アキュムレータ(クラス使用)
/**
* https://gist.github.com/2344525 の別バージョン
* 高階関数じゃなくてクラスを使用してみる。
*/
class Accum(private var n: Int) {
def apply(i: Int): Int = { n += i; n }
}
object Accum {
def apply(n: Int): Accum = new Accum(n)
@aoi0308
aoi0308 / closure.js
Created May 1, 2012 04:15
クロージャの簡単なサンプル
/*
* 実行にはjQueryが必要。
* if文の中で関数外(forEachメソッドの引数は関数です)の変数 n を参照している。
*/
function doClick() {
var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var n = $('#num').val();
arr.forEach(function(i) {
if (i % n == 0) {
@aoi0308
aoi0308 / node-debug.sh
Created June 13, 2012 12:27
Nodeデバッグ用シェルスクリプト
#!/bin/bash
#
# ./node-debug.sh app.js
#
function usage() {
echo "Usage $0 [-p port] [jsfile]"
exit 1
}