fork download
  1. /* 半角の<>+-.,[]以外の文字はコメント扱いになる */
  2. /* ※つまりC言語風のコメント記号での囲みはただの雰囲気(笑) */
  3. /* ※データポインタの移動を分かりやすくするため位置のアルファベットを書きいれた */
  4.  
  5. /* データ配列 {a b c d e f g h i} */
  6.  
  7. /*
  8. a と b の値の比較 (aもbも正数が前提)
  9.  
  10. 比較の計算のためのaとbの値をcとdへコピー (cとdとeとfを計算に使う)
  11. 値コピーのための一時保持としてgを使う (aとbの値を保持するのに使う)
  12. 結果表示の文字用にhとiを使う
  13. */
  14.  
  15. /** 文字コードの設定 **/
  16.  
  17. /* a:=10 */
  18. ++++++++++
  19.  
  20. /* h:=7*a (文字コード70='F') ; i:=8*a ; a:=0 */
  21. [
  22. >b>c>d>e>f>g>h
  23. +++++++
  24. >i
  25. ++++++++
  26. <h<g<f<e<d<c<b<a
  27. -
  28. ]
  29.  
  30. /* i:=4+i (文字コード84='T') */
  31. >b>c>d>e>f>g>h>i
  32. ++++
  33.  
  34. /** aとbの値の初期化 (a<b) **/
  35.  
  36. /* a:=7 */
  37. <h<g<f<e<d<c<b<a
  38. +++++++
  39.  
  40. /* b:=9 */
  41. >b
  42. +++++++++
  43.  
  44. /** aの値をcとeへコピー **/
  45.  
  46. /* c:=a; e:=a ; g:=a ;; a:=0 */
  47. <a
  48. [
  49. >b>c
  50. +
  51. >d>e
  52. +
  53. >f>g
  54. +
  55. <f<e<d<c<b<a
  56. -
  57. ]
  58.  
  59. /** aの値を戻す **/
  60.  
  61. /* a:=g ; g:=0 */
  62. >b>c>d>e>f>g
  63. [
  64. <f<e<d<c<b<a
  65. +
  66. >b>c>d>e>f>g
  67. -
  68. ]
  69.  
  70. /** bの値をdとfへコピー **/
  71.  
  72. /* d:=b; f:=b ; g:=b ;; b:=0 */
  73. <f<e<d<c<b
  74. [
  75. >c>d
  76. +
  77. >e>f
  78. +
  79. >g
  80. +
  81. <f<e<d<c<b
  82. -
  83. ]
  84.  
  85. /** bの値を戻す **/
  86.  
  87. /* b:=g ;; g:=0 */
  88. >c>d>e>f>g
  89. [
  90. <f<e<d<c<b
  91. +
  92. >c>d>e>f>g
  93. -
  94. ]
  95.  
  96. /** 比較して表示する **/
  97.  
  98. /* d:=d-c ;; c:=1 */
  99. <f<e<d<c
  100. [
  101. >d
  102. -
  103. <c
  104. -
  105. ]
  106. +
  107.  
  108. /* d!=0(つまりa!=b)のときh(='F')が出力される ; c:=0 ; d:=0 ; e:=0 ; f:=0 */
  109. >d
  110. [
  111. >e>f>g>h
  112. .
  113. <g<f<e<d<c
  114. -
  115. >d>e /* eの値(==a)を用いてdの値をbの値に戻す */
  116. [
  117. <d
  118. +
  119. >e
  120. -
  121. ]
  122. >f /* fの値(==b)を用いてdの値を0にする */
  123. [
  124. <e<d
  125. -
  126. >e>f
  127. -
  128. ]
  129. <e<d
  130. ]
  131.  
  132. /* c!=0(つまりa==b)のときi(='T')が出力される ; c:=0 ; e:=0 ; f:=0 */
  133. <c
  134. [
  135. >d>e /* 使わなかったeとfを0に戻す */
  136. [-]
  137. >f
  138. [-]
  139. >g>h>i
  140. .
  141. <h<g<f<e<d<c
  142. [-]
  143. ]
  144.  
  145.  
  146. /* ####################### */
  147.  
  148. /* aとbの値の初期化 (a==b) */
  149.  
  150. /* b:=7 */
  151. <b
  152. --
  153.  
  154. /*** 以下はさっきと同じコード ***/
  155.  
  156. /** aの値をcとeへコピー **/
  157.  
  158. /* c:=a; e:=a ; g:=a ;; a:=0 */
  159. <a
  160. [
  161. >b>c
  162. +
  163. >d>e
  164. +
  165. >f>g
  166. +
  167. <f<e<d<c<b<a
  168. -
  169. ]
  170.  
  171. /** aの値を戻す **/
  172.  
  173. /* a:=g ; g:=0 */
  174. >b>c>d>e>f>g
  175. [
  176. <f<e<d<c<b<a
  177. +
  178. >b>c>d>e>f>g
  179. -
  180. ]
  181.  
  182. /** bの値をdとfへコピー **/
  183.  
  184. /* d:=b; f:=b ; g:=b ;; b:=0 */
  185. <f<e<d<c<b
  186. [
  187. >c>d
  188. +
  189. >e>f
  190. +
  191. >g
  192. +
  193. <f<e<d<c<b
  194. -
  195. ]
  196.  
  197. /** bの値を戻す **/
  198.  
  199. /* b:=g ;; g:=0 */
  200. >c>d>e>f>g
  201. [
  202. <f<e<d<c<b
  203. +
  204. >c>d>e>f>g
  205. -
  206. ]
  207.  
  208. /** 比較して表示する **/
  209.  
  210. /* d:=d-c ;; c:=1 */
  211. <f<e<d<c
  212. [
  213. >d
  214. -
  215. <c
  216. -
  217. ]
  218. +
  219.  
  220. /* d!=0(つまりa!=b)のときh(='F')が出力される ; c:=0 ; d:=0 ; e:=0 ; f:=0 */
  221. >d
  222. [
  223. >e>f>g>h
  224. .
  225. <g<f<e<d<c
  226. -
  227. >d>e /* eの値(==a)を用いてdの値をbの値に戻す */
  228. [
  229. <d
  230. +
  231. >e
  232. -
  233. ]
  234. >f /* fの値(==b)を用いてdの値を0にする */
  235. [
  236. <e<d
  237. -
  238. >e>f
  239. -
  240. ]
  241. <e<d
  242. ]
  243.  
  244. /* c!=0(つまりa==b)のときi(='T')が出力される ; c:=0 ; e:=0 ; f:=0 */
  245. <c
  246. [
  247. >d>e /* 使わなかったeとfを0に戻す */
  248. [-]
  249. >f
  250. [-]
  251. >g>h>i
  252. .
  253. <h<g<f<e<d<c
  254. [-]
  255. ]
  256.  
  257.  
  258.  
  259. /* ####################### */
  260.  
  261. /* aとbの値の初期化 (a>b) */
  262.  
  263. /* b:=5 */
  264. <b
  265. --
  266.  
  267. /*** 以下はさっきと同じコード ***/
  268.  
  269.  
  270. /** aの値をcとeへコピー **/
  271.  
  272. /* c:=a; e:=a ; g:=a ;; a:=0 */
  273. <a
  274. [
  275. >b>c
  276. +
  277. >d>e
  278. +
  279. >f>g
  280. +
  281. <f<e<d<c<b<a
  282. -
  283. ]
  284.  
  285. /** aの値を戻す **/
  286.  
  287. /* a:=g ; g:=0 */
  288. >b>c>d>e>f>g
  289. [
  290. <f<e<d<c<b<a
  291. +
  292. >b>c>d>e>f>g
  293. -
  294. ]
  295.  
  296. /** bの値をdとfへコピー **/
  297.  
  298. /* d:=b; f:=b ; g:=b ;; b:=0 */
  299. <f<e<d<c<b
  300. [
  301. >c>d
  302. +
  303. >e>f
  304. +
  305. >g
  306. +
  307. <f<e<d<c<b
  308. -
  309. ]
  310.  
  311. /** bの値を戻す **/
  312.  
  313. /* b:=g ;; g:=0 */
  314. >c>d>e>f>g
  315. [
  316. <f<e<d<c<b
  317. +
  318. >c>d>e>f>g
  319. -
  320. ]
  321.  
  322. /** 比較して表示する **/
  323.  
  324. /* d:=d-c ;; c:=1 */
  325. <f<e<d<c
  326. [
  327. >d
  328. -
  329. <c
  330. -
  331. ]
  332. +
  333.  
  334. /* d!=0(つまりa!=b)のときh(='F')が出力される ; c:=0 ; d:=0 ; e:=0 ; f:=0 */
  335. >d
  336. [
  337. >e>f>g>h
  338. .
  339. <g<f<e<d<c
  340. -
  341. >d>e /* eの値(==a)を用いてdの値をbの値に戻す */
  342. [
  343. <d
  344. +
  345. >e
  346. -
  347. ]
  348. >f /* fの値(==b)を用いてdの値を0にする */
  349. [
  350. <e<d
  351. -
  352. >e>f
  353. -
  354. ]
  355. <e<d
  356. ]
  357.  
  358. /* c!=0(つまりa==b)のときi(='T')が出力される ; c:=0 ; e:=0 ; f:=0 */
  359. <c
  360. [
  361. >d>e /* 使わなかったeとfを0に戻す */
  362. [-]
  363. >f
  364. [-]
  365. >g>h>i
  366. .
  367. <h<g<f<e<d<c
  368. [-]
  369. ]
  370.  
Success #stdin #stdout 0.02s 1660KB
stdin
Standard input is empty
stdout
FTF