三流プログラマの戯言

プログラミング初心者が気になったことを書き綴るだけ。主にc#

AtCoderで Forth 入門

概要 今回はプログラミング言語の Forth について書きます。 この記事は刺身タンポポ同好会のアドベントカレンダーの記事です。 刺身タンポポ同好会についてはこちら 昨日の記事はこちら 明日の記事はこちら 目次 概要 目次 Forth とは 所感 命令一覧 AtCode…

brainfuck でも三角関数がしたい【ABC168C-: (Colon) を解く】

初めに この記事は普通の問題解説ではないので、普通の解説が見たい方は別の方の記事をご覧ください。 目次 初めに 目次 概要 解法 時針と分針の角度を求める 三角関数 (cos) の実装 平方根を求める ところで精度は足りますか? 実際の提出 あとがき 概要 今…

自作の brainfuck の開発環境の紹介

初めに 今回は Brainf*ck Advent Calendar 2019 の 16 日目の記事です。 adventar.org 前日の記事はこちら 明日の記事はこちら 目次 初めに 目次 概要 機能紹介 エディタ機能 シンタックスハイライト [ 入力時の ] の補完 対応する [,] の表示 自動インデン…

brainfuck でオセロを書く(後編)

初めに 今回は Brainf*ck Advent Calendar 2019 の 13 日目の記事です。 adventar.org 前日の記事はこちら 明日の記事はこちら 目次 初めに 目次 概要 無限ループ 入力の読み取り 概要 コード _ かどうかの確認 概要 コード コマをひっくり返す サーチ方向の…

brainfuck でオセロを書く(前編)

初めに 今回は Brainf*ck Advent Calendar 2019 の 10 日目の記事です。 adventar.org 前日の記事はこちら 明日の記事はこちら 目次 初めに 目次 概要 メモリ配置 盤面情報 入力情報および石情報 固定文字列 メモリ図 初期セットアップ フィールドの作成 コ…

brainfuck 閑話 : 配列のランダムアクセス

初めに 今回は Brainf*ck Advent Calendar 2019 の 7 日目の記事です。 adventar.org 前日の記事はこちら 明日の記事はこちら 目次 初めに 目次 概要 配列の表現方法 本記事での制約 コードとメモリ遷移 方法1 方法2 方法3 方法4 ざっくり解説 計算量 空…

brianfuckの小手先のテクニックで変数を削減

初めに 今回は Brainf*ck Advent Calendar 2019 の 6 日目の記事です。 adventar.org 前日の記事はこちら 明日の記事はこちら 誘ってくださった主催者さんには感謝しています。 目次 初めに 目次 概要 ループ構造の逆転 問題 解答コード 解説 二つのループ b…

brainfuck 入門:非破壊 if

概要 今回は非破壊の if の説明をします。 コード的には重要ではないですが、考え方は重要なので記事を一個使って説明します。 本当は大小比較を説明したかったんですけど、そのためには非破壊 if の説明とその考え方を説明しないといけないことに気が付いた…

AtCoder Brainfuck Contest 参加記

概要 有志の方がAtCoderのバーチャルコントテストで brainfuck 向けの問題でバチャコンを開いてくれたのでそれに参加しました。 全部まとめて提出用としたところ、ペナを出しました。恥ずかしいです。 というわけで、問題の解説を行っていきたいと思います。…

brainfuck 閑話:マルチバイト変数 設計編

概要 今回はマルチバイト変数(多バイト長整数)について書いていきます。 簡単に言うと、256 の数値を扱う方法です。 本当はもっと後に書く予定でしたが、知りたいという方がいたので前倒しで書きました。 今は閑話としてカテゴライズして、後でもう一度ま…

brainfuck 入門:文字列の受け取り

概要 今回は文字の入力に関して説明します。数値の入力ではないです。ごめんなさい。 目次 概要 目次 文字列読み込み 1 行読み込み スペースまでの読み取り 改行またはスペースまでの読み取り 問題例 次回 記事一覧 文字列読み込み 1 行読み込み brainfuck …

brainfuck 入門:if 文と bool 演算

