Skip to content

Instantly share code, notes, and snippets.

@nenono
nenono / fizzbuzz.scm
Created April 21, 2015 08:32
Schemeによるリスト処理関数のサンプル
;; 整数値からfizzbuzz結果の値に変換します。
(define (int->fizzbuzz x)
(let ((is-fizz (= (modulo x 3) 0)); 3で割り切れたらFizz
(is-buzz (= (modulo x 5) 0))); 5で割り切れたらBuzz
(let ((is-fizzbuzz (and is-fizz is-buzz))); FizzかつBuzzならFizzBuzz
(cond
(is-fizzbuzz "FizzBuzz")
(is-fizz "Fizz")
(is-buzz "Buzz")
(else x)))))
@nenono
nenono / config.py
Last active July 22, 2022 13:17
keyhacの設定 ref http://www49.atwiki.jp/ntemacs/pages/25.html / redoの追加くらいしかしてないはず
# -*- mode: python; coding: utf-8-dos -*-
##
## Windows の操作を emacs のキーバインドで行うための設定(keyhac版)ver.20151104_02
##
# このスクリプトは、keyhac で動作します。
# https://sites.google.com/site/craftware/keyhac
# スクリプトですので、使いやすいようにカスタマイズしてご利用ください。
#
@nenono
nenono / Monads.scala
Created March 17, 2015 07:14
Scalaのかんたんなモナド
// もなもなしたアレ関係
package object Monads {
// Option関係
def optionTest = {
println("--optionTest--")
// Option(Maybe)型は標準搭載
val o1 = Some("string!!")
val o2 = None
@nenono
nenono / StringExtension.cs
Created October 4, 2019 10:46
(.NET)How to convert string to bytes array that is encoded UTF-8 with BOM.
using System.IO;
namespace Sample
{
public static class EncodingExtension
{
public static byte[] GetUtf8WithBomBytes(this string str)
{
var encoding = new UTF8Encoding(true)
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream, encoding))
type subject = {point: int}
type student = {subjects: subject list}
type classroom = {students: student list}
let data = {students = [
{subjects = [{point = 10}; {point = 20}]}
{subjects = [{point = 20}; {point = 30}]}
{subjects = [{point = 30}; {point = 40}]}
{subjects = [{point = 40}; {point = 50}]}
  • 私のF# → しごとちゅうに書いた小さなコード晒す
  • neno
  • 2016/6/28 #nagoyakaeru

ファイルバージョンを一括で取得してcsvに吐くやつ

exeファイルとかdllファイルを右クリック→プロパティ→詳細情報で見れる「ファイルバージョン」とかを一括で取得したい!という要望にこたえる。

.NET1.1しかインストールされてない環境でも動きます。そういう要件だったのです。 C# のコンソールアプリケーションです。

@nenono
nenono / FizzBuzz.scala
Last active October 16, 2015 16:18
ScalaでFizzBuzz
// フィズバズ
object FizzBuzz{
def fizzBuzz(max: Int) = {
require(max > 0) // assertion
(1 to max) // 1~(max-1)のシーケンス生成。1 to maxの箇所は、オブジェクトの1引数メソッドの糖衣構文で、1.to(max)と同じ意味
.map( // お馴染みmap関数はLINQ風にメソッド呼び出し
(x: Int) => // lambda式もC#風と思うとわかりやすいです
(x % 3, x % 5) match { // タプル生成→パターンマッチで分岐する形はF#(ML)っぽく書けます
case (0, 0) => "FizzBuzz!"
case (0, _) => "Fizz!"
@nenono
nenono / splitBy2.fsx
Created July 14, 2015 09:29
任意型リストのsplit(その2 by id:htid46)
let splitBy2 sep xs =
let a, b = List.foldBack (fun x (a, b) ->
if x = sep then (b :: a, []) else (a, x :: b)) xs ([], [])
b :: a
let test1 = splitBy2 0 [1;2;3;0;4;5;0;6] = [[1;2;3];[4;5];[6]] // -> true
let test2 = splitBy2 0 [] = [[]] // -> true
let test3 = splitBy2 0 [1;0;2;0] = [[1];[2];[]] // -> true
@nenono
nenono / join2.fsx
Created July 14, 2015 09:30
任意型リストのjoin(その2 by id:htid46)
let join2 (elem: 'a) (lis: 'a list) =
lis
|> List.fold (fun a x -> match a with | [] -> [ x ] | _ -> x :: elem :: a ) []
|> List.rev
let test1 = join2 0 [1;2;3;4;5;6] = [1;0;2;0;3;0;4;0;5;0;6] // -> true
let test2 = join2 0 [] = [] // -> true
@nenono
nenono / splitBy.fsx
Last active August 29, 2015 14:24
任意型リストのsplit
let splitBy (elm:'a) (lis:'a list) =
lis
|> (Seq.fold (fun (a,b) x->if x=elm then (b::a,[]) else (a,x::b)) ([],[])) // a=処理済みリスト b=処理中リスト x=現在の要素
|> (fun (a,b)-> b::a) // 最後の要素だけTuple右辺に残ってしまっているのでリストに結合
|> List.fold (fun s xs -> (List.rev xs)::s) [] // 個別リストの反転と全体の反転
let test1 = splitBy 0 [1;2;3;0;4;5;0;6] = [[1;2;3];[4;5];[6]] // -> true
let test2 = splitBy 0 [] = [[]] // -> true
let test3 = splitBy 0 [1;0;2;0] = [[1];[2];[]] // -> true