The Twelve Days of Christmas: Difference between revisions
m (make a draft task for now) |
(add Perl 6 entry, fix extra newlines in other examples) |
||
Line 8: | Line 8: | ||
{{works with|Flash Player|Flash Player|10}} |
{{works with|Flash Player|Flash Player|10}} |
||
{{works with|Adobe AIR|AIR|1.5}} (Although the code can work in Flash Player 9 by replacing the Vectors with Arrays) |
{{works with|Adobe AIR|AIR|1.5}} (Although the code can work in Flash Player 9 by replacing the Vectors with Arrays) |
||
<lang ActionScript> |
<lang ActionScript>package { |
||
package { |
|||
import flash.display.Sprite; |
import flash.display.Sprite; |
||
Line 121: | Line 120: | ||
} |
} |
||
⚫ | |||
} |
|||
⚫ | |||
=={{header|C sharp|C#}}== |
=={{header|C sharp|C#}}== |
||
<lang csharp> |
<lang csharp>using System; |
||
using System; |
|||
public class TwelveDaysOfChristmas { |
public class TwelveDaysOfChristmas { |
||
Line 169: | Line 166: | ||
} |
} |
||
⚫ | |||
} |
|||
=={{header|Perl 6}}== |
|||
⚫ | |||
<lang perl6>my @days = <first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth>; |
|||
my @gifts = lines q:to//; |
|||
And a partridge in a pear tree. |
|||
Two turtle doves, |
|||
Three french hens, |
|||
Four calling birds, |
|||
Five golden rings, |
|||
Six geese a-laying, |
|||
Seven swans a-swimming, |
|||
Eight maids a-milking, |
|||
Nine ladies dancing, |
|||
Ten lords a-leaping, |
|||
Eleven pipers piping, |
|||
Twelve drummers drumming, |
|||
sub nth($n) { say "On the @days[$n] day of Christmas, my true love gave to me:" } |
|||
nth(0); say @gifts[0].subst('nd a',''); |
|||
for 1 ... 11 -> $d { |
|||
say ''; |
|||
nth($d); |
|||
say @gifts[$_] for $d ... 0; |
|||
}</lang> |
Revision as of 19:14, 19 December 2013
Write a program that outputs the lyrics of the Christmas carol The Twelve Days of Christmas. The lyrics can be found here.
ActionScript
This program outputs the lyrics to a TextField object. The text field can be scrolled using the mouse wheel (Windows only) or by using the up/down arrow keys on the keyboard.
(Although the code can work in Flash Player 9 by replacing the Vectors with Arrays)
<lang ActionScript>package {
import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.ui.Keyboard; public class TwelveDaysOfChristmas extends Sprite { private var _textArea:TextField = new TextField(); public function TwelveDaysOfChristmas() { if ( stage ) _init(); else addEventListener(Event.ADDED_TO_STAGE, _init); } private function _init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, _init); _textArea = new TextField(); _textArea.x = 10; _textArea.y = 10; _textArea.autoSize = TextFieldAutoSize.LEFT; _textArea.wordWrap = true; _textArea.width = stage.stageWidth - 20; _textArea.height = stage.stageHeight - 10; _textArea.multiline = true; var format:TextFormat = new TextFormat(); format.size = 14; _textArea.defaultTextFormat = format; var verses:Vector.<String> = new Vector.<String>(12, true); var lines:Vector.<String>; var days:Vector.<String> = new Vector.<String>(12, true); var gifts:Vector.<String> = new Vector.<String>(12, true); days[0] = 'first'; days[1] = 'second'; days[2] = 'third'; days[3] = 'fourth'; days[4] = 'fifth'; days[5] = 'sixth'; days[6] = 'seventh'; days[7] = 'eighth'; days[8] = 'ninth'; days[9] = 'tenth'; days[10] = 'eleventh'; days[11] = 'twelfth'; gifts[0] = 'A partridge in a pear tree'; gifts[1] = 'Two turtle doves'; gifts[2] = 'Three french hens '; gifts[3] = 'Four calling birds'; gifts[4] = 'Five golden rings'; gifts[5] = 'Six geese a-laying'; gifts[6] = 'Seven swans a-swimming'; gifts[7] = 'Eight maids a-milking'; gifts[8] = 'Nine ladies dancing'; gifts[9] = 'Ten lords a-leaping'; gifts[10] = 'Eleven pipers piping'; gifts[11] = 'Twelve drummers drumming'; var i:uint, j:uint, k:uint, line:String, gift:String; for ( i = 0; i < 12; i++ ) { lines = new Vector.<String>(i + 2, true); lines[0] = "On the " + days[i] + " day of Christmas, my true love gave to me"; j = i + 1; k = 0; while ( j-- > 0 ) { gift = gifts[j]; lines[++k] = gift; } verses[i] = lines.join('\n'); if ( i == 0 ) gifts[0] = 'And a partridge in a pear tree'; } var song:String = verses.join('\n\n'); _textArea.text = song; addChild(_textArea); _textArea.addEventListener(MouseEvent.MOUSE_WHEEL, _onMouseWheel); stage.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown); } private function _onKeyDown(e:KeyboardEvent):void { if ( e.keyCode == Keyboard.DOWN ) _textArea.y -= 40; else if ( e.keyCode == Keyboard.UP ) _textArea.y += 40; } private function _onMouseWheel(e:MouseEvent):void { _textArea.y += 20 * e.delta; } }
}</lang>
C#
<lang csharp>using System;
public class TwelveDaysOfChristmas {
public static void Main() {
string[] days = new string[12] { "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth", };
string[] gifts = new string[12] { "A partridge in a pear tree", "Two turtle doves", "Three french hens ", "Four calling birds", "Five golden rings", "Six geese a-laying", "Seven swans a-swimming", "Eight maids a-milking", "Nine ladies dancing", "Ten lords a-leaping", "Eleven pipers piping", "Twelve drummers drumming" };
for ( int i = 0; i < 12; i++ ) {
Console.WriteLine("On the " + days[i] + " day of Christmas, my true love gave to me");
int j = i + 1; while ( j-- > 0 ) { Console.WriteLine(gifts[j]); }
Console.WriteLine();
if ( i == 0 ) gifts[0] = "And a partridge in a pear tree"; }
}
}</lang>
Perl 6
<lang perl6>my @days = <first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth>;
my @gifts = lines q:to//;
And a partridge in a pear tree. Two turtle doves, Three french hens, Four calling birds, Five golden rings, Six geese a-laying, Seven swans a-swimming, Eight maids a-milking, Nine ladies dancing, Ten lords a-leaping, Eleven pipers piping, Twelve drummers drumming,
sub nth($n) { say "On the @days[$n] day of Christmas, my true love gave to me:" }
nth(0); say @gifts[0].subst('nd a',);
for 1 ... 11 -> $d {
say ; nth($d); say @gifts[$_] for $d ... 0;
}</lang>