 |
CLIP Score: 26.41
from AIDL import *
def city_skyline(
buildings: list = [
{'width': 30, 'height': 100, 'x': -50, 'y': 0},
{'width': 50, 'height': 150, 'x': 0, 'y': 0},
{'width': 40, 'height': 120, 'x': 60, 'y': 0}
]):
"""
Create a model of a city skyline with a specified list of buildings.
Each building is a dictionary with width, height, and (x, y) position.
"""
skyline = Assembly()
for i, building in enumerate(buildings):
building_solid = Solid(shift=(building['x'], building['y']))
building_solid.body = Rectangle((0, building['height']/2), building['width'], building['height'])
setattr(skyline, f'building_{i}', building_solid)
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a city skyline
Creating a city skyline involves representing various buildings with different heights and widths. We can use a combination of rectangles to represent the buildings. Let's define a simple model with three distinct buildings of varying heights and widths.
```python
from AIDL import *
def city_skyline(
buildings: list = [
{'width': 30, 'height': 100, 'x': -50, 'y': 0},
{'width': 50, 'height': 150, 'x': 0, 'y': 0},
{'width': 40, 'height': 120, 'x': 60, 'y': 0}
]):
"""
Create a model of a city skyline with a specified list of buildings.
Each building is a dictionary with width, height, and (x, y) position.
"""
skyline = Assembly()
for i, building in enumerate(buildings):
building_solid = Solid(shift=(building['x'], building['y']))
building_solid.body = Rectangle((0, building['height']/2), building['width'], building['height'])
skyline[f'building_{i}'] = building_solid
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
```
This program defines the function `city_skyline` which takes a list of buildings. Each building is described by its width, height, and (x, y) coordinates to decide its position relative to others. These buildings are created as `Solid` structures and then assembled into the `Assembly` node representing the skyline.
Feel free to tweak the list of buildings or add more buildings to create a more complex skyline. You can also adjust the positions, widths, and heights to better represent the cityscape you have in mind.
Traceback (most recent call last):
File "/net/projects/ranalab/jz/aidl/AIDL/generation/backend.py", line 21, in dumbrun
exec(code, env)
File "", line 25, in
File "", line 20, in city_skyline
TypeError: 'Assembly' object does not support item assignment
My apologies for that mistake. I incorrectly used item assignment with the `Assembly` object. Instead, we will use the dot notation to add each building as a named attribute. Let's correct the AIDL program:
```python
from AIDL import *
def city_skyline(
buildings: list = [
{'width': 30, 'height': 100, 'x': -50, 'y': 0},
{'width': 50, 'height': 150, 'x': 0, 'y': 0},
{'width': 40, 'height': 120, 'x': 60, 'y': 0}
]):
"""
Create a model of a city skyline with a specified list of buildings.
Each building is a dictionary with width, height, and (x, y) position.
"""
skyline = Assembly()
for i, building in enumerate(buildings):
building_solid = Solid(shift=(building['x'], building['y']))
building_solid.body = Rectangle((0, building['height']/2), building['width'], building['height'])
setattr(skyline, f'building_{i}', building_solid)
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
```
In this version, I used `setattr` to add each building to the `skyline` Assembly. This should fix the TypeError and allow you to generate the city skyline successfully. Give it a try and let me know if it works!
|