Eeny, meeny, miny, moe
Pyth, 103 89 84 chars
Saved 18 bytes with string compression, thanks to @Dennis and @FryAmTheEggman
Saved another byte thanks to @isaacg
Warning: there are many unprintables in the code; use the links below to try it.
VQjd%Q>cs[J."@y)òÎ5O¹c×Ú"."@yæ\J}ÇZH66¥ÓÀD¸¶=ðÉ §J%ÔþÖúÅ="J"MOE!")\@N
Try it online | Test suite
Could probably be golfed. Suggestions welcome!
How it works
VQjd%Q>cs[J."..."."..."J"MOE!")\@N Implicit: Q = eval(input)
VQ For each item N in range 0...int(Q):
[ ) Create an array out of the following:
J."..." Set J to this string, decompressed. ("Eeny@meeny@miny@")
."..." This string, decompressed. ("moe@[email protected]@him@go@")
J J.
"MOE!" "MOE!".
s Join the array with the empty string.
c \@ Split the result on "@".
> N Cut off the first N items.
%Q Take every Qth item.
jd Join with spaces.
Jelly, 84 bytes
“£Dṡ“Ṙ©“Ė“¡Ḳ⁵“=U“¡Ẹ⁵“¡Ṇm“ȯf“ŀQ“ÞṖċ¥“ṅ_“Ẉ1“¡æḷ“¡ƒmxĠ“¡ṇƭEỤr“¡Þ¦»ṫ-2;;“MOE!”W¤sƓZj€⁶j⁷
Try it online!
JavaScript (ES6), 167 bytes
l=Array(n=+prompt()).fill``;`${s=`Eeny meeny miny `}moe Catch a tiger by the toe If he hollers let him go ${s}MOE!`.split` `.map((w,i)=>l[i%n]+=w+` `);alert(l.join`
`)
Explanation
l=Array( // l = array of lines
n=+prompt() // n = input number
).fill``; // initialise l as empty strings
`${s=`Eeny meeny miny `}moe Catch a tiger by the toe If he hollers let him go ${s}MOE!`
.split` `.map((w,i)=> // for each word w
l[i%n]+=w+` ` // add it to the lines
);
alert(l.join`
`) // output the lines