"99瓶啤酒"算法
这个例子考察了Julia中经典的"99瓶啤酒"算法的实现,该算法输出一个瓶子数量减少的文本歌曲。
导言
什么是"99瓶啤酒"算法?
"99瓶啤酒"算法是编程中一个流行的学习任务,它包括输出一首着名的儿童歌曲的文本,瓶子数量减少。 这首歌的每一节都用不同数量的瓶子重复,从99开始,以1结束。 此任务用于演示各种编程语言中的循环、字符串操作和格式化输出。
源代码
让我们看看Julia程序的源代码,它实现了"99瓶啤酒"算法:
    In [ ]:
# Цикл от 99 до 1 с шагом -1 (обратный отсчет)
for i = 99:-1:1 
    # Выводим куплет песни с текущим числом бутылок
    print("\n$i bottles of beer on the wall\n$i bottles of beer\nTake one down, pass it around\n$(i-1) bottles of beer on the wall\n") 
end
99 bottles of beer on the wall 99 bottles of beer Take one down, pass it around 98 bottles of beer on the wall 98 bottles of beer on the wall 98 bottles of beer Take one down, pass it around 97 bottles of beer on the wall 97 bottles of beer on the wall 97 bottles of beer Take one down, pass it around 96 bottles of beer on the wall 96 bottles of beer on the wall 96 bottles of beer Take one down, pass it around 95 bottles of beer on the wall 95 bottles of beer on the wall 95 bottles of beer Take one down, pass it around 94 bottles of beer on the wall 94 bottles of beer on the wall 94 bottles of beer Take one down, pass it around 93 bottles of beer on the wall 93 bottles of beer on the wall 93 bottles of beer Take one down, pass it around 92 bottles of beer on the wall 92 bottles of beer on the wall 92 bottles of beer Take one down, pass it around 91 bottles of beer on the wall 91 bottles of beer on the wall 91 bottles of beer Take one down, pass it around 90 bottles of beer on the wall 90 bottles of beer on the wall 90 bottles of beer Take one down, pass it around 89 bottles of beer on the wall 89 bottles of beer on the wall 89 bottles of beer Take one down, pass it around 88 bottles of beer on the wall 88 bottles of beer on the wall 88 bottles of beer Take one down, pass it around 87 bottles of beer on the wall 87 bottles of beer on the wall 87 bottles of beer Take one down, pass it around 86 bottles of beer on the wall 86 bottles of beer on the wall 86 bottles of beer Take one down, pass it around 85 bottles of beer on the wall 85 bottles of beer on the wall 85 bottles of beer Take one down, pass it around 84 bottles of beer on the wall 84 bottles of beer on the wall 84 bottles of beer Take one down, pass it around 83 bottles of beer on the wall 83 bottles of beer on the wall 83 bottles of beer Take one down, pass it around 82 bottles of beer on the wall 82 bottles of beer on the wall 82 bottles of beer Take one down, pass it around 81 bottles of beer on the wall 81 bottles of beer on the wall 81 bottles of beer Take one down, pass it around 80 bottles of beer on the wall 80 bottles of beer on the wall 80 bottles of beer Take one down, pass it around 79 bottles of beer on the wall 79 bottles of beer on the wall 79 bottles of beer Take one down, pass it around 78 bottles of beer on the wall 78 bottles of beer on the wall 78 bottles of beer Take one down, pass it around 77 bottles of beer on the wall 77 bottles of beer on the wall 77 bottles of beer Take one down, pass it around 76 bottles of beer on the wall 76 bottles of beer on the wall 76 bottles of beer Take one down, pass it around 75 bottles of beer on the wall 75 bottles of beer on the wall 75 bottles of beer Take one down, pass it around 74 bottles of beer on the wall 74 bottles of beer on the wall 74 bottles of beer Take one down, pass it around 73 bottles of beer on the wall 73 bottles of beer on the wall 73 bottles of beer Take one down, pass it around 72 bottles of beer on the wall 72 bottles of beer on the wall 72 bottles of beer Take one down, pass it around 71 bottles of beer on the wall 71 bottles of beer on the wall 71 bottles of beer Take one down, pass it around 70 bottles of beer on the wall 70 bottles of beer on the wall 70 bottles of beer Take one down, pass it around 69 bottles of beer on the wall 69 bottles of beer on the wall 69 bottles of beer Take one down, pass it around 68 bottles of beer on the wall 68 bottles of beer on the wall 68 bottles of beer Take one down, pass it around 67 bottles of beer on the wall 67 bottles of beer on the wall 67 bottles of beer Take one down, pass it around 66 bottles of beer on the wall 66 bottles of beer on the wall 66 bottles of beer Take one down, pass it around 65 bottles of beer on the wall 65 bottles of beer on the wall 65 bottles of beer Take one down, pass it around 64 bottles of beer on the wall 64 bottles of beer on the wall 64 bottles of beer Take one down, pass it around 63 bottles of beer on the wall 63 bottles of beer on the wall 63 bottles of beer Take one down, pass it around 62 bottles of beer on the wall 62 bottles of beer on the wall 62 bottles of beer Take one down, pass it around 61 bottles of beer on the wall 61 bottles of beer on the wall 61 bottles of beer Take one down, pass it around 60 bottles of beer on the wall 60 bottles of beer on the wall 60 bottles of beer Take one down, pass it around 59 bottles of beer on the wall 59 bottles of beer on the wall 59 bottles of beer Take one down, pass it around 58 bottles of beer on the wall 58 bottles of beer on the wall 58 bottles of beer Take one down, pass it around 57 bottles of beer on the wall 57 bottles of beer on the wall 57 bottles of beer Take one down, pass it around 56 bottles of beer on the wall 56 bottles of beer on the wall 56 bottles of beer Take one down, pass it around 55 bottles of beer on the wall 55 bottles of beer on the wall 55 bottles of beer Take one down, pass it around 54 bottles of beer on the wall 54 bottles of beer on the wall 54 bottles of beer Take one down, pass it around 53 bottles of beer on the wall 53 bottles of beer on the wall 53 bottles of beer Take one down, pass it around 52 bottles of beer on the wall 52 bottles of beer on the wall 52 bottles of beer Take one down, pass it around 51 bottles of beer on the wall 51 bottles of beer on the wall 51 bottles of beer Take one down, pass it around 50 bottles of beer on the wall 50 bottles of beer on the wall 50 bottles of beer Take one down, pass it around 49 bottles of beer on the wall 49 bottles of beer on the wall 49 bottles of beer Take one down, pass it around 48 bottles of beer on the wall 48 bottles of beer on the wall 48 bottles of beer Take one down, pass it around 47 bottles of beer on the wall 47 bottles of beer on the wall 47 bottles of beer Take one down, pass it around 46 bottles of beer on the wall 46 bottles of beer on the wall 46 bottles of beer Take one down, pass it around 45 bottles of beer on the wall 45 bottles of beer on the wall 45 bottles of beer Take one down, pass it around 44 bottles of beer on the wall 44 bottles of beer on the wall 44 bottles of beer Take one down, pass it around 43 bottles of beer on the wall 43 bottles of beer on the wall 43 bottles of beer Take one down, pass it around 42 bottles of beer on the wall 42 bottles of beer on the wall 42 bottles of beer Take one down, pass it around 41 bottles of beer on the wall 41 bottles of beer on the wall 41 bottles of beer Take one down, pass it around 40 bottles of beer on the wall 40 bottles of beer on the wall 40 bottles of beer Take one down, pass it around 39 bottles of beer on the wall 39 bottles of beer on the wall 39 bottles of beer Take one down, pass it around 38 bottles of beer on the wall 38 bottles of beer on the wall 38 bottles of beer Take one down, pass it around 37 bottles of beer on the wall 37 bottles of beer on the wall 37 bottles of beer Take one down, pass it around 36 bottles of beer on the wall 36 bottles of beer on the wall 36 bottles of beer Take one down, pass it around 35 bottles of beer on the wall 35 bottles of beer on the wall 35 bottles of beer Take one down, pass it around 34 bottles of beer on the wall 34 bottles of beer on the wall 34 bottles of beer Take one down, pass it around 33 bottles of beer on the wall 33 bottles of beer on the wall 33 bottles of beer Take one down, pass it around 32 bottles of beer on the wall 32 bottles of beer on the wall 32 bottles of beer Take one down, pass it around 31 bottles of beer on the wall 31 bottles of beer on the wall 31 bottles of beer Take one down, pass it around 30 bottles of beer on the wall 30 bottles of beer on the wall 30 bottles of beer Take one down, pass it around 29 bottles of beer on the wall 29 bottles of beer on the wall 29 bottles of beer Take one down, pass it around 28 bottles of beer on the wall 28 bottles of beer on the wall 28 bottles of beer Take one down, pass it around 27 bottles of beer on the wall 27 bottles of beer on the wall 27 bottles of beer Take one down, pass it around 26 bottles of beer on the wall 26 bottles of beer on the wall 26 bottles of beer Take one down, pass it around 25 bottles of beer on the wall 25 bottles of beer on the wall 25 bottles of beer Take one down, pass it around 24 bottles of beer on the wall 24 bottles of beer on the wall 24 bottles of beer Take one down, pass it around 23 bottles of beer on the wall 23 bottles of beer on the wall 23 bottles of beer Take one down, pass it around 22 bottles of beer on the wall 22 bottles of beer on the wall 22 bottles of beer Take one down, pass it around 21 bottles of beer on the wall 21 bottles of beer on the wall 21 bottles of beer Take one down, pass it around 20 bottles of beer on the wall 20 bottles of beer on the wall 20 bottles of beer Take one down, pass it around 19 bottles of beer on the wall 19 bottles of beer on the wall 19 bottles of beer Take one down, pass it around 18 bottles of beer on the wall 18 bottles of beer on the wall 18 bottles of beer Take one down, pass it around 17 bottles of beer on the wall 17 bottles of beer on the wall 17 bottles of beer Take one down, pass it around 16 bottles of beer on the wall 16 bottles of beer on the wall 16 bottles of beer Take one down, pass it around 15 bottles of beer on the wall 15 bottles of beer on the wall 15 bottles of beer Take one down, pass it around 14 bottles of beer on the wall 14 bottles of beer on the wall 14 bottles of beer Take one down, pass it around 13 bottles of beer on the wall 13 bottles of beer on the wall 13 bottles of beer Take one down, pass it around 12 bottles of beer on the wall 12 bottles of beer on the wall 12 bottles of beer Take one down, pass it around 11 bottles of beer on the wall 11 bottles of beer on the wall 11 bottles of beer Take one down, pass it around 10 bottles of beer on the wall 10 bottles of beer on the wall 10 bottles of beer Take one down, pass it around 9 bottles of beer on the wall 9 bottles of beer on the wall 9 bottles of beer Take one down, pass it around 8 bottles of beer on the wall 8 bottles of beer on the wall 8 bottles of beer Take one down, pass it around 7 bottles of beer on the wall 7 bottles of beer on the wall 7 bottles of beer Take one down, pass it around 6 bottles of beer on the wall 6 bottles of beer on the wall 6 bottles of beer Take one down, pass it around 5 bottles of beer on the wall 5 bottles of beer on the wall 5 bottles of beer Take one down, pass it around 4 bottles of beer on the wall 4 bottles of beer on the wall 4 bottles of beer Take one down, pass it around 3 bottles of beer on the wall 3 bottles of beer on the wall 3 bottles of beer Take one down, pass it around 2 bottles of beer on the wall 2 bottles of beer on the wall 2 bottles of beer Take one down, pass it around 1 bottles of beer on the wall 1 bottles of beer on the wall 1 bottles of beer Take one down, pass it around 0 bottles of beer on the wall
分析代码的工作原理
周期 for i = 99:-1:1 表示变量 i 它将以-1的增量从99取值到1(即在每个步骤中减少一个)。 在使用函数的循环体中 print() 歌曲的诗句形成并显示。 使用字符串插值 $i \text{и} $(i-1) 替换变量的当前值和下一个值 i.
实现功能
在本实施:
-递减计数器周期用于模拟倒计时。
-字符串插值用于动态地将数字插入到文本中。
-每节经文使用转义字符在一行中输出。 \n.
结论
在这个例子中,我们研究了Julia语言中经典算法"99瓶啤酒"的实现。 我们设法创建了一个程序,输出一个文本歌曲与减少瓶数使用循环和字符串插值。 这是演示Julia语言处理循环、字符串和格式化输出的基本功能所必需的。
该示例是使用[Rosetta代码]的材料开发的(https://rosettacode.org/wiki/99_bottles_of_beer )