概要 今回は、if 文とそれに伴う bool 演算について解説します。等価、不等価も説明しますが、大小比較に関しては別記事で書こうと思っています。 目次 概要 目次 if 文 if 文 if-else 文 bool 演算 bool 化 ((bool)value) 真理値反転 (!value) 不等価演算 (…

brainfuck 入門:値の移動とコピーと初期化と準非破壊ループ

概要 brainfuck を書く上で基本となる、値の移動、値のコピー、値の初期化および、準非破壊な繰り返し文の説明をします。 目次 概要 目次 構文解説 値の移動 値のコピー 値の初期化 準非破壊ループ 問題例 次回 記事一覧 構文解説 値の移動 brainfuck では、…

brainfuck 入門:ループ文と定数生成と文字出力

今回の主軸 今回は、文字出力の行い方を解説します。 プログラミング的には後でもいいんですけど、AtCoderをやるうえでは、かなり重要となるので、初めに説明しておきます。 また文字出力に必要となるループ文と定数生成の説明をしたいと思います。 目次 今…

brainfuck 入門:リンクまとめ

はじめに この記事はあくまで brainfuck 入門であり、プログラミング入門ではありません。 今回は言語仕様編ということで、brainfuck の言語仕様および、解説で使用する環境の話をします。 すでに AtCoder で brainfcuk を書いてるような人は見なくてもいい…

brainfuck 入門:言語仕様編

今回の主軸 今回は、 brainfuck の言語仕様と環境依存の挙動について解説します。 目次 今回の主軸 目次 brainfuck とは Hello World. 概要 予約語 メモリ仕様 未定義動作 実行環境による裁量 今回の記事に用いる実行環境 実行環境例 問題例 次回 記事一覧 b…

AtCoderで茶色になるまでにやったこと/あったこと

先日(2019/09/21 )のAGC083にてついに茶色になることができました。 AtCoder界隈では色変したらブログを書く慣習があるようなので書いてみます。 茶色でこの記事を書くのは自分ぐらいだと思います。 茶色になったわけですが、使用言語はbrainf*ckです。rated…

AtCoderGrandContest038 を brainfu*ckで挑戦

初めに AGC038が終わりました。Aのみの1完ではありましたが700点はbrainf*ckでは無理なので、満足いく結果です。 ABC140二続き解説記事を書きました。 ABC141?いえ、知らない子ですねぇ。 目次 初めに 目次 注意 A - 01 Matrix 概要と設計指針 概要とコード…

AtCoder Beginner Contest 140

初めに ABC140が終わりました。自分は残念ながらABCの3完でレートは下がりました。 (といっても、元が低いので、そこまで低くはなっていないですが。 コンテスト終了して8分ほどあとにDをACしました。時間内に出せていたらと思うと悔しいです。 せっかく時…

CPSCO2019 Session1 B問題をbrainf*ckで解く(後編)

前編では、配列の作成まで書きましたが、 後編では、それらの値がすべて等しいかどうかを判別していきます。 前編を読んでない人は先にそちらを読んでください。 一般の言語だと、配列の先頭から見て、0でなければ記録されている数と一緒かどうかを見ていっ…

CPSCO2019 Session1 B問題 をbrainf*ckで解く(前編)

こんにちは、先日はにーまさん主催の初心者向け競プロ合宿CPSCOに参加してきました。 主催してくれたはにーまさんには感謝しています。 細かいSessionの話とかはほかの人に任せて、今回はSession1のB問題に関して書いていきます。 使用言語はBreakbrainf*ck…

響ちゃんスイッチのメニューデータの管理について

先日投稿した、響ちゃんスイッチですが、今日はそのメニューデータの管理方法について、自分のメモとして記事にしておきます。 わかりやすいようにとか、機能説明とか特にしないので、見る意味は皆無です。 また、後でメモリ管理に関しては仕様を変更する予…

響ちゃんスイッチ

皆さん、艦これは好きですか。 皆さん、駆逐艦は好きですか。 皆さん、六駆は好きですか。 皆さん、銀髪幼女は好きですか。 皆さん、響ちゃんは好きですか。 私は好きです!(響ちゃんが) 響ちゃんが好きで、ボタンを押すと響ちゃんのボイスが流れる装置を…

Brainf*ckでオセロを書いた話

Brainf*ckでオセロ(Reversi)プログラム書いたので、メモ程度に投稿。 詳しい解説は気が向けばするかも… 一応,オーバーフロー、アンダーフローは反対側に出る。 標準入力はEnterも受け取ることにしています。 境界値判定は行っていないので、入力値がおかし…

Delegate?.Invoke(); がスレッドセーフだという話。

皆さん、デリゲード使ってますか? デリゲードを使ってNullReferenceExceptionを出したことがあるのは私だけではないと思います。 nullチェックはしっかりしましょう。 ここでnullチェックをする上で、重要となるのがスレッドセーフかどうか。という話になり…

浮動小数点型(double型)の最小値

みなさんこんにちは、こんなしょうもない記事をもてくれる人は片手で数えれるほどしかいないと思います。 そんなみなさん、こんな疑問を抱いたことはないですか? 「浮動小数点型の中で最小の値ってなんだろう?」 と。 ないですかね? 私はないです。 いや、…

Enumelable.GroupBy()のオーバーロード

概要 自分でプログラム書いていた時にふと、「これはGroupByでうまく実装できないのか」という疑問が発生して、いろいろ調べた後、 Twitterで「GroupByについてまとめようかなぁ」とつぶやいたところ、「はよ」と脅されたために作成しました。GroupByのオー…

素数を計算する

何を思ったかよくわからない言語に手を出してしまった。 とりあえず練習がてら素数を求めるプログラムを書いてみる。 出来上がったのがこちら う~ん気持ち悪い。 言語はBefunge。この言語の特徴は実行方向が4方向に変わること。^v<>で単純な方向転換。|が縦…

if文の{}の存在

プログラミング触り始めの頃、if文の{}は欠かさず書いてたけど、if内の命令文が1つなら{}を省略できるわけで、 if (i == 0) a = 10; else if (i == 1) a = 4; else a = 5;と書ける。ここでちょっとした疑問。elseとifの間にスペースを入れるわけだけど、else…