programming

飽きるまでProject Eulerに挑戦中

はじめに ネタバレ注意 タイトルの通り。 まずは一番簡単なレベルの問題を制覇したい。 Project Euler とは About - Project Euler 一言で言うと数学絡みのプログラミングの問題を出しているサイト。 どの問題も1分以内で答えが出せる設定らしい。 コンピュ…

Rust テンプレート

自分用 Rust勉強中 まだCっぽい書き方しかできない 入力 1行標準入力 fn readline() -> String { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); buf.trim_end() } ファイル入力 use std::io::{BufRead, BufReader}; use std…

A*の実装

はじめに A*を実装してみた。 実装したのはA* だが、ヒューリスティック関数が常に0を返すため、動作はダイクストラ法と変わらない。 A*とは A*は経路探索でよく用いられるアルゴリズム。 ダイクストラ法に「現在の点から終点までの推定コスト」を追加するこ…

1から100までFizz Buzz

現実逃避。1から100までFizz Buzzを表示するというよくあるやつ。 #include <stdio.h> #include <stdlib.h> char *x[] = { "Fizz", "Buzz", "Fizz Buzz" }; int y[][5]={ {2, -2, -2, -2, -2}, {-1, 0, -1,-1, -2}, {-2, 1, 0, -1, -2}, {2, -2, 1, 0, -1} }; char z[100][4]; c</stdlib.h></stdio.h>…

SOLVED: なぜセグフォ?

最近現実逃避が捗りすぎて困っている. 最近は低レベルのコードとかよくわからないので勉強している(遊んでいるだけ). このC言語のソースコードは, x86_64のLinuxなら動く環境があると思う. const unsigned char main[] = { 72, 199, 192, 1, 0, 0, 0, 72, 19…

文字列を出力するプログラムを楽に難読化(?)する方法

センスは感じられないがBrainfuckを使えばとりあえずぱっと見何やってるかわからない. 配列(とポインタ)さえ扱えればどんな言語でもできるはず. 1時間もかからない. 入力した文字列を出力するBrainfuckコードを出力するプログラムをインターネット上で見つけ…

無題

133565, 39302, 33134, 38327, 32709, 79486, 141338, 29224, 67390, 33156, 135192, 144337, 154547, 21212, 5610, 105208, 21821, 139964, 115775, 30189, 159181, 130547, 125287, 74453, 55876, 133762, 80912, 6067, 79578, 27557, 129153, 138025, 114…

C言語のmain関数の仮引数について

最近のC言語の規格では, main関数の仮引数は基本的に int main(void) か int main(int argc, char **argv) のどちらか(またはこれらと同等のもの)にしなければならない(C99, C11). のだが, 今日ネット上で int main(int argc, char **argv, char **envp) と…

Internet Kill Switch by Firewall (OpenVPN + iptables)

タイトルの通り. このPythonプログラムはopenvpnの設定ファイルの remote <hostname> <port> を remote <ip address> <port> に書き換える. また, 書き換えたVPNサーバのIPアドレスへのアクセスを許可するiptablesのOUTPUTチェインの追加ルールを./rules.txtに保存する. iptables-restoreで読み</port></ip></port></hostname>…

安全でないストリーム暗号ARCFOUR

はじめに Wikipediaを見てみたらARCFOURのアルゴリズムが単純だったので実装してみた. 一応言っておくが, 暗号アルゴリズムの実装は素人がやるものではない. 参考記事: https://en.wikipedia.org/wiki/RC4 記事に書いてある通りに実装した. ソースコード /* …

TweetDeckのサムネイルを小さいサイズの画像にするブックマークレット

通信速度制限を喰らっているときにTweetDeckの画像抽出カラムの流速が速いととてもつらいのでそれを若干緩和させるブックマークレットを書いた. JavaScriptをまともに触るのは初めてなので苦戦. Web系まったくわからん. Content Security Policyのアレでこれ…

Linux Kernel の黒魔術マクロ: __is_constexpr(x)

__is_constexpr(x) は Linux kernel 4.17 で導入されたマクロで、与えられた式が定数式であるかを 式を評価せずに 判定する。 /* * This returns a constant expression while determining if an argument is * a constant expression, most importantly wit…

漢字変換を雑に実装してみる

一発変換と変換候補を出すだけ。 たぶん一番基本的なやつ。 真面目に日本語入力を実現するには形態素解析とかいろいろしなきゃいけないので自分には MURI。 ライブラリもあるけど興味もそこまでない。 Mozc 更新して。 コメント書けないのはアレだけど、Pyth…

Uniqfuck: Brainfuck Translator

Uniqfuck Brainfuck プログラムと Brainfuck 派生言語プログラムを相互変換するプログラムを作った。 名前は Uniqfuck とした。 ソースコードは記事の最後に載せる。 ライセンスは MIT License とする。 使い方 Uniqfuck の使い方を簡単に説明する。 Python …

ExcludeNodes の設定を半自動化

追記 ExcludeNodes, ExcludeExitNodes の設定は参考サイトから丸パクリして載せていましたが, 消したようなので消しました. このプログラムは, BadExit の付いたノードが一つも存在しない場合の処理が抜けています. 気が向いたら直しておきます.直しました. …

Enigma Machine Emulator in Python

For now, I am not going to translate this article into English because there are many web pages that explain the details about the Enigma machines in English. The source code below might be uploaded to GitHub. はじめに 第二次世界大戦中, ナ…

Cで再発明せずにデータ構造を使う

たとえば C で単方向連結リストを実装する場合、ふつう入門書では struct slist { int n; struct slist *next; }; のように実装するが、使いたいデータの型が複数ある場合、 struct slist_int { int n; struct slist_int *next; }; struct slist_double { do…

M_PI は C の標準仕様ではない | M_PI Is Non-Standard in C

GCC または Clang で M_PI を使う場合、 _XOPEN_SOURCE=500 またはより一般的な機能選択マクロが定義されていなければならない。 デフォルトでは定義されているので問題なく使える。 M_PI is defined by default with GCC or Clang, so you can use it witho…