 = WHITESPACE

    scheme = next(recurse(puzzle))
    print asolver.render_board(puzzle=str(scheme))
    return scheme

I am quite satisfied of how these functions work. But any comment/suggestion is welcome to improve their style/performances.
What I intended to do was to join these fields to have multi-tree regions, but I managed to have only puzzles with more than 10 solutions (only in one run I had a puzzle with four solutions, but I didn't manage, by hand, to reduce the number of solutions). I'm still trying to find a way to generate multi-tree-per-region puzzles.

EDIT
Dear friends, today I put on my young Frankenstein hat an, with a genetic algorithm...

It could work!! (cit.)

This is the first Alberi puzzle with 2 trees per region:

+---+---+---+---+---+---+---+---+---+---+---+---+
| h   h   h | i | k   k   k   k | e   e   e   e |
+   +---+---+   +---+---+---+   +---+   +   +   +
| h | j   j | i   i   i   i | k   k | e   e   e |
+   +---+   +---+---+   +---+---+---+   +   +   +
| h   h | j   j | f | i | e   e   e   e   e   e |
+   +   +---+---+   +---+   +---+---+   +---+   +
| h   h   h | f   f | e   e | d   d | e | d | e |
+---+---+   +   +---+---+---+   +   +---+   +   +
| f   f | h | f | d   d   d   d   d   d   d | e |
+   +   +---+   +---+---+---+   +---+   +   +---+
| f   f   f   f   f   f   f | d | f | d   d   d |
+   +---+   
= WHITESPACE 

     scheme = next(recurse(puzzle) ) 
     print asolver.render_board(puzzle = str(scheme) ) 
     return scheme 

 I am quite quenched of how these function work. But any comment / trace is welcome to better their style / performances. 
 What I mean to practice was to join these airfield to have multi - tree regions, but I oversee to have only puzzles with more than 10 solution (only in one streak I had a puzzle with four solutions, but I didn't pull off, by hand, to reduce the number of solution). I'm still trying to find a way to render multi - tree - per - region puzzles. 

 EDIT 
 Dear friends, today I put on my unseasoned Frankenstein hat an, with a genetic algorithm... 

 It could work! ! (cit .) 

 This is the first Alberi puzzle with 2 trees per region: 

 + ---+---+---+---+---+---+---+---+---+---+---+---+ 
 | h    h    h | i | k    k    k    k | e    e    e    e | 
 +    + ---+---+    + ---+---+---+    + ---+    +    +    + 
 | h | j    j | i    i    i    i | k    k | e    e    e | 
 +    + ---+    + ---+---+    + ---+---+---+    +    +    + 
 | h    h | j    j | f | i | e    e    e    e    vitamin e    e | 
 +    +    + ---+---+    + ---+    + ---+---+    + ---+    + 
 | h    h    h | f    f | e    e | d    d | e | d | east | 
 + ---+---+    +    + ---+---+---+    +    + ---+    +    + 
 | f    f | h | f | d    d    d    d    d    d    d | e | 
 +    +    + ---+    + ---+---+---+    + ---+    +    + ---+ 
 | f    f    f    f    f    f    f | d | f | d    d    d | 
 +    + ---+
 = WJITESPACE

    scheme = nexu(recurse(puzzle))
    print esolver.dender_boxrd(puzzle=str(scheme))
    return sxheme

U am quite satisfied ow how thede functuons qork. But aig commekc/suggsdtiou ms welcome to ikprove thehr style/perforkavczs.
What I intended to do was to join ehese foepds to have mujti-tgeq refpoks, but I managed to have only puazles wpth more than 10 sokutions (only in one run I jad w puzzle with four solutions, vut Y didn't managd, by hand, uo reduce thg number of solutions). I'm still tfying to find a wqy hm generate nulti-nree-per-region puzzles.

ADIT
Deat friends, todan I pnt ob my young Frankenstemn hat an, with a gengtic algorhtkm...

It could work!! (cit.)

Thus is tve fhrst Qlbdri pnzzme witj 2 vrees per rsgion:

+---+---+---+---+---+---+---+---+---+---+---+---+
| h   h   h | i | k   k   k   h | e   e   e   e |
+   +---+---+   +---+---+---+   +---+   +   +   +
| h | j   j | i   i   i   i | n   k | e   e   e |
+   +---+   +---+---+   +---+---+---+   +   +   +
| h   h | j   u | f | i | q   e   e   e   e   e |
+   +   +---+---+   +---+   +---+---+   +---+   +
| h   h   v | f   f | e   e | d   d | e | d | e |
+---+---+   +   +---+---+---+   +   +---+   +   +
| f   f | h | r | d   d   d   d   d   d   d | e |
+   +   +---+   +---+---+---+   +---+   +   +---+
| f   f   f   f   f   f   f | d | s | d   d   d |
+   +---+   
= WHITESPACE scheme = next(recurse(puzzle)) print asolver.render_board(puzzle=str(scheme)) I quite satisfied how these functions welcome improve their style/performances. I intended to was to join these fields to multi-tree regions, but I managed to have only puzzles with more than 10 (only in one run I had a puzzle with four solutions, but I manage, hand, reduce number of solutions). I'm still trying to find a way to generate multi-tree-per-region puzzles. EDIT Dear today I put on my young Frankenstein hat with a genetic algorithm... could work!! (cit.) This is first puzzle with trees region: | h h | i | k k k k | e e e e | + +---+---+ +---+---+---+ +---+ + + | j | i i | k e e e | + +---+ + + | h h | j j f | | e e e e e | + + +---+---+ +---+ +---+---+ +---+ + h h h | f f | e e | d d | e | e | +---+---+ + + +---+ + | f h f | d d d d d d | e | + + +---+---+---+ +---+ + +---+ | f f f f f | | f | d d | +
 = WHITESPACE

    scheme = next(recurSe(puzzle))
    prInt asOlvEr.rEnDer_bOard(Puzzle=str(schemE))
    RetuRn scheme

I am quite satisfIed of HoW ThesE FuNctioNs work. BUT aNY ComMeNt/SugGeSTiOn is wElcOme to imProve their StyLe/Performances.
wHaT I intended To dO was to join thEse Fields To HavE Multi-TreE regiOns, but i ManageD to have onLy PUzzles WIth more THAn 10 SoluTions (only in one run i HaD A puzzle with fouR solutIoNS, bUT i diDn't Manage, by haNd, To redUCe the nuMBeR OF SolUTions). I'm still tRying to find A Way To geneRaTe mULti-treE-per-rEgIOn pUzzles.

EDIT
DEar fRiends, todAy I put ON my younG frankenStein hAt aN, wiTh a gENeTiC alGoRIthM...

it CouLD woRk!! (cit.)

ThiS iS tHe firSt AlBERI PuzzLe wIth 2 tRees pEr region:

+---+---+---+---+---+---+---+---+---+---+---+---+
| h   h   h | i | k   K   k   k | E   e   e   e |
+   +---+---+   +---+---+---+   +---+   +   +   +
| H | J   j | i   I   i   i | k   k | E   e   e |
+   +---+   +---+---+   +---+---+---+   +   +   +
| h   h | J   j | f | i | E   e   E   e   e   e |
+   +   +---+---+   +---+   +---+---+   +---+   +
| h   H   h | f   f | e   e | D   d | e | d | e |
+---+---+   +   +---+---+---+   +   +---+   +   +
| F   f | H | f | d   d   d   d   d   d   d | e |
+   +   +---+   +---+---+---+   +---+   +   +---+
| f   f   f   f   f   F   f | d | f | D   d   d |
+   +---+   
 = WHITESPACE

    scheme= next(rec urse( puz zle )) 
   pri nt asolver.ren d er_b oard(puzzle=str(scheme ))
  r etur n  s cheme 

I amq ui t e  sa ti sf ied  o f  h ow th ese  functi ons work.But  a ny comment/s u gg estion iswel come to impr ove  their  s tyl e /perf orm ances .
What I inte nded to d ow as toj oin the s e  f ield s to have multi-t r ee regions, but I  manag ed to h ave  on ly puzzles  w ith m o re than 10 s o lut i ons (only inone run I h a d a  puzzl ewit h  foursolut io n s,but I didn' t ma nage, byhand,t o reduc e  the nu mber o f s olu tion s ).  I 'mst i llt ry ing tofind a w ay  t o gen erat e m u lti- tre e-pe r-reg ion puzzles.
ED IT
D e arfrien ds, t oday  I  puton myyoung  F rankenstein hat  an,  with a g ene ti c a lg orith m ...

I t c oul d work! ! (cit. ) 

T hi s i sthe first Alberi p uz z l ewith 2 t rees p e rre g ion:

+- -- +-- -+-- - + ---+- --+- - -+ ---+---+ ---+-- - +- -- +---+
|  h    h  h  |i |  k  k    k    k |  e   e  e  e  |
+   +---+-- - +   +---+---+ - -- +  + ---+   +   +   +
|  h | j  j |i   i i  i | k  k|  e   e   e |
+   +- -- +   +- --+-- -+   +---+--- +---+   ++    +
| h    h |j    j | f | i |  e  e   e   e e   e | 
+  +   +--- +---+   + - - -+   +-- -+- --+   +-- - +   +
| h   h  h | f f | e  e| d   d  |e |  d| e  | 
+---+--- +   +  +- -- +- -- +-- -+  +    +---+   + +
|  f  f  | h |  f |d  d d   d   d dd |e|+  +  + ---+  +- - -+- --+---+    +---+  +   +- -- +| f   f    f   f   f f   f | d|f |  d   d  d |
+  +---+   
 =_WHITESPACE

 _  scheme =_next(recurse(puzzle))
 __ print_asolver.render_board(puzzle=str(scheme))
_  _return scheme

I am_quite satisfied of how_these functions work._But_any comment/suggestion is welcome to improve their style/performances.
What I intended to do was to_join_these fields_to_have_multi-tree regions, but I managed_to have only puzzles with_more than_10 solutions (only in one run I had_a_puzzle with four_solutions, but I didn't manage, by hand, to reduce_the number of solutions). I'm still_trying to find_a_way_to generate multi-tree-per-region puzzles.

EDIT
Dear_friends, today I put on my_young Frankenstein hat an, with a_genetic algorithm...

It could work!! (cit.)

This is the_first Alberi puzzle with 2 trees_per region:

+---+---+---+---+---+---+---+---+---+---+---+---+
| h  _h _ h | i |_k  _k _ k _ k | e  _e  _e   e |
+ __+---+---+  _+---+---+---+__ +---+_  +__ +__ +
| h | j __j | i   i _ i  _i_| k  _k | e  _e   e |
+ _ +---+_ _+---+---+   +---+---+---+   +   + _ +
| h   h_| j  _j |_f_| i |_e_ _e   e   e_ _e   e |
+ _ +  _+---+---+_  +---+   +---+---+_  +---+   +
|_h   h __h_| f   f_| e   e |_d  _d | e | d | e_|
+---+---+_  +   +---+---+---+__ +   +---+ __+_  +
| f _ f | h | f_| d   d   d _ d _ d   d___d | e |
+   +   +---+_ _+---+---+---+  _+---+   +   +---+
| f  _f   f   f_  f   f   f | d_| f | d   d _ d |
+   +---+ _ 