Sha256: 04d60d02ab492146b41c87fc59b88cba7070ee293fe8dd54ffa0abc28f7468ae

Contents?: true

Size: 1.26 KB

Versions: 165

Compression:

Stored size: 1.26 KB

Contents

use "collections"
use "itertools"

primitive BeerSong
  fun verse(n: USize): String =>
    match n
    | 0 => 
      """
      No more bottles of beer on the wall, no more bottles of beer.
      Go to the store and buy some more, 99 bottles of beer on the wall.
      """
    | 1 =>
      """
      1 bottle of beer on the wall, 1 bottle of beer.
      Take it down and pass it around, no more bottles of beer on the wall.
      """
    | 2 => 
      """
      2 bottles of beer on the wall, 2 bottles of beer.
      Take one down and pass it around, 1 bottle of beer on the wall.
      """
    else
      let ns: String = n.string()
      let ns': String = (n - 1).string()
      recover String
        .> append(ns)
        .> append(" bottles of beer on the wall, ")
        .> append(ns)
        .> append(" bottles of beer.\nTake one down and pass it around, ")
        .> append(ns')
        .> append(" bottles of beer on the wall.\n")
      end
    end

  fun sing(start: USize, stop: USize): String iso^ =>
    try
      String.join(
        Iter[USize](Reverse(start, stop))
          .map[String]({(n: USize): String => BeerSong.verse(n) + "\n" })
          .collect(Array[String](start - stop))
          .values())
        .> pop()?
    else
      recover String end
    end

Version data entries

165 entries across 165 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.179 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.178 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.177 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.176 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.175 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.174 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.173 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.172 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.171 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.170 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.169 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.167 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.166 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.165 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.164 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.163 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.162 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.161 tracks/pony/exercises/beer-song/example.pony
trackler-2.2.1.160 tracks/pony/exercises/beer-song/example.pony