1 1.1 alnsn ########################## 2 1.1 alnsn ### 3 1.1 alnsn ### Severely updated version! 4 1.1 alnsn ### (now says "1 bottle" and 5 1.1 alnsn ### contains no extra "0" verse) 6 1.1 alnsn ### 7 1.1 alnsn ########################## 8 1.1 alnsn ### 99 Bottles of Beer ### 9 1.1 alnsn ### coded in Brainfuck ### 10 1.1 alnsn ### with explanations ### 11 1.1 alnsn ########################## 12 1.1 alnsn # 13 1.1 alnsn # This Bottles of Beer program 14 1.1 alnsn # was written by Andrew Paczkowski 15 1.1 alnsn # Coder Alias: thepacz 16 1.1 alnsn # three_halves_plus_one (at] yahoo.com 17 1.1 alnsn ##### 18 1.1 alnsn 19 1.1 alnsn > 0 in the zeroth cell 20 1.1 alnsn +++++++>++++++++++[<+++++>-] 57 in the first cell or "9" 21 1.1 alnsn +++++++>++++++++++[<+++++>-] 57 in second cell or "9" 22 1.1 alnsn ++++++++++ 10 in third cell 23 1.1 alnsn >+++++++++ 9 in fourth cell 24 1.1 alnsn 25 1.1 alnsn ########################################## 26 1.1 alnsn ### create ASCII chars in higher cells ### 27 1.1 alnsn ########################################## 28 1.1 alnsn 29 1.1 alnsn >>++++++++[<++++>-] " " 30 1.1 alnsn >++++++++++++++[<+++++++>-] b 31 1.1 alnsn +>+++++++++++[<++++++++++>-] o 32 1.1 alnsn ++>+++++++++++++++++++[<++++++>-] t 33 1.1 alnsn ++>+++++++++++++++++++[<++++++>-] t 34 1.1 alnsn >++++++++++++[<+++++++++>-] l 35 1.1 alnsn +>++++++++++[<++++++++++>-] e 36 1.1 alnsn +>+++++++++++++++++++[<++++++>-] s 37 1.1 alnsn >++++++++[<++++>-] " " 38 1.1 alnsn +>+++++++++++[<++++++++++>-] o 39 1.1 alnsn ++>++++++++++[<++++++++++>-] f 40 1.1 alnsn >++++++++[<++++>-] " " 41 1.1 alnsn >++++++++++++++[<+++++++>-] b 42 1.1 alnsn +>++++++++++[<++++++++++>-] e 43 1.1 alnsn +>++++++++++[<++++++++++>-] e 44 1.1 alnsn >+++++++++++++++++++[<++++++>-] r 45 1.1 alnsn >++++++++[<++++>-] " " 46 1.1 alnsn +>+++++++++++[<++++++++++>-] o 47 1.1 alnsn >+++++++++++[<++++++++++>-] n 48 1.1 alnsn >++++++++[<++++>-] " " 49 1.1 alnsn ++>+++++++++++++++++++[<++++++>-] t 50 1.1 alnsn ++++>++++++++++[<++++++++++>-] h 51 1.1 alnsn +>++++++++++[<++++++++++>-] e 52 1.1 alnsn >++++++++[<++++>-] " " 53 1.1 alnsn ++>+++++++++++++[<+++++++++>-] w 54 1.1 alnsn +>++++++++++++[<++++++++>-] a 55 1.1 alnsn >++++++++++++[<+++++++++>-] l 56 1.1 alnsn >++++++++++++[<+++++++++>-] l 57 1.1 alnsn >+++++[<++>-] LF 58 1.1 alnsn ++>+++++++++++++++++++[<++++++>-] t 59 1.1 alnsn +>++++++++++++[<++++++++>-] a 60 1.1 alnsn +++>+++++++++++++[<++++++++>-] k 61 1.1 alnsn +>++++++++++[<++++++++++>-] e 62 1.1 alnsn >++++++++[<++++>-] " " 63 1.1 alnsn +>+++++++++++[<++++++++++>-] o 64 1.1 alnsn >+++++++++++[<++++++++++>-] n 65 1.1 alnsn +>++++++++++[<++++++++++>-] e 66 1.1 alnsn >++++++++[<++++>-] " " 67 1.1 alnsn >++++++++++[<++++++++++>-] d 68 1.1 alnsn +>+++++++++++[<++++++++++>-] o 69 1.1 alnsn ++>+++++++++++++[<+++++++++>-] w 70 1.1 alnsn >+++++++++++[<++++++++++>-] n 71 1.1 alnsn >++++++++[<++++>-] " " 72 1.1 alnsn +>++++++++++++[<++++++++>-] a 73 1.1 alnsn >+++++++++++[<++++++++++>-] n 74 1.1 alnsn >++++++++++[<++++++++++>-] d 75 1.1 alnsn >++++++++[<++++>-] " " 76 1.1 alnsn ++>+++++++++++[<++++++++++>-] p 77 1.1 alnsn +>++++++++++++[<++++++++>-] a 78 1.1 alnsn +>+++++++++++++++++++[<++++++>-] s 79 1.1 alnsn +>+++++++++++++++++++[<++++++>-] s 80 1.1 alnsn >++++++++[<++++>-] " " 81 1.1 alnsn +>+++++++++++++[<++++++++>-] i 82 1.1 alnsn ++>+++++++++++++++++++[<++++++>-] t 83 1.1 alnsn >++++++++[<++++>-] " " 84 1.1 alnsn +>++++++++++++[<++++++++>-] a 85 1.1 alnsn >+++++++++++++++++++[<++++++>-] r 86 1.1 alnsn +>+++++++++++[<++++++++++>-] o 87 1.1 alnsn >+++++++++++++[<+++++++++>-] u 88 1.1 alnsn >+++++++++++[<++++++++++>-] n 89 1.1 alnsn >++++++++++[<++++++++++>-] d 90 1.1 alnsn >+++++[<++>-] LF 91 1.1 alnsn +++++++++++++ CR 92 1.1 alnsn 93 1.1 alnsn [<]>>>> go back to fourth cell 94 1.1 alnsn 95 1.1 alnsn ################################# 96 1.1 alnsn ### initiate the display loop ### 97 1.1 alnsn ################################# 98 1.1 alnsn 99 1.1 alnsn [ loop 100 1.1 alnsn < back to cell 3 101 1.1 alnsn [ loop 102 1.1 alnsn [>]<< go to last cell and back to LF 103 1.1 alnsn .. output 2 newlines 104 1.1 alnsn [<]> go to first cell 105 1.1 alnsn 106 1.1 alnsn ################################### 107 1.1 alnsn #### begin display of characters### 108 1.1 alnsn ################################### 109 1.1 alnsn # 110 1.1 alnsn #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 111 1.1 alnsn #X X b o t t l e s o f b e e r 112 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>. 113 1.1 alnsn #o n t h e w a l l N 114 1.1 alnsn #[<]> go to first cell 115 1.1 alnsn #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.> 116 1.1 alnsn #X X b o t t l e s o f b e e r N 117 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 118 1.1 alnsn #t a k e o n e d o w n a n d p a s s 119 1.1 alnsn #.>.>.>.>.>.>.>.>.>. 120 1.1 alnsn #i t a r o u n d N 121 1.1 alnsn ##### 122 1.1 alnsn 123 1.1 alnsn [<]>> go to cell 2 124 1.1 alnsn - subtract 1 from cell 2 125 1.1 alnsn < go to cell 1 126 1.1 alnsn 127 1.1 alnsn ######################## 128 1.1 alnsn ### display last line ## 129 1.1 alnsn ######################## 130 1.1 alnsn # 131 1.1 alnsn #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 132 1.1 alnsn #X X b o t t l e s o f b e e r 133 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>. 134 1.1 alnsn #o n t h e w a l l 135 1.1 alnsn ##### 136 1.1 alnsn 137 1.1 alnsn [<]>>>- go to cell 3/subtract 1 138 1.1 alnsn ] end loop when cell 3 is 0 139 1.1 alnsn ++++++++++ add 10 to cell 3 140 1.1 alnsn <++++++++++ back to cell 2/add 10 141 1.1 alnsn <- back to cell 1/subtract 1 142 1.1 alnsn [>]<. go to last line/carriage return 143 1.1 alnsn [<]> go to first line 144 1.1 alnsn 145 1.1 alnsn ######################## 146 1.1 alnsn ### correct last line ## 147 1.1 alnsn ######################## 148 1.1 alnsn # 149 1.1 alnsn #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 150 1.1 alnsn #X X b o t t l e s o f b e e r 151 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>. 152 1.1 alnsn #o n t h e w a l l 153 1.1 alnsn ##### 154 1.1 alnsn 155 1.1 alnsn [<]>>>>- go to cell 4/subtract 1 156 1.1 alnsn ] end loop when cell 4 is 0 157 1.1 alnsn 158 1.1 alnsn ############################################################## 159 1.1 alnsn ### By this point verses 9910 are displayed but to work ### 160 1.1 alnsn ### with the lower numbered verses in a more readable way ### 161 1.1 alnsn ### we initiate a new loop for verses 9{CODE} that will not ### 162 1.1 alnsn ### use the fourth cell at all ### 163 1.1 alnsn ############################################################## 164 1.1 alnsn 165 1.1 alnsn + add 1 to cell four (to keep it nonzero) 166 1.1 alnsn <-- back to cell 3/subtract 2 167 1.1 alnsn 168 1.1 alnsn [ loop 169 1.1 alnsn [>]<< go to last cell and back to LF 170 1.1 alnsn .. output 2 newlines 171 1.1 alnsn [<]> go to first cell 172 1.1 alnsn 173 1.1 alnsn ################################### 174 1.1 alnsn #### begin display of characters### 175 1.1 alnsn ################################### 176 1.1 alnsn # 177 1.1 alnsn #>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 178 1.1 alnsn # X b o t t l e s o f b e e r 179 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>. 180 1.1 alnsn #o n t h e w a l l N 181 1.1 alnsn #[<]> go to first cell 182 1.1 alnsn #>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.> 183 1.1 alnsn # X b o t t l e s o f b e e r N 184 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 185 1.1 alnsn #t a k e o n e d o w n a n d p a s s 186 1.1 alnsn #.>.>.>.>.>.>.>.>.>. 187 1.1 alnsn #i t a r o u n d N 188 1.1 alnsn ##### 189 1.1 alnsn 190 1.1 alnsn [<]>> go to cell 2 191 1.1 alnsn - subtract 1 from cell 2 192 1.1 alnsn 193 1.1 alnsn ######################## 194 1.1 alnsn ### display last line ## 195 1.1 alnsn ######################## 196 1.1 alnsn # 197 1.1 alnsn #.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 198 1.1 alnsn #X b o t t l e s o f b e e r 199 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>. 200 1.1 alnsn #o n t h e w a l l 201 1.1 alnsn ##### 202 1.1 alnsn 203 1.1 alnsn [<]>>>- go to cell 3/subtract 1 204 1.1 alnsn ] end loop when cell 3 is 0 205 1.1 alnsn + add 1 to cell 3 to keep it nonzero 206 1.1 alnsn 207 1.1 alnsn [>]<. go to last line/carriage return 208 1.1 alnsn [<]> go to first line 209 1.1 alnsn 210 1.1 alnsn ######################## 211 1.1 alnsn ### correct last line ## 212 1.1 alnsn ######################## 213 1.1 alnsn # 214 1.1 alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.> 215 1.1 alnsn # X b o t t l e o f b e e r 216 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.<<<<. 217 1.1 alnsn #o n t h e w a l l 218 1.1 alnsn ##### 219 1.1 alnsn 220 1.1 alnsn [>]<< go to last cell and back to LF 221 1.1 alnsn .. output 2 newlines 222 1.1 alnsn [<]> go to first line 223 1.1 alnsn 224 1.1 alnsn ######################### 225 1.1 alnsn ### the final verse ## 226 1.1 alnsn ######################### 227 1.1 alnsn # 228 1.1 alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.> 229 1.1 alnsn # X b o t t l e o f b e e r 230 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>. 231 1.1 alnsn #o n t h e w a l l N 232 1.1 alnsn #[<]> go to first cell 233 1.1 alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.> 234 1.1 alnsn # X b o t t l e o f b e e r N 235 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 236 1.1 alnsn #t a k e o n e d o w n a n d p a s s 237 1.1 alnsn #.>.>.>.>.>.>.>.>.>. 238 1.1 alnsn #i t a r o u n d N 239 1.1 alnsn #[>]< go to last line 240 1.1 alnsn #<<<.<<.<<<. 241 1.1 alnsn # n o 242 1.1 alnsn #[<]>>>> go to fourth cell 243 1.1 alnsn #>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> 244 1.1 alnsn # b o t t l e s o f b e e r 245 1.1 alnsn #.>.>.>.>.>.>.>.>.>.>.>. 246 1.1 alnsn #o n t h e w a l l N 247 1.1 alnsn #####fin##