How to resolve the algorithm 99 bottles of beer step by step in the Oz programming language

Published on 12 May 2024 09:40 PM
#Oz

How to resolve the algorithm 99 bottles of beer step by step in the Oz programming language

Table of Contents

Problem Statement

Display the complete lyrics for the song:     99 Bottles of Beer on the Wall.

The lyrics follow this form: ... and so on, until reaching   0     (zero). Grammatical support for   1 bottle of beer   is optional. As with any puzzle, try to do it in as creative/concise/comical a way as possible (simple, obvious solutions allowed, too).

Let's start with the solution:

Step by Step solution about How to resolve the algorithm 99 bottles of beer step by step in the Oz programming language

Source code in the oz programming language

declare
  %% describe the possible solutions of the beer 'puzzle'
  proc {BeerDescription Solution}
     N = {FD.int 1#99} %% N is an integer in [1, 99]
  in
    %% distribute starting with highest value
    {FD.distribute generic(value:max) [N]}

     Solution =
     {Bottles N}#" of beer on the wall\n"#
     {Bottles N}#" bottles of beer\n"#
     "Take one down, pass it around\n"#
     {Bottles N-1}#" of beer on the wall\n"
  end

  %% pluralization
  proc {Bottles N Txt}
     cond N = 1 then Txt ="1 bottle"
     else Txt = N#" bottles"
     end
  end
in
  %% show all solutions to the 'puzzle'
  {ForAll {SearchAll BeerDescription}
   System.showInfo}

declare
  fun {Bottles N}
     if N == 1 then "1 bottle"
     else N#" bottles"
     end
  end
in
  for I in 99..1;~1 do
     {System.showInfo
      {Bottles I}#" of beer on the wall\n"#
      {Bottles I}#" bottles of beer\n"#
      "Take one down, pass it around\n"#
      {Bottles I-1}#" of beer on the wall\n"}
  end

  

You may also check:How to resolve the algorithm Mind boggling card trick step by step in the Java programming language
You may also check:How to resolve the algorithm Strip whitespace from a string/Top and tail step by step in the Retro programming language
You may also check:How to resolve the algorithm Detect division by zero step by step in the F# programming language
You may also check:How to resolve the algorithm Damm algorithm step by step in the Go programming language
You may also check:How to resolve the algorithm Continued fraction step by step in the Ring programming language