 |
CLIP Score: 25.37
from AIDL import *
def city_skyline(building_heights=None, building_widths=None):
if building_heights is None:
building_heights = [5*inches, 7*inches, 3*inches, 6*inches, 4*inches, 8*inches]
if building_widths is None:
building_widths = [1*inch, 1.5*inches, 1*inch, 2*inches, 1*inch, 1.5*inches]
skyline = Solid()
# Define each building as a rectangle with varying widths and heights
n_buildings = min(len(building_heights), len(building_widths))
for i in range(n_buildings):
building = Solid()
building.rect = Rectangle((0,0), building_widths[i], building_heights[i])
building.shift = (sum(building_widths[:i]), 0)
skyline.__setattr__(f"building{i}", building)
# Align buildings side by side
previous_building = None
for i in range(n_buildings):
current_building = getattr(skyline, f"building{i}")
if previous_building:
skyline.AddConstraint(current_building.bb.left == previous_building.bb.right)
skyline.AddConstraint(current_building.bb.bottom == skyline.bb.bottom)
previous_building = current_building
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a city skyline
Alright! Let's create an AIDL program to generate a city skyline. Here's the plan:
1. We'll define a `Solid` structure for the skyline.
2. The skyline will consist of multiple buildings. Each building will be a `Solid` with a different height and width.
3. We'll use rectangles to represent the buildings.
4. We'll add constraints to position these buildings side by side with varying heights.
Let's start the process step-by-step. First, I'll define the function and basic structure.
```python
from AIDL import *
def city_skyline(building_heights=None, building_widths=None):
if building_heights is None:
building_heights = [5*inches, 7*inches, 3*inches, 6*inches, 4*inches, 8*inches]
if building_widths is None:
building_widths = [1*inch, 1.5*inches, 1*inch, 2*inches, 1*inch, 1.5*inches]
skyline = Solid()
# Define each building as a rectangle with varying widths and heights
n_buildings = min(len(building_heights), len(building_widths))
for i in range(n_buildings):
building = Solid()
building.rect = Rectangle((0,0), building_widths[i], building_heights[i])
building.shift = (sum(building_widths[:i]), 0)
skyline.__setattr__(f"building{i}", building)
# Align buildings side by side
previous_building = None
for i in range(n_buildings):
current_building = getattr(skyline, f"building{i}")
if previous_building:
skyline.AddConstraint(current_building.bb.left == previous_building.bb.right)
skyline.AddConstraint(current_building.bb.bottom == skyline.bb.bottom)
previous_building = current_building
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
```
In this code:
1. I defined the city skyline function with optional parameters for `building_heights` and `building_widths`.
2. Created a `Solid` structure for the skyline.
3. Created several `Solid` structures for each building with a rectangular shape.
4. Added constraints to align the buildings side by side and their bottoms aligned.
5. Each building is positioned to the right of the previous one by adjusting the shift.
Please review the code and let me know if there are any specific adjustments you'd like to make or any additional details you'd like to add!
|