Skip to content

Instantly share code, notes, and snippets.

View boletales's full-sized avatar

boletales boletales

View GitHub Profile
@boletales
boletales / main.md
Last active November 10, 2024 09:10
場所を賢くハッシュ化する

場所を賢くハッシュ化する

ワンライプログラミング部です。先日、場所当てゲームを出題するためのツールをつくりました。

ツールの仕様:

ちなみに上の問題の答えは、「JR東海・JR東日本・東京メトロの乗換駅」です。探してみてくださいね♪

続・まなみのなかみ クロージャの実装は一苦労じゃ

おさらい

インタプリタ(プログラムの文字列を読んでその場で実行するソフトウェア)は、文字の羅列を解釈して「抽象構文木」という文法にしたがって構造化されたデータを生成し、それを評価することで動作しているのでした。

たとえば「1+2*3-4」のような文字列を解釈すると、

減算(
  加算(
    数値要素「1」, 
 乗算(数値要素「2」, 数値要素「3」)
@boletales
boletales / hs.md
Last active November 1, 2024 07:02

ツールについて

GHCi

  • GHCiは、Haskellの対話型インタプリタである。
  • 以下のようにして起動する。
$ ghci
  • GHCi中では、:lでファイルを読み込み、:rでリロードすることができる。
  • :t 【式】で、その式の型を表示することができる。
  • 以下の各項について、何らかのファイルに書き込んだ上で、:lで読み込み、:tでの型の確認や、関数の呼び出しを行うことで、その挙動を確認してみよう。
@boletales
boletales / main.md
Created October 19, 2024 14:06
まなみのなかみ(副題:簡単!プログラミング言語のつくりかた)

まなみのなかみ(副題:簡単!プログラミング言語のつくりかた)

#深夜の真剣レポート60分一本勝負 第2回 お題:「好きな一言」

みなさん、好きな一言はありますか? 私はDiscord bot「うだまなみ」の起動時メッセージ「おはようっ!」です。

前提

友人のDiscordサーバーに導入されているDiscord bot「うだまなみ」には、「!1d6」のようなダイスロールコマンドがあり、極めて好評でした(!6d200でポケモンの種族値を生成する、などの遊び方を観測しました)。

ダイスロールコマンドへの入力として「!1d6*10」などの計算式を試しているひとがいたので、私はふと思い立って電卓機能「!calc」コマンドを開発しPRを送ることにしました。

@boletales
boletales / junk.cpp
Last active October 13, 2024 08:43
ヒット・アンド・ブローの貪欲な推測戦略について

ヒット・アンド・ブローの貪欲な推測戦略について

第1回 深夜の真剣レポート60分一本勝負 「今週の学び」の作品です。

今日の昼頃天井眺めてたら思いついた。

1. ゲーム「ヒット・アンド・ブロー」の概要

ヒット・アンド・ブローは二人で遊ぶ数字当てゲームで、ルールは以下の通りである:

  1. 各プレイヤーは0~9の数字から3桁の順列(以下、「組」と呼ぶ)を選ぶ(123や846など。225のような重複のあるものはだめ)。
  2. プレイヤーは各ターン、相手の選んだ組を一つ推測し、提示する。
  3. 相手の推測に対して、以下のような情報を返す:
@boletales
boletales / layout_tani.json
Last active December 14, 2022 04:38
谷+大橋
{"rails":[{"node":{"nodeid":0,"rail":{"name":"slopecurve","flipped":false,"opposed":false},"state":0,"connections":[{"nodeid":1,"from":0,"jointid":1},{"nodeid":243,"from":1,"jointid":0}]},"instanceid":0,"pos":{"coord":{"x":-7.99999999999961,"y":-7.999999999999931,"z":1.5},"angle":190.06635554218235,"isPlus":true}},{"node":{"nodeid":1,"rail":{"name":"slopecurve","flipped":false,"opposed":false},"state":0,"connections":[{"nodeid":0,"from":1,"jointid":0},{"nodeid":2,"from":0,"jointid":1}]},"instanceid":1,"pos":{"coord":{"x":-7.707106781186028,"y":-7.292893218813437,"z":1.25},"angle":201.84732799314403,"isPlus":true}},{"node":{"nodeid":2,"rail":{"name":"slopecurve","flipped":false,"opposed":false},"state":0,"connections":[{"nodeid":1,"from":1,"jointid":0},{"nodeid":3,"from":0,"jointid":1}]},"instanceid":2,"pos":{"coord":{"x":-6.999999999999424,"y":-7.000000000000123,"z":1},"angle":213.62830044410572,"isPlus":true}},{"node":{"nodeid":3,"rail":{"name":"slopecurve","flipped":false,"opposed":false},"state":0,"connect
@boletales
boletales / index.md
Last active December 15, 2023 07:42
【非公式】UTokyo Accountの多要素認証の本人確認方法としてブラウザの拡張機能を用いる方法について

【非公式】UTokyo Accountの多要素認証の本人確認方法としてブラウザの拡張機能を用いる方法について

概要