Fairy chess "leaper" movement patterns
Ruby,107
-&gt;a,b,n{(-b..b).map{|i|s='..'*b+?.
i%b==0&amp;&amp;(i==0?s[b]=n :s[b+a]=s[b-a]=?o)
i.abs==a&amp;&amp;s[0]=s[-1]=?o
puts s}}

Ungolfed in test program
f=-&gt;a,b,n{
  (-b..b).map{|i|                           #iterate from -i to i (lines of grit)
    s='..'*b+?.                             #make a string of 2n+1 .'s
    i%b==0&amp;&amp;(i==0?s[b]=n :s[b+a]=s[b-a]=?o) #if i%b=0 plot the centre character (if i=0) or the o's on the top and bottom rows
    i.abs==a&amp;&amp;s[0]=s[-1]=?o                 #if i.abs=a plot the o's in left and right columns
    puts s                                  #having substituted the .'s with o and centre as necessary, output the current line
  }
}

a=gets.to_i
b=gets.to_i
n=gets.chop
f[a,b,n]