Skip to content

Instantly share code, notes, and snippets.

@takoeight0821
takoeight0821 / Program.cs
Created December 3, 2023 14:23
RPG EDSL
// アイテムやスキルの効果を、プログラム上のデータとして表現し、それを解釈・実行することで各パラメータを算出する。
// EDSL (Embedded Domain Specific Language 組み込みDSL) として知られているテクニック。
namespace Edsl
{
// Stats represents parameters of the character.
// Stats can only be calculated by Effect.execute() method.
record Stats(string Name, int HP, int MP, int ATK, int DEF);
// Condition represents the condition of the game.
@takoeight0821
takoeight0821 / paddle.py
Created November 11, 2023 03:19
JoyConを振ってwキーを押すデモ(Python 3.11.6で動作)
import time
import pyautogui
from pyjoycon import device
from pyjoycon.joycon import JoyCon
# Set up JoyCon
id = device.get_L_id()
joycon = JoyCon(*id)
is_pressed = False
@takoeight0821
takoeight0821 / flake.nix
Created January 11, 2023 03:46
malgo-lang/malgo build script (Nix)
{
description = "malgo flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
@takoeight0821
takoeight0821 / Main.hs
Created March 10, 2022 13:44
センタイギアはおよそ128年間展開し続けられることを証明した。
#!/usr/bin/env stack
-- stack script --resolver lts-18.26
-- | 詳細は https://twitter.com/takoeight0821/status/1501899867249000448
module Main where
import Data.Foldable
import Data.IORef
import Data.List
import Data.List.HT
@takoeight0821
takoeight0821 / tundoku.md
Created March 7, 2022 14:28
読みたい積読一覧
@takoeight0821
takoeight0821 / Main.elm
Created January 28, 2022 12:40
Simple interactive animation. I created it to debug the system created in the assignment.
module Main exposing (..)
import Playground exposing (..)
cupWidth : number
cupWidth =
100
((N(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*S+N(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*WS(NS+NE(NS+NE(WE)*WS+WE)*WS+NE(NS+NE(WE)*WS+WE)*(E+NE(WE)*S)(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*WS)*NE(NS+NE(WE)*WS+WE)*(E+NE(WE)*S)(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*S+(W+N(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*S+N(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*WS(NS+NE(NS+NE(WE)*WS+WE)*WS+NE(NS+NE(WE)*WS+WE)*(E+NE(WE)*S)(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*WS)*(E+NE(NS+NE(WE)*WS+WE)*S+NE(NS+NE(WE)*WS+WE)*(E+NE(WE)*S)(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*S))(N(NS+NE(WE)*WS+WE)*S+N(NS+NE(WE)*WS+WE)*(E+NE(WE)*S)(N(WE)*S+(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*(E+NE(WE)*S))*(W+N(WE)*WS)(NS+NE(WE)*WS+WE)*S+(W+N(NS+NE(WE)*WS+WE)*WS+N(NS+NE(WE)*WS+WE)*(
@takoeight0821
takoeight0821 / main.md
Last active June 27, 2021 06:33
Malgo開発記録:型シノニムとimport

Malgo開発記録:型シノニムとimport

自己紹介

星にゃーん(@takoeight0821)です。 HaskellとかSF小説とかが好きです。

今日は自作言語Malgoの話をします。 https://github.com/malgo-lang/malgo

@takoeight0821
takoeight0821 / bf2c.sh
Last active May 17, 2020 13:32
Brainf**kコンパイラ。BFからCへのコンパイラと、gccに食わせると定数に最適化されることを示すデモ。#hiro_it 用
echo '#include <stdio.h>'
echo 'int main(void) {'
echo 'int tape[256] = {0};'
echo 'int i = 0;'
cat $@ |\
sed -e 's/\]/}/g' |\
sed -e 's/\[/while(tape\[i\]){/g' |\
sed -e 's/+/tape\[i\]++;/g' |\
sed -e 's/-/tape\[i\]--;/g' |\
sed -e 's/>/i++;/g' |\
@takoeight0821
takoeight0821 / Main.scala
Created March 17, 2020 09:43
Scalaを思い出すために書いたミニミニLisp
// libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2"
import scala.util.parsing.combinator._
import scala.collection.mutable._
sealed trait SExpr
case class Symbol(x: String) extends SExpr
case class IntLiteral(x: Int) extends SExpr
case class SList(xs: List[SExpr]) extends SExpr
sealed trait SValue