[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:4956] Re: Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions

From: Mathieu Bouchard <matju@...>
Date: 2000-09-17 05:34:03 UTC
List: ruby-talk #4956
> Writing an 8-queens program this morning (teaching my 12-year old son
> about recursion!), I found that "any" led to an easy translation of "can
> I put a queen in any of these columns and get a solution" into concise
> code which did exactly what I wanted.  (see
> http://www.cs.iastate.edu/~slagell/ruby/queens.rb) 

I will post here an independently produced solution (i saw your page
slightly after). The #find and #find_with_index are playing the role of
'any' here.

class Array; def find_with_index
    each_with_index {|x,i| return x if yield(x,i) }
end; end

def queens(a,&f)
  return yield(a) if a.length == 8
  (1..8).each {|u|
    next if a.find {|x| x == u}
    next if a.find_with_index {|x,i| x-i == u-a.length}
    next if a.find_with_index {|x,i| x+i == u+a.length}
    queens(a+u, &f)
  }
end

queens([]) {|a| p a}



PS: note that there are faster/smaller implementations
____________________________________________________
matju




In This Thread

Prev Next