stackprobe7s_memo

何処にも披露する見込みの無いものを書き落とす場所

CsvFile*.cs

RDBを使わずにCSVでなんとかしてみた結果できた副産物。 特筆するようなところはないと思う。 概ね自分用。 CsvFileDBTable.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using Charlotte.C…

フィッシャー・イェーツのシャッフル

長さ N の配列 arr = [ 0, 1, 2, ... (N-1) ] をシャッフルしたとき、どの要素から c = arr[c]; というように辿っていっても巡回する。 source: function Shuffle(arr) { for (let i = arr.length - 1; 0 < i; i--) { let j = Math.floor(Math.random() * (i…

奥沢は目黒区だと勘違いしていた話 (C# + 国土地理院の地図データ)

つい最近(と言っても数年前)まで東急目黒線の奥沢駅は目黒区か大田区だと思っていたのですが、ひょんなきっかけで世田谷区だと知りました。 まぁ勝手に思い込んでいただけだったので多少驚いて素直に納得したのですが、むしろ何十年もそのことに気づかなかっ…

Windowsで動くゲームの開発環境を公開してみる (C# + DXライブラリ)

先日書いた記事に便乗します。 ・・・というのも (C++) + DXライブラリ で書いていたゲームを C# + DXライブラリ に移植するというのを一昨年やって、これを使って何かすごいゲームを作ってやろうとここ数か月意気込んでみたものの、未だ目指すところが定ま…

棒消しゲームは先手必勝か後手必勝かどうかについて微考ペガサス

棒消しゲームについて 45mix.net 段数によって先手必勝・後手必勝が分かれるんじゃないかと思って確かめてみたらそうだったという話。 ちなみにこのゲームは引き分けの無い二人零和有限確定完全情報ゲームなので、先手必勝・後手必勝のどちらかになることは…

素数の列挙 (JavaScript)

前にもやったけど エラトステネスの篩をビットリストを使わないようにやってみたら、そこそこ気持ち悪い実装になったので、ここに残しておく。 下記コード中の Primes(max) 関数が max 以下の素数を小さい方から列挙する。 Primes はジェネレータなので Prim…

ブラウザで動くゲームの開発環境を公開してみる

先日作ったブラウザで動くゲームをサイトに仕立ててみた。 http://shield-games.ccsp.mydns.jp/entrance ・・・仕立ててみたものの、ゲームを充実させて人が来てくれるようになるまで大分掛かりそうなこととブラウザ版の Unity の趨勢に鑑みると、このままで…

ブラウザで動くゲームを試作した (JavaScript)

JavaScript でゲームを作ってみた。 JavaScript の習熟度に自信がなかったので、JS の知見を得るのと、こうやればゲームにできるよねという妄想が正しいかどうか確認するため、ちゃんとしたゲームよりとりあえず動く試作版レベルを目指した。今後はこれをち…

HTTPサーバーの作り方 (C#)

故あって HTTP サーバーを C# で実装したので、諸所改変して 1 クラスにまとめて、「 HTTP サーバーの作り方ステップ 1, 2, 3 」みたいにして公開してみる。 Visual Studio Community 2019 がインストールされている環境であれば 3 分くらいで HTTP サーバー…

C#のソースコードを難読化するツールを自作した(C#)

Java, C# で書かれたコードを (Java, C# のコンパイラで) コンパイルした実行ファイルの中身は VM 用の中間言語であり、逆コンパイルが容易であることが知られていて、そのリバースエンジニアリング対策として難読化があります。 C# で書いたゲームを公開す…

Welcome to Masshirosoft Helmet Service (C, telnet?)

(追記)当時のサーバーをかなぐり捨てたので今はつながりません。どうでも良いものをこしらえました。 以下で接続します。 C:\Users\User0001>telnet stackprobe.ccsp.mydns.jp src https://github.com/stackprobe/Factory/blob/master/Labo/Socket/telnet/He…

もうすぐ POSIX time が 1,600,000,000 になります

POSIX TIME ミリ秒 荒ぶる感じの 荒ぶる感じの(2) LINK http://ornithopter.ccsp.mydns.jp/HPStore/Hatena/20200905_PosixTime/t0001.html http://ornithopter.ccsp.mydns.jp/HPStore/Hatena/20200905_PosixTime/t0001m.html http://ornithopter.ccsp.mydns.…

.wavファイルからオーディオ・スペクトラム(.mp4ファイル)を生成する (C# + ffmpeg.exe)

タイトルどおり .wav ファイルから「オーディオスペクトラム」を動画 .mp4 として出力するプログラムを自作した。 某飲み屋のディスプレイのために作成させていただいたプログラムにオーディオスペクトラムの生成が必要だったので、そのとき作ったものの副産…

malloc/free は遅いというよくある話 (C)

昔ゲームを作っているときの話、テストプレイ中ときどきガクッ・ガクッと一瞬処理落ちすることがありました。 原因は malloc の呼び出しで、通常は計測しても処理時間は 0 [ns] なのですが 100~1000 回に一度くらいの割合で 1~10 [ms] も掛かることがあっ…

不思議な現象 (Visual Studio Community 2019)

不思議な現象に遭遇したけど、書き残す場所が他に無かったのでここに書く。 適当なフォルダ(ここではC:\temp)を作成して、以下の内容の a.c を作成する。(正しいコードなら何でも良い) #include <stdio.h> #include <windows.h> // 再現のためにこれが必要 main() { printf("Hell</windows.h></stdio.h>…

ポインタ

C言語のポインタってこんなことできるんだよという大人気ないこのコードを披露する機会は一生やってこないと思ったのでここに残しておく。 ちなみに、後から気づいたのだが ANSI C, Cxx などの規格的にやってはいけないことをやっている。 少なくとも 2_code…

HTMLのcanvasタグ

これを canvas タグに書き直してみた。クリックすると花が避ける。 Link http://ornithopter.ccsp.mydns.jp:58946/Hatena.html src https://github.com/stackprobe/Post2/blob/master/Conv/FlowerIndexHtml/src/Hatena.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script> console.log("花の画像に DES</meta></head></html>…

ラングトンのアリ

基本的なやつのみ src https://github.com/stackprobe/Annex/blob/master/wb/t20191106/t0001/t0001/LangtonAnt.cs 仕様 100x100 上下左右ループ 背景色 = 黒 動画 Length = 1:30 20 fps 100 step/frame LangtonAnt_000.mp4 初期位置 初期方向 色 50, 50 上 …

16bitのRSAを実装してみる (C)

昔実装した16bitのRSAが見事に間違っていたことに気付き、狼狽した勢いで書き直しました。 実用性はありませんが、仕組みを理解するために作成 仕様 平文 ... 16ビットの符号なし整数 (或いは2バイトのデータ) とする。 平文の最上位ビットを1にするなどして…

自動生成したRPGのダンジョンマップをゲームにしてみた (C#, DXライブラリ)

ダンジョンマップを自動生成するで自動生成したダンジョンマップを使ったゲームを作った。 昔の3D 2Dで3Dっぽく見せるやつ。真メガテンみたいな。(もちろん実装したのは迷路だけ、他の要素は何もない) とりあえず動くことを目指した。ゲーム性は二の次 ダウ…

三すくみ

二次元テーブルに (0, 1, 2) をランダムに配置して 三すくみで(じゃんけんの関係のように)侵食 隣り合う2つのセルをランダムに選んで 0 の隣が 1 だったら 1 を 0 にする。 1 の隣が 2 だったら 2 を 1 にする。 2 の隣が 0 だったら 0 を 2 にする。 という…

RPGのダンジョンマップを自動生成する(C#)

ダンジョンマップらしきもののときはマップが孤立した空間だらけでそのまま使えなかった。 なので、ちゃんとした迷路に仕立ててみる。 MakeLikeADungeonMap() の pattern == 24 を使用する。 全ての空間を繋げて孤立を無くし、ついでにスタート地点とゴール…

THE MAKING 290 氷砂糖ができるまで で気になったこと

www.youtube.com 先日この動画を観て 11:44 からの部分、バケットの数 (はかりの数) の 14 という半端な数がちょっと気になった。 バケットの数が少なすぎれば 1kg になりにくいし、多すぎれば過剰設備となる。 きっと丁度良い数なのだろう。 シミュレーショ…

【機械学習・ディープラーニング】多層パーセプトロン(教師あり学習)の実装 (C#)

数学素人が自分なりに腑に落ちるところまで辿り着いた内容を吐き出したものです。 専門家に言わせれば、おかしい表現や用語があるかもしれませんが、根本の考え方は抑えたつもりです。 間違っているところがあれば、指摘していただけると幸いです。 昨年の今…

第25回 算数オリンピックファイナル 第3問 を C# で

少し前に問題文をどこかのまとめで見かけたので 頑張れば Linq だけ使って1文で書けるのかもしれない。と思った。 using System; using System.Collections.Generic; using System.Linq; public class Hello { public static void Main() { // 1~13までの数…

はてなブログでコードの右上に言語名を表示する

割と力技 テーマによっては上手く表示されないかもしれない。 このテーマでしか試していない。 やり方 設定 ⇒ デザイン ⇒ [スパナのアイコン] ⇒ フッタ に以下を貼り付ける。 <script> function PutLangLabels() { var pres = document.getElementsByTagName("pre");…

RPGのダンジョンマップらしきものを自動生成する(C#)

フィールドマップのときとほとんど同じ。 単純なアルゴリズムの割に、それなりに色々なマップができる。 MakeLikeADungeonMap() public static void MakeLikeADungeonMap(int pattern) // pattern: 0 ~ 1023 { const int w = 100; // マップの幅 const int …

RPGのフィールドマップらしきものを自動生成する(C#)

単純なアルゴリズムの割に、それなりのマップができる。 2値(海と陸のみ) MakeLikeAFieldMap() public static void MakeLikeAFieldMap() { const int w = 100; // マップの幅 const int h = 100; // マップの高さ Random rand = new Random(); int[,] map = …

ミューテックスだけを使ってプロセス間通信を行う(C#)

説明 特徴 ミューテックスだけを使ってプロセス間通信できるんじゃね?と思って試してみたかっただけの代物。 ソケットとか共有メモリとかファイルとか一切使えないけど「ミューテックス」だけは使えるという特殊な状況下でプロセス間通信したい時に使えるか…

名前付きイベントだけを使ってプロセス間通信を行う(C#)

説明 特徴 名前付きイベントだけを使ってプロセス間通信できるんじゃね?と思って試してみたかっただけの代物。 ソケットとか共有メモリとかファイルとか一切使えないけど「名前付きイベント」だけは使えるという特殊な状況下でプロセス間通信したい時に使え…