[Question]
  [
In as few Unicode characters as possible, print the following (144 characters):
```
1, 2, 3 o'clock, 4 o'clock rock,
5, 6, 7 o'clock, 8 o'clock rock,
9, 10, 11 o'clock, 12 o'clock rock,
We're gonna rock around the clock tonight.
```
You must not use any numbers in your code, except the digit `1`.
  
[Answer]
## Javascript - 140 132
```
k=1,s=", ",t=" o'clock",x="";while(k<11)x+=k+++s+k+++s+k+++t+s+k+++t+" rock,\n";alert(x+"We're gonna rock around the clock tonight.")
```
The fact, that 11 is made out of two 1's let me pass the rules I guess.
### Explanation
The k+++s is equal to (k++)+s, so it adds k first to x, then increments k and then it adds s to x. This process will be done three times before it adds the last sentence.
[Answer]
## C# - 186
Best golf language or best golf language?
```
class P{static void Main(){var s="";for(int i=1;i<11;)s+=i+++", "+i+++", "+i+++" o'clock, "+i+++" o'clock rock,\n";System.Console.Write(s+"We're gonna rock around the clock tonight.");}}
```
[Answer]
# Brainfuck (1574)
Not a serious submission, but follows the rules.
```
-[----->+<]>--.-----.------------.[-->+++<]>++.------.------------.++[-->+++<]>.[--->++<]>--.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.++[-->+++<]>+.-[--->++<]>--.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.-[----->+<]>.---------.------------.-----[->++<]>.----------.------------.----[->++<]>-.+[-->+<]>++++.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.----[->++<]>.[-->+<]>++++.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.+[->+++++<]>++.-------------.------------.[-->+++<]>+.-.----.------------.[-->+++<]>+..-[--->++<]>.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.+++[----->++<]>.------------.[-->+++<]>+.+.--[--->++<]>.+++++[->+++<]>.[--->+<]>++.-[--->+<]>+.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[----->++<]>.---.------------.++++++++.+++[----->++<]>.>++++++++++.[------>+<]>.++[->++++<]>+.---[->+++<]>+.-[->+++<]>.-------------.--[--->+<]>-.++[->+++<]>+.++++++++.-..-------------.-[->+++<]>.---[----->++<]>.---.------------.++++++++.-[++>---<]>+.[->+++<]>+.--[--->+<]>---.---.++++++.-------.----------.-[--->+<]>-.---[->++++<]>.------------.---.--[--->+<]>-.+[->+++<]>.+++++++++.+++.------------.++++++++.-[++>---<]>+.---[->++++<]>.-----.-.-----.--.+.++++++++++++.[++>---<]>.
```
Can be tested [here](http://www.nayuki.io/page/brainfuck-interpreter-javascript).
[Answer]
# Ruby, 100
```
printf"%i, %i#{", %i o'clock"*r=-~1} rock,
"*-~r+"We're gonna rock around the clock tonight.",*1..$$
```
[Answer]
# Perl 123
```
$s="*, *, * o'(, * o'( ),";print"$s
$s
$s
We're gonna ) around the ( tonight."=~s![(*)]!(clock,rock)[1+1+1&ord$&]||++$i!reg
```
The regular expression matches `(`, `)` and `*`. I used the fact that the ASCII code of `(` is 40, of `)` is 41 and `*` is 42.
The `r` flag of the regular expression enables "in place substitution" and the `e` flag enables code evaluation (similar to `x.replace(/.../, function(m){...})` in JavaScript).
`(clock,rock)` is an array of two "bare words". `$&` is the current match of the regular expression and `ord$&` is it's ASCII value.
Masked by 3 or `1+1+1` the ASCII values are now 0, 1 and 2, so I can use them to retrieve the corresponding array element.
As 2 is out of the array, the "short circuit" operator `||` evaluates `++$i`. In the first match `$i` is `undef` so incrementing it I get 1, then 2 and so on...
In simple words. This replaces `*` with it's current occurrence, `(` with "clock" and `)` with "rock".
[Answer]
# Bash+coreutils, 120 ASCII, 92 Unicode
### ASCII:
```
c=clock
f(){ echo $[++i], $[++i], $[++i] o\'$c, $[++i] o\'$c rock,;}
f
f
f
echo We\'re gonna rock around the $c tonight.
```
### Unicode:
```
iconv -t unicode<<<ÊåäÊåΩÊΩ¨Ê≠£Êòª‚§®‚ÅªÊç•ÊΩ®‚ê†‚≠õÊ§´‚±ù‚ê†‚≠õÊ§´‚±ù‚ê†‚≠õÊ§´‚ÅùÂ±Ø‚êß‚±£‚ê†‚≠õÊ§´‚ÅùÂ±Ø‚êß‚Å£ÊΩ≤Ê≠£„¨¨„≠Ω„≠¶„≠¶„≠¶Êç•ÊΩ®Âú†Â±•Áàß‚Å•ÊΩßÊπÆ‚Å°ÊΩ≤Ê≠£ÊÑ†ÊΩ≤Êπµ‚Å§Ê°¥‚Å•Êå§Áê†ÊπØÊù©Áë®‡®Æ|sed 1d|bash
```
### base64 encoded Unicode version (in case unicode renderings get messed up):
```
aWNvbnYgLXQgdW5pY29kZTw8POaMiuaMvea9rOato+aYiuKkqOKBu+aNpea9qOKQoOKtm+akq+Kx
neKQoOKtm+akq+KxneKQoOKtm+akq+KBneWxr+KQp+Kxo+KQoOKtm+akq+KBneWxr+KQp+KBo+a9
suato+OsrOCpveCppuCppuCppuaNpea9qOWcoOWxpeeIp+KBpea9p+a5ruKBoea9suato+aEoOa9
sua5teKBpOahtOKBpeaMpOeQoOa5r+adqeeRqOCornxzZWQgMWR8YmFzaAo=
```
[Answer]
# Brainfuck, 1299
***Bleuuuurgh***. That was terrible. I don't know why I did this, it seemed quite easy at the start. First and probably last Brainfuck script. [Try it here.](http://copy.sh/brainfuck/)
With some help from [an automated code generator](http://copy.sh/brainfuck/text.html), I was able to write a script which reused most of the characters instead of generating each one from scratch. It's only 275 characters shorter than the one automatically generated, posted [here](https://codegolf.stackexchange.com/a/34676/16402).
The output isn't newline-terminated.
I might put a bit of explanation in later on. Essentially, any long line which isn't something like `>>>>>>>` or `<<<<<<<` or `>>.>>.>>.>>.` generates a character or a series of them.
```
-[----->+<]>--.
>
++[------>+<]>+.------------.
[-]<<+.>
++[------>+<]>+.------------.
[-]<<+.>
++++[->++++++++<]>.
>
+[------->++<]>+.
>
+[------->+++<]>++.
>
--[----->+<]>---.
>
+[------->++<]>--.
>
+[------->++<]>+.
>
--[----->+<]>---.
>
+[----->+++<]>++++.
>
++[------>+<]>+.
>
++++[->++++++++<]>.
<<<<<<<<<<<<<<<<<<<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>>>.
>
+[--------->++<]>.
>
+[------->++<]>+.
>
--[----->+<]>---.
>
+[----->+++<]>++++.
<<<<<<<<<<.
<++++++++++.
<<<<<<<<<<
<<<<<<<
+.
>>>>>>>>>>
>>>>>>>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>>>>>>>>>
>>>>>>>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>.
<<<<<<<<<<
<<<<<<
.<<+.
>>.>>.>>.>>.>>.>>.>>.>>.>>>>.
>>.>>.>>.>>.
<<<<<<<<<<.
<.
<<<<<<<<<
<<<<<<<<
+.[-]<
++[------>+<]>+.
>>.
[-]<<[-]<
-[----->+<]>--.-.
[-]<
++[------>+<]>+.------------.
[-]<
-[----->+<]>--..
>
++++[->++++++++<]>.
>>.>>.>>.>>.>>.>>.>>.>>.>>.
>>>>>>>>>
-[----->+<]>--.+.
<<<<<<<<<
<<<<<<<<<
<<<<<<<<<
<.
>>.>>.>>.>>.>>.>>.>>.
>>>>.
>>.>>.>>.>>.
>>[-]
++[------>+<]>+.>++++++++++.
>
+[--->++<]>+.++[->++++<]>+.---[->+++<]>+.-[->+++<]>.-------------.--[--->+<]>-.++[->+++<]>+.++++++++.-..-------------.
<<<<<<<<<<
<<<<<<<<<.
>>.>>.>>.>>.
<<[-]<<[-]<<[-]<<.
>
--[----->+<]>-----.--[--->+<]>---.---.++++++.-------.----------.
[-]<<<.
>
--------[-->+++<]>.------------.---.
<<.
<<<<<<<<<<
<<.
>>.>>.>>.>>.
>>>>.
>>[-]
--------[-->+++<]>.-----.-.-----.--.+.++++++++++++.[++>---<]>.
```
[Answer]
# Lua - ~~217~~ ~~164~~ ~~154~~ ~~151~~ ~~149~~ 143
Modified the old one to use a loop instead, saves a boat-load of characters. Thanks to TeunPronk for helping me shave off another 10 characters and to WilliamBarbosa for shaving off another 3 characters. 2 more characters can be saved by using the variable `k`. 6 more characters are saved by eliminating the variable `r=" rock,"` since it is used once.
```
o=" o'clock"c=", "w=io.write k=1+1 for i=1,11,k+k do w(i,c,i+1,c,i+k,o,c,i+k+1,o," rock,\n")end w("We're gonna rock around the clock tonight.")
```
Ungolfed,
```
o=" o'clock"
c=", "
w=io.write
k=1+1
for i=1,11,k+k do 
   w(i,c,i+1,c,i+k,o,c,i+k+1,o," rock,\n")
end
w("We're gonna rock around the clock tonight.")
```
[Answer]
# CJam - 90 ASCII / 54 Unicode
ASCII:
```
{{T):T}:F~", ":CFCF" o'clock":OCFO" rock,
"}Z*"We're gonna rock around the clock tonight."
```
Unicode:
```
"ŒæÊº∞„†¨‡º≥·Üß·∂É„∏©Ïî™Âí¶‚èöÈ®§‰ñ´ÌçÉ·∞ΩËñÇ·¥§‡®•Í∂ãÏîª„±ó„Ω´∆µÍê•Âãã‰éî‰É±È≠†ÍùØÊúêÈÖ†Á§¢ÁíøÁãÆÍìàÊâßÎÇ¶ÎçãËß´·•õÁêö"GZ)#bBC*b:c~
```
Try them at <http://cjam.aditsu.net/>
[Answer]
# Python (123)
```
print((1+1+1)*"%i, %i, %i o'clock, %i o'clock rock,\n"%tuple(range(1,11+1+1))+"We're gonna rock around the clock tonight.")
```
# PYG (112)
```
P((1+1+1)*"%i, %i, %i o'clock, %i o'clock rock,\n"%T(R(1,11+1+1))+"We're gonna rock around the clock tonight.")
```
[Answer]
# Brainfuck - 680
test it here: [ideone.com/Wi9ftB](https://ideone.com/Wi9ftB)
```
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
```
as i promised, here's a better version. my brain feels like.. ooh so that's where the name comes from.
**explanation:** (because it is unmaintainable and i don't want to forget how it works)
firstly you have to choose the best data layout for this challenge. i came up with
`-4 outmost loop`
`-3 newline char`
`-2 space`
`-1 numbers`
`1 lowercase #1`
`2 lowercase #2`
`3 comma, apostrophe, period`
`4 condition (outmost loop < 3)`
`5 inner loop`
`6 second inner loop`
We have to belive this is optimal unless there will be too many shifts (which case you have to rearrange the layout)
After that I used a 4x9x3 loop to set the starting values for newline, number, the two lowercase letter and the comma. (all the smaller ascii codes got 4x9=36 and the two lowercase letter got 4x9x3=108, then I added and substracted some to get their real value)
When the preset is done, the code enters the outmost loop that cycles 3 times. I explain it by pseudocode.
```
for 3 to 1 where i = numbers
    print '++i, '
    while inner_loop != 0              # this is true after the first loop
        while second_inner_loop != 0   # and this is true after the second
            print '10, 11 o'clock, 12' # prints the difference
            condition = 0              # it prevents the printing below
        second_inner_loop += 1
    inner_loop += 1
    while condition != 0
        print '++i, ++i o'clock, ++i'
    print ' o'clock rock,\n'
```
When this section is done I just have to print the last line.
But we have an uppercase W that must be produced without using too many characters.
At this point we are here:
```
Address  Value  Pointer
     -4      0  <--
     -3     10
     -2     32
     -1     50
      1     99
      2    111
      3     44
```
so I put [-3] 4 times to [-1] and substract 3 to get 87 (W): `>[>>++++<<-]>>---.`  
then erase it `[-]`  
and move [-2] to this location [-1] so space will be close to the lowercase letters. `<[>+<-]`
After that it just prints the letters. lowercase #1 is for the lower part 97-107
and lowercase #2 is for the above region.
[Answer]
## JavaScript, ~~111~~ 107 chars, without using any number.
Execute these snippets in your browser's JS console:
107 (inspired by <http://xem.github.io/obfuscatweet/> plus the other JS answer):
```
eval(unescape(escape('©°Ø¨†®¨∞Ωò†¨òÄ¢õÅ¥üê¢òÅØô±£´ÅØ®±´ò†¨™êΩÆÄΩô∞ßû∞´ö±©üÄΩúê±û±∏ö∞Ω™ê´ö∞´¨∞´™ê´ö∞´¨∞´™ê´ö∞´≠Ä´¨∞´™ê´≠Ä´ò††¨°Ø®±´õÅú´†¢öêªÆÄ´ò°ó©êß¨°•òÅß´±Æ´°°òÅ≤´±£™∞†®ë≤´±µ´°§òÅ¥™Å•òÅ£´ÅØ®±´òÅ¥´±Æ™ëß™Å¥õ†¢').replace(/uD./g,'')))
```
111 (just packing all the string and removing the eval around):
```
unescape(escape('úê¨òÄ≤õÄ†ú∞†´∞ß®±¨´±£™∞¨òÄ¥òÅØô±£´ÅØ®±´òÅ≤´±£™∞¨í†µõÄ†ù†¨òÄ∑òÅØô±£´ÅØ®±´õÄ†ûÄ†´∞ß®±¨´±£™∞†¨°Ø®±´õÄäûê¨òÄ±úÄ¨òÄ±úê†´∞ß®±¨´±£™∞¨òÄ±ú††´∞ß®±¨´±£™∞†¨°Ø®±´õÄä•±•ô±≤©ê†©±Ø´°Æ®ê†¨°Ø®±´òÅ°¨°Ø≠ëÆ©Ä†≠Å®©ê†®±¨´±£™∞†≠ÅØ´°©©±®≠ÄÆ').replace(/uD./g,''))
```
[Answer]
# C - 145 - [try me](https://ideone.com/CYSgbI)
```
main(i){i<11?main(i-~1+1,printf("%d, %d, %d o'clock, %d o'clock rock,\n"
,i++,i,i-~1,i-~1+1)):puts("We're gonna rock around the clock tonight.");}
```
# C - 172 - [try me](https://ideone.com/zrTCfn)
```
#define l ,__LINE__+~1
#define f ;printf("%d, %d, %d o'clock, %d o'clock rock,\n"
main(){f l
l
l
l)f
l
l
l
l)f
l
l
l
l);puts("We're gonna rock around the clock tonight.");}
```
[Answer]
# PHP - 125 129
**Version 1 (129)**
```
$i;while($i<11)echo++$i.", ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";echo"We're gonna rock around the clock tonight";
```
**Version 2 (125)**
```
while($i++<11)echo"$i, ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";echo"We're gonna rock around the clock tonight";
```
Clean version:
```
while($i++<11)
    echo "$i, ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";
echo "We're gonna rock around the clock tonight";
```
[Answer]
# Perl, 114 111 110 108
```
$s=", X o'clock";$_="X, X$s$s rock,
"x(1+1+1)."We're gonna rock around the clock tonight.";s/X/++$i/eg;print
```
110:
```
$s=", X o'clock";print(("X, X$s$s rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/egr)
```
111:
```
print(("X, X, X o'clock, X o'clock rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/egr)
```
114:
```
($s="X, X, X o'clock, X o'clock rock,
"x(1+1+1)."We're gonna rock around the clock tonight.")=~s/X/++$i/ge;print$s
```
[Answer]
## C++ 261 203
```
#include<iostream>
#define x i++;
#define y std::cout<<
#define z y x y
void m(){for(int i=1;i<11;){z", ";z", ";z" o'clock, ";z" o'clock rock, "<<"\n";}y"We're gonna rock around the clock tonight.";}
```
Edited my first attempt; it worked when I first tested it, but that seems to be a fluke; post-increment in a stream is "undefined behaviour", and it did weird things (including blue screening Windows 7!) when I tried re-running it. I think that using printf instead of std::cout could be used with post-increment to get a shorter program.
Edited again, got it down to 231 by re-implementing the loop.
Edited yet again, now down to 203...those #defines weren't all useful in the looping version.
For those wondering how C++ can run a function "m", the entry point can be defined as any function with just a compiler option, as can setting all funcs to be stdcall; I used both switches when compiling the above. If you don't like the redefined entry point, add 3 to my character count.
[Answer]
# Swift - ~~136~~  134
```
var x=1
for;x<11;{print("\(x++), \(x++), \(x++) o'clock, \(x++) o'clock rock,\n")}
print("We're gonna rock around the clock tonight.")
```
[Answer]
## Java, 228
A hardcoded solution would have probably been shorter. 
```
public static void main(String[] a){
        String s = "";
        int i=1,j=1;
        for(i--,j--;i<=11;){
            s += ++i + (j > 1 ? " o'clock rock, ":", ");
            if(j == "one".length()){
                j -= j;
                s +="\n";
            }else
                j++;
        }
        System.out.println(s+"We're gonna rock around the clock tonight");
}
```
[Answer]
## Befunge-98 (~~402~~ 268)
Now a unefunge!
```
".thginot kcolc eht dnuora kcor annog er'eW"a11+/a*1-> #;:,1+" ,",,:,1+" ,",,:,1+" ,kcolc'o "a1-k,:,1+a",kcor kcolc'o "ek,:a11+/a*b1111+++-+-#;_:,a-1+" ,",,:a111++-:*,,1+" ,",,:a111++-:*,,1+" ,kcolc'o "a1-k,:a111++-:*,,1+a",kcor kcolc'o "ek,:a11+/a*b1111+++-+$$$aa*k,@
```
[Answer]
## Groovy - 140 139 chars
Golfed, influenced by [William Barbosa's answer](https://codegolf.stackexchange.com/a/34670/21004):
```
s="ock"
i=1
f={->println "${i++}, ${i++}, ${i++} o'cl$s, ${i++} o'cl$s r$s,"}
f();f();f()
println "We're gonna r$s around the cl$s tonight"
```
Ungolfed:
```
s = "ock"
i = 1
f = { ->
    println "${i++}, ${i++}, ${i++} o'cl$s, ${i++} o'cl$s r$s,"}
}
f();f();f()
println "We're gonna r$s around the clock tonight"
```
[Answer]
# Mathematica - 153
```
i=1;
StringReplace[
  StringJoin[
    Riffle[{s="X, X, X o'clock, X o'clock rock,",s,s},"\n"]]<>
    "\nWe're gonna rock around the clock tonight.","X":>ToString[i++]]
```
[Answer]
## C++ 252
```
#define P(x) cout<<x
#define Q cout<<", "
#define N cout<<endl
#define C P(" o'clock")
#define R P(" rock")
#define F P(++i);Q;P(++i);Q;P(++i);C;Q;P(++i);C;R;N;
int i;
main()
{
    F F F
    P("We're gonna rock around the clock tonight.");
}
```
[Answer]
# Cobra - 193
```
class P
    var i=1-1
    def main
        print[.f,.f,.f,"We're gonna rock around the clock tonight."].join("")
    def f as String
        return"[[.i+=1,.i+=1,.i+=1].join(", ")] o'clock, [.i+=1] o'clock rock,\n"
```
[Answer]
## Java (v2) - 250 241 232 chars
This is a complete running program, influenced by [William Barbosa's answer](https://codegolf.stackexchange.com/a/34670/21004).
Golfed:
```
public class R{
static int o=1;
static String c(){return o+++", "+o+++", "+o+++" o'clock, "+o+++" o'clock rock,\n";}
public static void main (String[] a){System.out.println(c()+c()+c()+"We're gonna rock around the clock tonight");}}
```
Ungolfed:
```
public class R {
    static int o = 1;
    static String c() { 
        return o+++", "+o+++", "+o+++" o'clock, "+o+++" o'clock rock,\n";
    }
    public static void main (String[] a) {
        System.out.println(c()+c()+c()+"We're gonna rock around the clock tonight");
    }
}
```
[Answer]
# ECMAScript6 - ~~136~~ 135
Doesn't even use the allowed `1` digit:
```
alert([,...a=[s=", ",s,(c=" o'clock")+s,c+" rock,\n"],...a,...a].map((x,i)=>i+x).join("")+"We're gonna rock around the clock tonight.")
```
Tested in Firefox console.
[Answer]
# [Golflua](http://mniip.com/misc/conv/golflua/) -125
Basically a direct translation of [my Lua solution](https://codegolf.stackexchange.com/a/34671/11376):
```
k=1+1o=" o'clock"c=", "~@i=1,11,k+k I.w(i,c,i+1,c,i+k,o,c,i+k+1,o," rock,\n")$w("We're gonna rock around the clock tonight.")
```
[Answer]
## PowerShell, ~~123~~ ~~118~~ 109
```
1,1,1|%{"$('',''," o'clock"," o'clock rock"|%{"$((++$a))$_,"})"}
"We're gonna rock around the clock tonight."
```
After a horrible start (167) I got rid of a few idioms I didn't even need and at least got it shorter than the reference.
[Answer]
## Haskell -- ~~138~~ 137 chars
As a standalone program:
```
r n=show n++s!!n
s=" o'clock rock,\n":c:c:" o'clock, ":s
c=", "
main=putStr$(r=<<)[1..11+1]++"We're gonna rock around the clock tonight."
```
Edit: I used to have a helper function o used to define s by
```
s=o" rock,\n":c:c:o c:s;o=(" o'clock"++)
```
but it turns out to cost 1 extra character. Is there any way to compress all of the "o'clock"s / "rock"s / "ock"s?
[Answer]
## JavaScript, 140
```
a=", x o'clock",b="x, x"+a+a+" rock,\n",b+=b+=b+"We're gonna rock around the clock 
tonight.";for(i=1;i<=11+1;)b=b.replace("x",i++);alert(b)
```
I make a string like "x, x, x o'clock x o'clock rock,\n..." Then I replace the "x's" with numbers.
[Answer]
# PHP 150
No numbers, including the 11 which would not be two 1's stuck together, but the number value eleven.
```
function f(){static $i;echo++$i.", ".++$i.", ".++$i." o'clock, ".++$i." o'clock rock,\n";}f();f();f();echo"We're gonna rock around the clock tonight";
```
]