title: Generate "scattered" items, that do not overlap
body: <p>This is a question that i had to solve, but have been banging my head against a wall for the past 5 days. There must be something really simple that i am missing, or misunderstanding, as the logic seems 100% correct in my head, but it just won't work. </p>
  
  <p>I need to draw "scattered" houses, that do not over lap, 100 of them.
  I have to use turtle to draw them, so i have X and Y coordinates. 
  And X and Y list for verification purposes, to see if a house is already in that place.</p>
  
  <p>What i am doing is drawing a "house" (square with a triangle on top)  on the randomized coordinates, 
  I loop while the number of houses is less than 100.
  On each loop i randomize the x and y coordinates, from where i start drawing each house with turtle.
  I check if the value is already in the X and Y verification lists, and also if my new X and Y are +/- the size of the house (treating it as a square) </p>
  
  <pre><code>import turtle
  import time
  import random
  t = turtle.Turtle()
  turtle.screensize(1920,1000)
  x_verif = []
  y_verif = []
  t.speed(0)
  collision = None
  
  
  def square():
      for s in range(0, 4):
          t.forward(90)
          t.left(90)
  
  def triangle():
      for s in range(0, 2):
          t.left(-60)
          t.forward(52)
  
  def house():
      square()
      t.left(90)
      t.forward(90)
      triangle()
  
  def scatter():
      print("a")
      house()
      x1 = random.randint(-850, 850)
      y1 = random.randint(-380, 380)
      count = 0
      while count &lt; 100:
          print("a2")
          i = 0
          u = 0
          collision = False
          for  tries in range (0, 2):
              print("a3")
              x_verif.append(x1)
              y_verif.append(y1)
          while u &lt; 100:
              print("a4")
  
              print(x_verif, y_verif, x1, y1)
              while i &lt; len(x_verif):
                  x1 = random.randint(-850, 850)
                  y1 = random.randint(-380, 380)
                  print(x1, y1)
                  if x1 not in x_verif and (x1 &gt; x_verif[i]+91 or x1 &lt; x_verif[i]-91):
                      if y1 not in y_verif and (y1 &gt; y_verif[i]+142 or y1 &lt; y_verif[i]-142):
                          collision = False
                  else:
                      collision = True
              if collision == False:
                              t.penup()
                              t.hideturtle()
                              t.setx(x1)
                              t.sety(y1)
                              t.pendown()
                              house()
                              x_verif.append(x1)
                              y_verif.append(y1)
                              count += 1
                  i+= 1
          u += 1
  
  
  scatter()
  </code></pre>
  
  <p>Sorry for the ugly code, and the simplicity behind it. I would love to use list comprehensions for this, but i do not know where my logic fails at the moment. This is like my 100th try, as of this version it only draws the initial house and i think it loops infinitely somewhere.... </p>
  
  <p>My problem lies in looping through the whole lists for every new value. Do i need to loop through them every time, or is there some IF condition that I can use?  Edit: It keeps on looping through random values, but none of them are accepted by the two IF statements that i'm using.</p>
  
  <p>On a side note: With my current code they also change direction of drawing every time... No idea why is that happening.... </p>
  
  <p>Edit: I am very thankful for all the solutions! I'm struggling with the note at the beginning of the question. It says that it should only take a couple more lines to do the last one, compared to the first one..... Are they joking? <a href="https://i.stack.imgur.com/wWNVo.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wWNVo.png" alt="questions"></a></p>