Skip to content

Instantly share code, notes, and snippets.

@MikuroXina
MikuroXina / subtitle_placer.lua
Last active June 26, 2025 10:52
Subtitle Text+ clips auto-placer for DaVinci Resolve. It needs to place audio clips manually, but automates corresponding subtitles from your template caption Text+ clip.
-- Original: https://zenn.dev/kirimin/articles/3abcada2b1646f by kirimin https://github.com/kirimin
-- convention of voice/text file: "num_character_content" + ".wav" or ".txt"
-- Replace configs here
local TEXT_DIR = "/Users/mikuroxina/Documents/Projects/Scripts/pencil-puzzles/05/voices/" -- folder contains txt and wav
local AUDIO_TRACK = 2 -- number of audio track placed character voices
local CHARACTERS = { "中国うさぎ" } -- names of character, used in file name
-- --------------------------------------------------
@MikuroXina
MikuroXina / int.rs
Last active June 24, 2025 01:54
Type level integer with phantom types in Rust.
use std::marker::PhantomData;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum Z {}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct S<Z>(PhantomData<Z>);
/// `Int<M, N>` represents an integer `M - N`.
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct Int<M, N>(i64, PhantomData<(M, N)>);
@MikuroXina
MikuroXina / ceil_sqrt.rs
Created May 11, 2025 18:26
Finds the ceiling value of square root with Rust.
/// Finds the ceiling value of square root of `n`.
pub fn ceil_sqrt(n: i64) -> i64 {
let mut base = (n as f64).sqrt() as i64 - 1;
while (base + 1) * (base + 1) <= n {
base += 1;
}
base
}
@MikuroXina
MikuroXina / parser.hs
Last active April 28, 2025 15:30
An implementation of parser combinator with Haskell.
{-# LANGUAGE LambdaCase #-}
{-# OPTIONS_GHC -Wno-name-shadowing #-}
module Lib (
(+++),
chainL,
chainR,
char,
delimited,
integer,
@MikuroXina
MikuroXina / interpreter.hs
Last active April 28, 2025 00:54
An AST interpreter example for language with scoped variables and addition, subtraction, logical and/or.
import Control.Monad.State.Lazy
import qualified Data.Map.Strict as Map
import Data.Maybe
data Op = Plus | Minus | And | Or deriving (Show)
newtype VarName = VarName (String) deriving (Show, Ord, Eq)
data Expr
= Var (VarName)
@MikuroXina
MikuroXina / sized_array.ts
Created March 4, 2025 06:58
A Fixed-size Array type for TypeScript.
export type SizedArray<N extends number, T> = SizedArrayInner<N, T, []>;
type SizedArrayInner<
N extends number,
T,
Acc extends unknown[],
> = N extends PositiveInteger<N>
? number extends N
? T[]
: N extends Acc["length"]
@MikuroXina
MikuroXina / peace_for_all.go
Last active March 1, 2025 02:12
The (unofficial) completed Golang code written in an UNIQLO Akamai PEACE FOR ALL T-shirt.
package main
import (
"fmt"
"html"
"log"
"net/http"
"strconv"
"strings"
"time"
@MikuroXina
MikuroXina / fibonacci_section.rs
Created February 23, 2025 11:41
An implementation of Fibonacci-section method to find the maximum of a unimodal sequence.
/// Searches the maximum value of `query` in section between `lower` (exclusive) and `upper` (exclusive).
fn fibonacci_section(lower: usize, upper: usize, mut query: impl FnMut(usize) -> u32) -> u32 {
let n = upper - lower - 1;
if n == 1 {
return query(1);
}
let mut fib = vec![1, 2];
for i in 2.. {
let next = fib[i - 2] + fib[i - 1];
if next > n {
@MikuroXina
MikuroXina / mine_sweeper.rs
Last active February 10, 2025 15:49
An object-oriented mine sweeper implementation with Rust.
/// Design reference: https://zenn.dev/yuhi_junior/articles/062cf4f30b083d
use itertools::Itertools;
use std::cell::RefCell;
use std::rc::Rc;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Cell {
has_bomb: bool,
flagged: bool,
@MikuroXina
MikuroXina / round.rs
Created November 25, 2024 08:15
Emulations of rounding modes with Rust.
#![feature(float_next_up_down)]
//! Source: http://verifiedby.me/adiary/pub/kashi/image/201406/nas2014.pdf
/// Floating point number with mathematical error.
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
pub struct F64E {
/// An actual result by the default rounding mode.
base: f64,
/// Mathematical error for an ideal result.