Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions nsk-1010/aur.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# AUR投稿時の備忘録

## 新環境での準備

1. ssh鍵を作る(他の用途のものと別々にしといたほうがいいかも)
2. 公開鍵をMy Accountに提出 ※署名は入れない
4. 完了

## 投稿時

1. とりあえずパッケージのリポジトリをクローンする ※パッケージ作成をするときもからのリポジトリをクローンする
2. 書き換える
3. .SRCINFOを作る ※作れ
4. namcapで確認
5. 一回確認のためにパッケージを作っとく ※URLとかハッシュ値の書き間違いがないか確認するため
6. 作ったパッケージもnamcapで確認
7. 作ったパッケージを消す
8. コミット && 投稿 ※ブランチは`master`

注: ***† This is 備忘録 †***
228 changes: 228 additions & 0 deletions nsk-1010/brainfuck-intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
# Brainf\*\*k入門
Brainf\*\*kはそのまま脳がフ〇〇クな言語です。

めちゃめちゃ可読性は低いですがネタ言語としては最高です。

これをベースに`Ook!`とか`Nyaruko`などが作られました。

つまりネタ言語入門って訳です。

## 使う記号
Brainf\*\*kは使う記号が非常に少ないです。

本当に少ないので某W\*\*ipediaでもめっちゃ正確な書き方を得ることができます。

が、それだとこのナレッジベースの意味が全然ないので今から書いていきます。

| 記号 | 意味 | 例: C |
|---|---|---|
| `>` | ポインタのインクリメント | `*ptr++;` |
| `<` | ポインタのデクリメント | `*ptr--;` |
| `+` | ポインタの指す値のインクリメント | `(*ptr)++;` |
| `-` | ポインタの指す値のデクリメント | `(*ptr)--;` |
| `.` | ポインタの指す値を出力 | `putchar(*ptr);` |
| `.` | ポインタに入力から1バイト代入 | `*ptr=getchar();` |
| `[` | ポインタの指す値が0なら後の`]`へ(つまりループ) | `while(*ptr) {` |
| `]` | ポインタの指す値が0なら以外なら前の`[`へ(つまりループ終了) | `}` |

って感じなんですがこれだけだと実感わかないと思うので実践編に行きますか、

## 実践編
### まずは`+` `.` `>`だけで書いてみよう
実はこの3つの記号だけで書けます。
では書いてみましょう。

#### ABC
その文字のASCIIコード数だけ+を入力します。
```brainfuck
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A
.
>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B
.
>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C
.
>
++++++++++ 改行
.
```
これでも十分行けるんですがあまりにも長過ぎます。

折角Aから1つずつ`+`が増えているのにこれだと勿体ないですね。

というわけでポインタのインクリメントをやめられるところはやめてみましょう。
```brainfuck
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.
+
.
+
.
>
++++++++++
.
```
かなり短くなりました。

が、Aのところが長いです。

なので`[]`でループ処理をしてみましょう。
```brainfuck
65 = 2^6 + 1なので
>
++
[
>
++
[
>
++
[
>
++
[
>
++
[
<<<<<
++
>>>>>
-
]
<
-
]
<
-
]
<
-
]
<
-
]
<
+
.
+
.
+
.
>
++++++++++
.
```
ちなみに読みやすくするためにこうしただけであって本来は改行とインデントはなくていいです。

なんなら書かないことが多いです。

### Hello world!
ここまで来ればHello worldも余裕ですよね!?

ではやってみましょう。
```brainfuck
>
++
[
>
++
[
>
++
[
>
+++
[
<<<<
+++
>>>>
-
]
<
-
]
<
-
]
<
-
]
<
.
>
++
[
>
++
[
<<
+++++++
>>
-
]
<
-
]
<
+
.
+++++++
.
.
+++
.
>>>
++
[
>
++
[
>
++
[
>
++
[
<<<<
++
>>>>
-
]
<
-
]
<
-
]
<
-
]
<
.
<<
++++++++
.
--------
.
+++
.
------
.
--------
.
>>
+
.
<
++++++++++
.
```
行数がかなり多くなってきて長いと感じるかもしれませんが、1行で書くと...
```brainfuck
>++[>++[>++[>+++[<<<<+++>>>>-]<-]<-]<-]<.>++[>++[<<+++++++>>-]<-]<+.+++++++..+++.>>>++[>++[>++[>++[<<<<++>>>>-]<-]<-]<-]<.<<++++++++.--------.+++.------.--------.>>+.<++++++++++.
```
まだこんなに短いです。

## 最後に
こんなネタとして最高の言語、みなさんも書いてみませんか...?