class Damen def initialize print "n = " n = gets.to_i if n < 4 puts "Ungueltiges n -- setze n = 4." n = 4 end if n > 26 puts "Ungueltiges n -- setze n = 26." n = 26 end print "\n" @max_n = n @damen = [] n.times { @damen += [0] } @loesungen = 0 end def bedroht (n) for i in 1..n m = n - i if @damen[n] == @damen[m] or @damen[n] == @damen[m] - i or @damen[n] == @damen[m] + i return TRUE end end return FALSE end def dame (n) while @damen[n] < @max_n @damen[n] += 1 if not bedroht(n) if n < @max_n - 1 m = n + 1 @damen[m] = 0 dame(m) else print_loesung end end end return FALSE end def print_loesung for i in 0...@damen.length buchstabe = (65 + i).chr zahl = @damen[i] dame = i + 1 print "Dame #{dame}: #{buchstabe}#{zahl}\n" end @loesungen += 1 print "\n" #exit end def loese dame(0) puts "#@loesungen Loesungen" end end dame = Damen.new dame.loese