「Piet」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | '''Piet''' | + | '''Piet'''とは[[プログラミング言語]]の一つであり、 |
+ | 「[[ソースコード]]」が[[テキストファイル]]ではなく[[画像ファイル]]であることが特徴である。 | ||
==概要== | ==概要== | ||
− | * | + | * 画像の左上の画素から右側に[[実行]]される。 |
− | * | + | * 「ソースコード」にはあらかじめ決められた20色を使用する。 |
* 白黒以外の色から別の白黒以外の色に実行位置が移るとき、その色の組み合わせに対応する[[命令]]が実行される。 | * 白黒以外の色から別の白黒以外の色に実行位置が移るとき、その色の組み合わせに対応する[[命令]]が実行される。 | ||
* 実行位置の次の色への移動は、一定の法則に従って今の色が四方向に連続している領域の「隅」から行われる。 | * 実行位置の次の色への移動は、一定の法則に従って今の色が四方向に連続している領域の「隅」から行われる。 | ||
9行目: | 10行目: | ||
* 画像の外側や黒色の画素には移動できない。 | * 画像の外側や黒色の画素には移動できない。 | ||
* 前に進めなくなったら基本的に時計回りに曲がろうとし、何回曲がっても次の領域に進めなくなったら終了する。 | * 前に進めなくなったら基本的に時計回りに曲がろうとし、何回曲がっても次の領域に進めなくなったら終了する。 | ||
− | * | + | * データの保存や計算はすべて[[スタック]]上で行う。 |
− | * | + | * スタックに数値をプッシュする命令を使用するとき、プッシュされる値として命令の実行直前にいた領域の面積が使用される。 |
ここで述べたのはあくまで概要である。正式な仕様は[http://www.dangermouse.net/esoteric/piet.html 公式ページ]で確認してほしい。 | ここで述べたのはあくまで概要である。正式な仕様は[http://www.dangermouse.net/esoteric/piet.html 公式ページ]で確認してほしい。 | ||
18行目: | 19行目: | ||
右の画像は、与えられた整数が[[コラッツの問題]]の計算で1になるまでのステップ数を計算するPietプログラムである。 | 右の画像は、与えられた整数が[[コラッツの問題]]の計算で1になるまでのステップ数を計算するPietプログラムである。 | ||
− | + | このプログラムを起動すると、整数の入力を求められる。 | |
− | + | 標準入力から整数を入力すると、その整数がコラッツの問題の計算で1になるまでのステップ数が出力され、 | |
− | + | その後改行が出力される。 | |
− | |||
ただし、計算の途中で[[オーバーフロー]]を検知した場合は-1が出力される。 | ただし、計算の途中で[[オーバーフロー]]を検知した場合は-1が出力される。 | ||
==テクニック== | ==テクニック== | ||
ここで紹介するテクニックは、主にPiet[[初心者]]を対象としたものです。 | ここで紹介するテクニックは、主にPiet[[初心者]]を対象としたものです。 | ||
− | + | 中級者以降は自分で考え、芸術的なコードの作成を目指す方がいいでしょう。 | |
(この記述は中級者以降がここで紹介するテクニックを利用することを禁止するものではありません) | (この記述は中級者以降がここで紹介するテクニックを利用することを禁止するものではありません) | ||
39行目: | 39行目: | ||
* そもそも領域の幅を1ピクセルにし、「どっちの隅」と考える必要をなくす。 | * そもそも領域の幅を1ピクセルにし、「どっちの隅」と考える必要をなくす。 | ||
− | + | また、プログラムの実行とは関係ない領域を黒で埋めておくと、流れがわかりやすくなるでしょう。 | |
===分岐は2方向にする=== | ===分岐は2方向にする=== | ||
72行目: | 72行目: | ||
* [[画像]] | * [[画像]] | ||
* [[スタック]] | * [[スタック]] | ||
− | |||
− | |||
− | |||
− | |||
− |