Skip to content

Instantly share code, notes, and snippets.

View no-literal-fizzbuzz.fsx
type FizzBuzz = Fizz | Buzz
let fizzbuzz<'a100>() =
let fizz = nameof Fizz
let buzz = nameof Buzz
let fizzbuzz = nameof FizzBuzz
let three = (nameof int).Length
let five = (nameof float).Length
let one = (nameof System.Math.E).Length
let hundred = nameof<'a100>.ToCharArray() |> Array.tail |> System.String |> int
@adacola
adacola / topological-sort.fsx
Last active Mar 5, 2021
トポロジカルソートをF#で実装
View topological-sort.fsx
// https://programmingpraxis.com/2010/11/19/topological-sort/
// 上記ページ記載のアルゴリズムを末尾再帰化、効率向上、閉路存在時の例外追加
let topologicalSort edges =
let rec loop removed isolated = function
| [] -> List.rev removed @ Set.toList isolated
| edges ->
let src, dst = edges |> List.unzip
let dstSet = set dst
let noIncomingVertex =
@adacola
adacola / enigma.fsx
Last active Feb 6, 2021
エニグマ暗号器
View enigma.fsx
#!/bin/sh
#if run_with_bin_sh
exec dotnet fsi $0 "$@"
#endif
// 実装の参考資料 : http://users.telenet.be/d.rijmenants/Enigma%20Sim%20Manual.pdf
// テストに使用したシミュレータ : https://www.101computing.net/enigma-machine-emulator/
#r "nuget: FSharpPlus"
#r "nuget: Argu"
@adacola
adacola / AdacolaResultExtensions.fs
Created Jun 8, 2020
F# Result型の便利関数とコンピュテーション式
View AdacolaResultExtensions.fs
namespace Adacola.ResultExtensions
open System
module Result =
let ofOption ifNone op =
match op with
| Some v -> Ok v
| None -> Error ifNone
@adacola
adacola / extractZipAll.fsx
Created Oct 23, 2019
コピー元ディレクトリ内にあるzipファイルをすべて展開しつつコピー先ディレクトリにファイルをコピー。多段zip対応。
View extractZipAll.fsx
#r "System.IO.Compression.dll"
#r "System.IO.Compression.FileSystem.dll"
open System.IO
open System.IO.Compression
let rec extractAll sourceDir targetDir =
let copyAll sourceDir targetDir =
let rec loop tasks sourceDir targetDir =
let tasks = (tasks, Directory.EnumerateFiles sourceDir) ||> Seq.fold (fun tasks sourceFile ->
@adacola
adacola / ethanol.fsx
Last active Aug 21, 2018
飲酒中に書いたコードであることを表明するコンピュテーション式
View ethanol.fsx
open System
type EthanolBuilder() =
let printWarning() = printfn "飲酒中に書いたコードなので危険です!"
member __.Bind(x, f) = printWarning(); f x
member __.Return(x) = x
member __.ReturnFrom(x) = printWarning(); x
member __.Using(x: #IDisposable, f) = try f x finally if x |> box |> isNull |> not then x.Dispose()
member __.Zero() = ()
member __.Combine(_, f) = f()
@adacola
adacola / MillerRabinPrimalityTest.fsx
Last active Aug 1, 2018
Miller-Rabin法を使った素数判定アルゴリズム
View MillerRabinPrimalityTest.fsx
/// Miller-Rabin法を使った素数判定
let isPrime n =
let modPow x k m =
let rec loop result x k m =
if k = 0L then result else
let result = if k &&& 1L = 0L then result else result * x % m
let k = k / 2L
let x = x * x % m
loop result x k m
loop 1L x k m
@adacola
adacola / kuso.fsx
Last active Jul 5, 2018
クソコードであると表明するだけのコンピュテーション式。これ自体がクソコード
View kuso.fsx
open System
type KusoBuilder() =
member __.Bind(x, f) = f x
member __.Return(x) = x
member __.ReturnFrom(x) = x
member __.Using(x: #IDisposable, f) = try f x finally if x |> box |> isNull |> not then x.Dispose()
member __.Zero() = ()
member __.Combine(_, f) = f()
member __.TryWith(f, g) = try f() with e -> g e
@adacola
adacola / twiplaToTsv.fsx
Created Apr 12, 2017
twiplaの参加者一覧のTSVファイルを作成します
View twiplaToTsv.fsx
(*
twiplaの参加者一覧のTSVファイルを作成します。
使用方法
twiplaの印刷用ページを表示してページ全体をクリップボードにコピーし、その内容を文字列にしてtwiplaToTsvの引数に渡します。
*)
open System
let twiplaToTsv (content : string) =
View μ'sとAqoursの誕生日についての考察(?).md

μ'sとAqoursの誕生日についての考察(?)

この記事は ラブライブ! Advent Calendar 2016 の8日目の記事です。

7日目の記事はnanikanaさんの ある野外フェスでその曲を聴くということについて - ただ春を待つ でした。3rdライブでの僕今大合唱は今でも鮮明に覚えています。私も号泣しながら歌っていました。僕光も1日目のライブビューイングでは歌うどころではなかったしその気もなかったですが、2日目現地では2番から歌っていました。いつかまたμ'sが歌う僕光を生で聴けることを願っています。

この記事の趣旨

タイトルに反して別に深い考察とかはないです。いわゆる「誕生日問題」をμ'sとAqoursに当てはめて遊んでみました。