Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Deobfuscation of http://www.ioccc.org/1988/westley.c

By: a guest on Jan 19th, 2011  |  syntax: C  |  size: 15.71 KB  |  views: 93  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. // 1. Starting code.
  2.  
  3. #define _ -F<00||--F-OO--;
  4. int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
  5. {
  6.             _-_-_-_
  7.        _-_-_-_-_-_-_-_-_
  8.     _-_-_-_-_-_-_-_-_-_-_-_
  9.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  10.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  11.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  12. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  13. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  14. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  15. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  16.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  17.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  18.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  19.     _-_-_-_-_-_-_-_-_-_-_-_
  20.         _-_-_-_-_-_-_-_
  21.             _-_-_-_
  22. }
  23.  
  24. // 2. Add indentations and whitespace.
  25.  
  26. #define _ -F<00||--F-OO--;
  27.  
  28. int F=00, OO=00;
  29.  
  30. main()
  31. {
  32.         F_OO();
  33.         printf("%1.3f\n",4.*-F/OO/OO);
  34. }
  35.  
  36. F_OO()
  37. {
  38.             _-_-_-_
  39.        _-_-_-_-_-_-_-_-_
  40.     _-_-_-_-_-_-_-_-_-_-_-_
  41.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  42.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  43.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  44. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  45. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  46. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  47. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  48.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  49.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  50.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  51.     _-_-_-_-_-_-_-_-_-_-_-_
  52.         _-_-_-_-_-_-_-_
  53.             _-_-_-_
  54. }
  55.  
  56. /* 3. Convert numbers from octal (indicated with a leading 0) to decimal, and simplify equation in printf statement. Thus, F/OO/OO = (F/OO)/OO = F/(OO * OO). */
  57.  
  58. #define _ -F<0||--F-OO--;
  59.  
  60. int F=0, OO=0;
  61.  
  62. main()
  63. {
  64.         F_OO();
  65.         printf("%1.3f\n",4.*-F/(OO*OO));
  66. }
  67.  
  68. F_OO()
  69. {
  70.             _-_-_-_
  71.        _-_-_-_-_-_-_-_-_
  72.     _-_-_-_-_-_-_-_-_-_-_-_
  73.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  74.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  75.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  76. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  77. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  78. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  79. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  80.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  81.  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  82.   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  83.     _-_-_-_-_-_-_-_-_-_-_-_
  84.         _-_-_-_-_-_-_-_
  85.             _-_-_-_
  86. }
  87.  
  88. /*4. The #define in the first line means "Replace every lone '_' with '-F<0||--F-OO--;' before compiling." This is where things get messy. This means that the text '-_' goes to '-F<0||--F-OO--;' Note that '--' before a variable means "decrement this variable by 1 before executing whatever statement it's in;" after a variable it means "decrement this variable by 1 after executing whatever statement it's in." Adjust in whitespace and linebreaks to make it       readable, too.*/
  89.  
  90. int F=0, OO=0;
  91.  
  92. main()
  93. {
  94.         F_OO();
  95.         printf("%1.3f\n",4.*-F/(OO*OO));
  96. }
  97.  
  98. F_OO()
  99. {
  100. -F<0||--F-OO--;
  101. --F<0||--F-OO--;
  102. --F<0||--F-OO--;
  103. --F<0||--F-OO--;
  104. -F<0||--F-OO--;
  105. --F<0||--F-OO--;
  106. --F<0||--F-OO--;
  107. --F<0||--F-OO--;
  108. --F<0||--F-OO--;
  109. --F<0||--F-OO--;
  110. --F<0||--F-OO--;
  111. --F<0||--F-OO--;
  112. --F<0||--F-OO--;
  113. -F<0||--F-OO--;
  114. --F<0||--F-OO--;
  115. --F<0||--F-OO--;
  116. --F<0||--F-OO--;
  117. --F<0||--F-OO--;
  118. --F<0||--F-OO--;
  119. --F<0||--F-OO--;
  120. --F<0||--F-OO--;
  121. --F<0||--F-OO--;
  122. --F<0||--F-OO--;
  123. --F<0||--F-OO--;
  124. --F<0||--F-OO--;
  125. -F<0||--F-OO--;
  126. --F<0||--F-OO--;
  127. --F<0||--F-OO--;
  128. --F<0||--F-OO--;
  129. --F<0||--F-OO--;
  130. --F<0||--F-OO--;
  131. --F<0||--F-OO--;
  132. --F<0||--F-OO--;
  133. --F<0||--F-OO--;
  134. --F<0||--F-OO--;
  135. --F<0||--F-OO--;
  136. --F<0||--F-OO--;
  137. --F<0||--F-OO--;
  138. --F<0||--F-OO--;
  139.  -F<0||--F-OO--;
  140. --F<0||--F-OO--;
  141. --F<0||--F-OO--;
  142. --F<0||--F-OO--;
  143. --F<0||--F-OO--;
  144. --F<0||--F-OO--;
  145. --F<0||--F-OO--;
  146. --F<0||--F-OO--;
  147. --F<0||--F-OO--;
  148. --F<0||--F-OO--;
  149. --F<0||--F-OO--;
  150. --F<0||--F-OO--;
  151. --F<0||--F-OO--;
  152. --F<0||--F-OO--;
  153. --F<0||--F-OO--;
  154.  -F<0||--F-OO--;
  155. --F<0||--F-OO--;
  156. --F<0||--F-OO--;
  157. --F<0||--F-OO--;
  158. --F<0||--F-OO--;
  159. --F<0||--F-OO--;
  160. --F<0||--F-OO--;
  161. --F<0||--F-OO--;
  162. --F<0||--F-OO--;
  163. --F<0||--F-OO--;
  164. --F<0||--F-OO--;
  165. --F<0||--F-OO--;
  166. --F<0||--F-OO--;
  167. --F<0||--F-OO--;
  168. --F<0||--F-OO--;
  169. -F<0||--F-OO--;
  170. --F<0||--F-OO--;
  171. --F<0||--F-OO--;
  172. --F<0||--F-OO--;
  173. --F<0||--F-OO--;
  174. --F<0||--F-OO--;
  175. --F<0||--F-OO--;
  176. --F<0||--F-OO--;
  177. --F<0||--F-OO--;
  178. --F<0||--F-OO--;
  179. --F<0||--F-OO--;
  180. --F<0||--F-OO--;
  181. --F<0||--F-OO--;
  182. --F<0||--F-OO--;
  183. --F<0||--F-OO--;
  184. --F<0||--F-OO--;
  185. -F<0||--F-OO--;
  186. --F<0||--F-OO--;
  187. --F<0||--F-OO--;
  188. --F<0||--F-OO--;
  189. --F<0||--F-OO--;
  190. --F<0||--F-OO--;
  191. --F<0||--F-OO--;
  192. --F<0||--F-OO--;
  193. --F<0||--F-OO--;
  194. --F<0||--F-OO--;
  195. --F<0||--F-OO--;
  196. --F<0||--F-OO--;
  197. --F<0||--F-OO--;
  198. --F<0||--F-OO--;
  199. --F<0||--F-OO--;
  200. --F<0||--F-OO--;
  201. -F<0||--F-OO--;
  202. --F<0||--F-OO--;
  203. --F<0||--F-OO--;
  204. --F<0||--F-OO--;
  205. --F<0||--F-OO--;
  206. --F<0||--F-OO--;
  207. --F<0||--F-OO--;
  208. --F<0||--F-OO--;
  209. --F<0||--F-OO--;
  210. --F<0||--F-OO--;
  211. --F<0||--F-OO--;
  212. --F<0||--F-OO--;
  213. --F<0||--F-OO--;
  214. --F<0||--F-OO--;
  215. --F<0||--F-OO--;
  216. --F<0||--F-OO--;
  217. -F<0||--F-OO--;
  218. --F<0||--F-OO--;
  219. --F<0||--F-OO--;
  220. --F<0||--F-OO--;
  221. --F<0||--F-OO--;
  222. --F<0||--F-OO--;
  223. --F<0||--F-OO--;
  224. --F<0||--F-OO--;
  225. --F<0||--F-OO--;
  226. --F<0||--F-OO--;
  227. --F<0||--F-OO--;
  228. --F<0||--F-OO--;
  229. --F<0||--F-OO--;
  230. --F<0||--F-OO--;
  231. --F<0||--F-OO--;
  232. --F<0||--F-OO--;
  233.  -F<0||--F-OO--;
  234. --F<0||--F-OO--;
  235. --F<0||--F-OO--;
  236. --F<0||--F-OO--;
  237. --F<0||--F-OO--;
  238. --F<0||--F-OO--;
  239. --F<0||--F-OO--;
  240. --F<0||--F-OO--;
  241. --F<0||--F-OO--;
  242. --F<0||--F-OO--;
  243. --F<0||--F-OO--;
  244. --F<0||--F-OO--;
  245. --F<0||--F-OO--;
  246. --F<0||--F-OO--;
  247. --F<0||--F-OO--;
  248.  -F<0||--F-OO--;
  249. --F<0||--F-OO--;
  250. --F<0||--F-OO--;
  251. --F<0||--F-OO--;
  252. --F<0||--F-OO--;
  253. --F<0||--F-OO--;
  254. --F<0||--F-OO--;
  255. --F<0||--F-OO--;
  256. --F<0||--F-OO--;
  257. --F<0||--F-OO--;
  258. --F<0||--F-OO--;
  259. --F<0||--F-OO--;
  260. --F<0||--F-OO--;
  261. --F<0||--F-OO--;
  262. --F<0||--F-OO--;
  263. -F<0||--F-OO--;
  264. --F<0||--F-OO--;
  265. --F<0||--F-OO--;
  266. --F<0||--F-OO--;
  267. --F<0||--F-OO--;
  268. --F<0||--F-OO--;
  269. --F<0||--F-OO--;
  270. --F<0||--F-OO--;
  271. --F<0||--F-OO--;
  272. --F<0||--F-OO--;
  273. --F<0||--F-OO--;
  274. --F<0||--F-OO--;
  275. --F<0||--F-OO--;
  276. --F<0||--F-OO--;
  277. -F<0||--F-OO--;
  278. --F<0||--F-OO--;
  279. --F<0||--F-OO--;
  280. --F<0||--F-OO--;
  281. --F<0||--F-OO--;
  282. --F<0||--F-OO--;
  283. --F<0||--F-OO--;
  284. --F<0||--F-OO--;
  285. --F<0||--F-OO--;
  286. --F<0||--F-OO--;
  287. --F<0||--F-OO--;
  288. --F<0||--F-OO--;
  289. -F<0||--F-OO--;
  290. --F<0||--F-OO--;
  291. --F<0||--F-OO--;
  292. --F<0||--F-OO--;
  293. --F<0||--F-OO--;
  294. --F<0||--F-OO--;
  295. --F<0||--F-OO--;
  296. --F<0||--F-OO--;
  297. -F<0||--F-OO--;
  298. --F<0||--F-OO--;
  299. --F<0||--F-OO--;
  300. --F<0||--F-OO--;
  301. }
  302.  
  303. /*5. Evaluate first statement in F_OO(), "-F<0||--F-OO--;". '||' is the 'or' logical operator. It is used as follows: 'X||Y', where X and Y are the conditions being tested. If either X or Y is true, this operator returns 1, otherwise it returns 0. Furthermore, if X is true, the operator short-circuits--that is, it doesn't bother checking Y, since it already knows X is true, satisfying the test. Since F begins at 0, the first condition being tested fails. The computer then executes the second half of the or statement, which decrements both F and OO by 1. Now, F == OO == -1. Note that whether the or statement is true or false doesn't matter; the only thing that matters is how F and OO are changed. We can now substitute this result for the first line of code in F_OO():*/
  304.  
  305. int F=0, OO=0;
  306.  
  307. main()
  308. {
  309.         F_OO();
  310.         printf("%1.3f\n",4.*-F/(OO*OO));
  311. }
  312.  
  313. F_OO()
  314. {
  315. F = -1;
  316. OO = -1;
  317. --F<0||--F-OO--;
  318. --F<0||--F-OO--;
  319. --F<0||--F-OO--;
  320. -F<0||--F-OO--;
  321. --F<0||--F-OO--;
  322. --F<0||--F-OO--;
  323. --F<0||--F-OO--;
  324. --F<0||--F-OO--;
  325. --F<0||--F-OO--;
  326. --F<0||--F-OO--;
  327. --F<0||--F-OO--;
  328. --F<0||--F-OO--;
  329. -F<0||--F-OO--;
  330. --F<0||--F-OO--;
  331. --F<0||--F-OO--;
  332. --F<0||--F-OO--;
  333. --F<0||--F-OO--;
  334. --F<0||--F-OO--;
  335. --F<0||--F-OO--;
  336. --F<0||--F-OO--;
  337. --F<0||--F-OO--;
  338. --F<0||--F-OO--;
  339. --F<0||--F-OO--;
  340. --F<0||--F-OO--;
  341. -F<0||--F-OO--;
  342. --F<0||--F-OO--;
  343. --F<0||--F-OO--;
  344. --F<0||--F-OO--;
  345. --F<0||--F-OO--;
  346. --F<0||--F-OO--;
  347. --F<0||--F-OO--;
  348. --F<0||--F-OO--;
  349. --F<0||--F-OO--;
  350. --F<0||--F-OO--;
  351. --F<0||--F-OO--;
  352. --F<0||--F-OO--;
  353. --F<0||--F-OO--;
  354. --F<0||--F-OO--;
  355.  -F<0||--F-OO--;
  356. --F<0||--F-OO--;
  357. --F<0||--F-OO--;
  358. --F<0||--F-OO--;
  359. --F<0||--F-OO--;
  360. --F<0||--F-OO--;
  361. --F<0||--F-OO--;
  362. --F<0||--F-OO--;
  363. --F<0||--F-OO--;
  364. --F<0||--F-OO--;
  365. --F<0||--F-OO--;
  366. --F<0||--F-OO--;
  367. --F<0||--F-OO--;
  368. --F<0||--F-OO--;
  369. --F<0||--F-OO--;
  370.  -F<0||--F-OO--;
  371. --F<0||--F-OO--;
  372. --F<0||--F-OO--;
  373. --F<0||--F-OO--;
  374. --F<0||--F-OO--;
  375. --F<0||--F-OO--;
  376. --F<0||--F-OO--;
  377. --F<0||--F-OO--;
  378. --F<0||--F-OO--;
  379. --F<0||--F-OO--;
  380. --F<0||--F-OO--;
  381. --F<0||--F-OO--;
  382. --F<0||--F-OO--;
  383. --F<0||--F-OO--;
  384. --F<0||--F-OO--;
  385. -F<0||--F-OO--;
  386. --F<0||--F-OO--;
  387. --F<0||--F-OO--;
  388. --F<0||--F-OO--;
  389. --F<0||--F-OO--;
  390. --F<0||--F-OO--;
  391. --F<0||--F-OO--;
  392. --F<0||--F-OO--;
  393. --F<0||--F-OO--;
  394. --F<0||--F-OO--;
  395. --F<0||--F-OO--;
  396. --F<0||--F-OO--;
  397. --F<0||--F-OO--;
  398. --F<0||--F-OO--;
  399. --F<0||--F-OO--;
  400. --F<0||--F-OO--;
  401. -F<0||--F-OO--;
  402. --F<0||--F-OO--;
  403. --F<0||--F-OO--;
  404. --F<0||--F-OO--;
  405. --F<0||--F-OO--;
  406. --F<0||--F-OO--;
  407. --F<0||--F-OO--;
  408. --F<0||--F-OO--;
  409. --F<0||--F-OO--;
  410. --F<0||--F-OO--;
  411. --F<0||--F-OO--;
  412. --F<0||--F-OO--;
  413. --F<0||--F-OO--;
  414. --F<0||--F-OO--;
  415. --F<0||--F-OO--;
  416. --F<0||--F-OO--;
  417. -F<0||--F-OO--;
  418. --F<0||--F-OO--;
  419. --F<0||--F-OO--;
  420. --F<0||--F-OO--;
  421. --F<0||--F-OO--;
  422. --F<0||--F-OO--;
  423. --F<0||--F-OO--;
  424. --F<0||--F-OO--;
  425. --F<0||--F-OO--;
  426. --F<0||--F-OO--;
  427. --F<0||--F-OO--;
  428. --F<0||--F-OO--;
  429. --F<0||--F-OO--;
  430. --F<0||--F-OO--;
  431. --F<0||--F-OO--;
  432. --F<0||--F-OO--;
  433. -F<0||--F-OO--;
  434. --F<0||--F-OO--;
  435. --F<0||--F-OO--;
  436. --F<0||--F-OO--;
  437. --F<0||--F-OO--;
  438. --F<0||--F-OO--;
  439. --F<0||--F-OO--;
  440. --F<0||--F-OO--;
  441. --F<0||--F-OO--;
  442. --F<0||--F-OO--;
  443. --F<0||--F-OO--;
  444. --F<0||--F-OO--;
  445. --F<0||--F-OO--;
  446. --F<0||--F-OO--;
  447. --F<0||--F-OO--;
  448. --F<0||--F-OO--;
  449.  -F<0||--F-OO--;
  450. --F<0||--F-OO--;
  451. --F<0||--F-OO--;
  452. --F<0||--F-OO--;
  453. --F<0||--F-OO--;
  454. --F<0||--F-OO--;
  455. --F<0||--F-OO--;
  456. --F<0||--F-OO--;
  457. --F<0||--F-OO--;
  458. --F<0||--F-OO--;
  459. --F<0||--F-OO--;
  460. --F<0||--F-OO--;
  461. --F<0||--F-OO--;
  462. --F<0||--F-OO--;
  463. --F<0||--F-OO--;
  464.  -F<0||--F-OO--;
  465. --F<0||--F-OO--;
  466. --F<0||--F-OO--;
  467. --F<0||--F-OO--;
  468. --F<0||--F-OO--;
  469. --F<0||--F-OO--;
  470. --F<0||--F-OO--;
  471. --F<0||--F-OO--;
  472. --F<0||--F-OO--;
  473. --F<0||--F-OO--;
  474. --F<0||--F-OO--;
  475. --F<0||--F-OO--;
  476. --F<0||--F-OO--;
  477. --F<0||--F-OO--;
  478. --F<0||--F-OO--;
  479. -F<0||--F-OO--;
  480. --F<0||--F-OO--;
  481. --F<0||--F-OO--;
  482. --F<0||--F-OO--;
  483. --F<0||--F-OO--;
  484. --F<0||--F-OO--;
  485. --F<0||--F-OO--;
  486. --F<0||--F-OO--;
  487. --F<0||--F-OO--;
  488. --F<0||--F-OO--;
  489. --F<0||--F-OO--;
  490. --F<0||--F-OO--;
  491. --F<0||--F-OO--;
  492. --F<0||--F-OO--;
  493. -F<0||--F-OO--;
  494. --F<0||--F-OO--;
  495. --F<0||--F-OO--;
  496. --F<0||--F-OO--;
  497. --F<0||--F-OO--;
  498. --F<0||--F-OO--;
  499. --F<0||--F-OO--;
  500. --F<0||--F-OO--;
  501. --F<0||--F-OO--;
  502. --F<0||--F-OO--;
  503. --F<0||--F-OO--;
  504. --F<0||--F-OO--;
  505. -F<0||--F-OO--;
  506. --F<0||--F-OO--;
  507. --F<0||--F-OO--;
  508. --F<0||--F-OO--;
  509. --F<0||--F-OO--;
  510. --F<0||--F-OO--;
  511. --F<0||--F-OO--;
  512. --F<0||--F-OO--;
  513. -F<0||--F-OO--;
  514. --F<0||--F-OO--;
  515. --F<0||--F-OO--;
  516. --F<0||--F-OO--;
  517. }
  518.  
  519. /*6. Now we can evaluate every statement remaining in F_OO(). There are only two kinds. The first is "--F<0||--F-OO--;" We can read the first half of this statement, which, as we will see, is the only one that matters, as "decrement F by one, and then check if the result is less than 0". F is already less than 0, and it is never being increased throughout the entire function, so the first half of this statement is always true, meaning we can ignore the second half, "--F-OO--;" Furthermore, the result of the || operation isn't actually stored anywhere; it's just thrown away. The only thing that changes in the program's state is the value of F, which has now been decremented by 1. This means that we can replace ALL of these statements with the statement "--F;", giving us the following code:*/
  520.  
  521. int F=0, OO=0;
  522.  
  523. main()
  524. {
  525.         F_OO();
  526.         printf("%1.3f\n",4.*-F/(OO*OO));
  527. }
  528.  
  529. F_OO()
  530. {
  531. F = -1;
  532. OO = -1;
  533. --F;
  534. --F;
  535. --F;
  536. -F<0||--F-OO--;
  537. --F;
  538. --F;
  539. --F;
  540. --F;
  541. --F;
  542. --F;
  543. --F;
  544. --F;
  545. -F<0||--F-OO--;
  546. --F;
  547. --F;
  548. --F;
  549. --F;
  550. --F;
  551. --F;
  552. --F;
  553. --F;
  554. --F;
  555. --F;
  556. --F;
  557. -F<0||--F-OO--;
  558. --F;
  559. --F;
  560. --F;
  561. --F;
  562. --F;
  563. --F;
  564. --F;
  565. --F;
  566. --F;
  567. --F;
  568. --F;
  569. --F;
  570. --F;
  571. -F<0||--F-OO--;
  572. --F;
  573. --F;
  574. --F;
  575. --F;
  576. --F;
  577. --F;
  578. --F;
  579. --F;
  580. --F;
  581. --F;
  582. --F;
  583. --F;
  584. --F;
  585. --F;
  586. -F<0||--F-OO--;
  587. --F;
  588. --F;
  589. --F;
  590. --F;
  591. --F;
  592. --F;
  593. --F;
  594. --F;
  595. --F;
  596. --F;
  597. --F;
  598. --F;
  599. --F;
  600. --F;
  601. -F<0||--F-OO--;
  602. --F;
  603. --F;
  604. --F;
  605. --F;
  606. --F;
  607. --F;
  608. --F;
  609. --F;
  610. --F;
  611. --F;
  612. --F;
  613. --F;
  614. --F;
  615. --F;
  616. --F;
  617. -F<0||--F-OO--;
  618. --F;
  619. --F;
  620. --F;
  621. --F;
  622. --F;
  623. --F;
  624. --F;
  625. --F;
  626. --F;
  627. --F;
  628. --F;
  629. --F;
  630. --F;
  631. --F;
  632. --F;
  633. -F<0||--F-OO--;
  634. --F;
  635. --F;
  636. --F;
  637. --F;
  638. --F;
  639. --F;
  640. --F;
  641. --F;
  642. --F;
  643. --F;
  644. --F;
  645. --F;
  646. --F;
  647. --F;
  648. --F;
  649. -F<0||--F-OO--;
  650. --F;
  651. --F;
  652. --F;
  653. --F;
  654. --F;
  655. --F;
  656. --F;
  657. --F;
  658. --F;
  659. --F;
  660. --F;
  661. --F;
  662. --F;
  663. --F;
  664. --F;
  665. -F<0||--F-OO--;
  666. --F;
  667. --F;
  668. --F;
  669. --F;
  670. --F;
  671. --F;
  672. --F;
  673. --F;
  674. --F;
  675. --F;
  676. --F;
  677. --F;
  678. --F;
  679. --F;
  680. -F<0||--F-OO--;
  681. --F;
  682. --F;
  683. --F;
  684. --F;
  685. --F;
  686. --F;
  687. --F;
  688. --F;
  689. --F;
  690. --F;
  691. --F;
  692. --F;
  693. --F;
  694. --F;
  695. -F<0||--F-OO--;
  696. --F;
  697. --F;
  698. --F;
  699. --F;
  700. --F;
  701. --F;
  702. --F;
  703. --F;
  704. --F;
  705. --F;
  706. --F;
  707. --F;
  708. --F;
  709. -F<0||--F-OO--;
  710. --F;
  711. --F;
  712. --F;
  713. --F;
  714. --F;
  715. --F;
  716. --F;
  717. --F;
  718. --F;
  719. --F;
  720. --F;
  721. -F<0||--F-OO--;
  722. --F;
  723. --F;
  724. --F;
  725. --F;
  726. --F;
  727. --F;
  728. --F;
  729. -F<0||--F-OO--;
  730. --F;
  731. --F;
  732. --F;
  733. }
  734.  
  735. /*7. We now evaluate and replace the remaining unsimplified statements in F_OO(), all of which take the form "-F<0||--F-OO--;" Since F is always negative, -F is never less than 0, so the first half of the or statement fails. The computer then evaluates the second half, "--F-OO--". Translated, this means "Decrement F by one, return F - OO, and then decrement OO by one." Since F - OO isn't actually being stored anywhere, we can simplify the statement still further to "Decrement F and OO by one," or "--F; OO--;"*/
  736.  
  737. int F=0, OO=0;
  738.  
  739. main()
  740. {
  741.         F_OO();
  742.         printf("%1.3f\n",4.*-F/(OO*OO));
  743. }
  744.  
  745. F_OO()
  746. {
  747. F = -1;
  748. OO = -1;
  749. --F;
  750. --F;
  751. --F;
  752. --F; OO--;
  753. --F;
  754. --F;
  755. --F;
  756. --F;
  757. --F;
  758. --F;
  759. --F;
  760. --F;
  761. --F; OO--;
  762. --F;
  763. --F;
  764. --F;
  765. --F;
  766. --F;
  767. --F;
  768. --F;
  769. --F;
  770. --F;
  771. --F;
  772. --F;
  773. --F; OO--;
  774. --F;
  775. --F;
  776. --F;
  777. --F;
  778. --F;
  779. --F;
  780. --F;
  781. --F;
  782. --F;
  783. --F;
  784. --F;
  785. --F;
  786. --F;
  787. --F; OO--;
  788. --F;
  789. --F;
  790. --F;
  791. --F;
  792. --F;
  793. --F;
  794. --F;
  795. --F;
  796. --F;
  797. --F;
  798. --F;
  799. --F;
  800. --F;
  801. --F;
  802. --F; OO--;
  803. --F;
  804. --F;
  805. --F;
  806. --F;
  807. --F;
  808. --F;
  809. --F;
  810. --F;
  811. --F;
  812. --F;
  813. --F;
  814. --F;
  815. --F;
  816. --F;
  817. --F; OO--;
  818. --F;
  819. --F;
  820. --F;
  821. --F;
  822. --F;
  823. --F;
  824. --F;
  825. --F;
  826. --F;
  827. --F;
  828. --F;
  829. --F;
  830. --F;
  831. --F;
  832. --F;
  833. --F; OO--;
  834. --F;
  835. --F;
  836. --F;
  837. --F;
  838. --F;
  839. --F;
  840. --F;
  841. --F;
  842. --F;
  843. --F;
  844. --F;
  845. --F;
  846. --F;
  847. --F;
  848. --F;
  849. --F; OO--;
  850. --F;
  851. --F;
  852. --F;
  853. --F;
  854. --F;
  855. --F;
  856. --F;
  857. --F;
  858. --F;
  859. --F;
  860. --F;
  861. --F;
  862. --F;
  863. --F;
  864. --F;
  865. --F; OO--;
  866. --F;
  867. --F;
  868. --F;
  869. --F;
  870. --F;
  871. --F;
  872. --F;
  873. --F;
  874. --F;
  875. --F;
  876. --F;
  877. --F;
  878. --F;
  879. --F;
  880. --F;
  881. --F; OO--;
  882. --F;
  883. --F;
  884. --F;
  885. --F;
  886. --F;
  887. --F;
  888. --F;
  889. --F;
  890. --F;
  891. --F;
  892. --F;
  893. --F;
  894. --F;
  895. --F;
  896. --F; OO--;
  897. --F;
  898. --F;
  899. --F;
  900. --F;
  901. --F;
  902. --F;
  903. --F;
  904. --F;
  905. --F;
  906. --F;
  907. --F;
  908. --F;
  909. --F;
  910. --F;
  911. --F; OO--;
  912. --F;
  913. --F;
  914. --F;
  915. --F;
  916. --F;
  917. --F;
  918. --F;
  919. --F;
  920. --F;
  921. --F;
  922. --F;
  923. --F;
  924. --F;
  925. --F; OO--;
  926. --F;
  927. --F;
  928. --F;
  929. --F;
  930. --F;
  931. --F;
  932. --F;
  933. --F;
  934. --F;
  935. --F;
  936. --F;
  937. --F; OO--;
  938. --F;
  939. --F;
  940. --F;
  941. --F;
  942. --F;
  943. --F;
  944. --F;
  945. --F; OO--;
  946. --F;
  947. --F;
  948. --F;
  949. }
  950.  
  951. /*8. Execute all the decrements. Or trust me when I tell you that when all's said and done, F = -201 and OO = -16:*/
  952.  
  953. main()
  954. {
  955.         int F=-201, OO=-16;
  956.         printf("%1.3f\n",4.*-F/(OO*OO));
  957. }
  958.  
  959. /*9. Execute the math in the printf statement. 4. means "Treat this as a floating point number instead of an integer," which is important. When we do the arithmetic, 4 * -(-201)/(-16 * -16) = 804/256 = 3.140625. Substituting:*/
  960.  
  961. main()
  962. {
  963.         printf("%1.3f\n", 3.140625);
  964. }
  965.  
  966. /*10. Execute the printf statement itself. The "%1.3f" means "Print the number after the comma, rounded to three decimal points precision." 3.140625 rounds up to 3.141: the first four digits of pi. This number is printed, and the   program terminates:*/
  967.  
  968. main()
  969. {
  970.         printf("3.141");
  971. }
  972.  
  973. // Anticlimactic, isn't it?
clone this paste RAW Paste Data