Skip to content

Instantly share code, notes, and snippets.

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

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

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

この記事の趣旨

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

@adacola
adacola / higher-order-function.ipynb
Last active October 22, 2023 14:44
F# の Array.Sort 関数を例にして高階関数を説明
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@adacola
adacola / json-parser.ipynb
Last active December 20, 2022 09:12
FParsecでJSONパーサ書いてみた
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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 March 5, 2021 05:42
トポロジカルソートをF#で実装
// 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 February 6, 2021 05:01
エニグマ暗号器
#!/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 June 8, 2020 19:42
F# Result型の便利関数とコンピュテーション式
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 October 23, 2019 20:58
コピー元ディレクトリ内にあるzipファイルをすべて展開しつつコピー先ディレクトリにファイルをコピー。多段zip対応。
#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 August 21, 2018 14:20
飲酒中に書いたコードであることを表明するコンピュテーション式
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 August 1, 2018 13:16
Miller-Rabin法を使った素数判定アルゴリズム
/// 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