-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sweep: write mandelbrot/Simple
in Python
#21
Comments
🚀 Here's the PR! #23See Sweep's progress at the progress dashboard! ⚡ Sweep Basic Tier: I'm using GPT-4. You have 1 GPT-4 tickets left for the month and 2 for the day. (tracking ID:
303b4671ee )For more GPT-4 tickets, visit our payment portal. For a one week free trial, try Sweep Pro (unlimited GPT-4 tickets). Tip I'll email you at [email protected] when I complete this pull request! Actions (click)
GitHub Actions✓Here are the GitHub Actions logs prior to making any changes: Sandbox logs for
|
#!/usr/bin/env php | |
<?php | |
function index() | |
{ | |
for ($y = -39; $y < 39; $y++) { | |
printf("\n"); | |
for ($x = -39; $x < 39; $x++) { | |
$i = mandelbrot( | |
$x / 40.0, | |
$y / 40.0 | |
); | |
if ($i == 0) { | |
printf("*"); | |
} else { | |
printf(" "); | |
} | |
} | |
} | |
printf("\n"); | |
} | |
function mandelbrot($x, $y) | |
{ | |
$cr = $y - 0.5; | |
$ci = $x; | |
$zi = 0.0; | |
$zr = 0.0; | |
$i = 0; | |
while (1) { | |
$i++; | |
$temp = $zr * $zi; | |
$zr2 = $zr * $zr; | |
$zi2 = $zi * $zi; | |
$zr = $zr2 - $zi2 + $cr; | |
$zi = $temp + $temp + $ci; | |
if ($zi2 + $zr2 > 16) { | |
return $i; | |
} | |
if ($i > 5000) { | |
return 0; | |
} | |
} | |
} | |
(function () { | |
$startTimeMs = floor(microtime(true) * 1000); | |
index(); | |
$endTimeMs = floor(microtime(true) * 1000); | |
$durationMs = $endTimeMs - $startTimeMs; | |
echo "Execution time: " . $durationMs . "ms\n"; |
benchmarks/javascript/mandelbrot/Simple.js
Lines 1 to 63 in 83886b9
#!/usr/bin/env node | |
'use strict'; | |
function index() | |
{ | |
for (var y = -39; y < 39; y++) { | |
process.stdout.write("\n"); | |
for (var x = -39; x < 39; x++) { | |
var i = mandelbrot( | |
x / 40.0, | |
y / 40.0 | |
); | |
if (i == 0) { | |
process.stdout.write("*"); | |
} else { | |
process.stdout.write(" "); | |
} | |
} | |
} | |
process.stdout.write("\n"); | |
} | |
function mandelbrot(x, y) | |
{ | |
var cr = y - 0.5; | |
var ci = x; | |
var zi = 0.0; | |
var zr = 0.0; | |
var i = 0; | |
while (1) { | |
i++; | |
var temp = zr * zi; | |
var zr2 = zr * zr; | |
var zi2 = zi * zi; | |
zr = zr2 - zi2 + cr; | |
zi = temp + temp + ci; | |
if (zi2 + zr2 > 16) { | |
return i; | |
} | |
if (i > 5000) { | |
return 0; | |
} | |
} | |
} | |
(async function() { | |
const startTimeMs = new Date().getTime(); | |
index(); | |
const endTimeMs = new Date().getTime(); | |
const durationMs = endTimeMs - startTimeMs; | |
console.log(`Execution time: ${durationMs}ms`); |
benchmarks/ruby/mandelbrot/Simple.rb
Lines 1 to 55 in 83886b9
def index | |
for y in -39..39 | |
puts | |
for x in -39..39 | |
i = mandelbrot( | |
x / 40.0, | |
y / 40.0 | |
) | |
if i == 0 | |
print("*") | |
else | |
print(" ") | |
end | |
end | |
end | |
puts | |
end | |
def mandelbrot(x, y) | |
cr = y - 0.5 | |
ci = x | |
zi = 0.0 | |
zr = 0.0 | |
i = 0 | |
loop do | |
i += 1 | |
temp = zr * zi | |
zr2 = zr * zr | |
zi2 = zi * zi | |
zr = zr2 - zi2 + cr | |
zi = temp + temp + ci | |
if zi2 + zr2 > 16 | |
return i | |
end | |
if i > 5000 | |
return 0 | |
end | |
end | |
end | |
startTimeMs = Time.now.to_f * 1000 | |
index | |
endTimeMs = Time.now.to_f * 1000 | |
durationMs = (endTimeMs - startTimeMs).to_i |
benchmarks/python/benchmark.yml
Lines 1 to 21 in 83886b9
title: 'Python' | |
strategy: | |
matrix: | |
command: | |
- title: 'CPython' | |
command: 'python3 %s' | |
- title: 'PyPy' | |
command: 'pypy3 %s' | |
tags: | |
- Alternative | |
files: | |
- linpack/Linpack.py | |
- primes/Atkin.py | |
- treap/Naive.py | |
- recursion/Tak.py | |
- primes/Simple.py |
Step 2: ⌨️ Coding
Create python/mandelbrot/Simple.py with contents:
• Begin by importing the necessary modules at the top of the file: `import time`.
• Define the `mandelbrot` function that takes `x` and `y` as parameters. This function should replicate the logic found in the snippets from PHP, JavaScript, and Ruby, adapted to Python's syntax. Use a while loop to iterate until the conditions are met, and return the iteration count or 0 based on the conditions specified in the snippets.
• Define the `index` function that contains two nested for loops to iterate over a range of x and y values, calling the `mandelbrot` function for each pair of coordinates. Print "*" or a space based on the return value of the `mandelbrot` function, similar to the logic in the provided snippets.
• At the bottom of the file, add a script execution block that measures the execution time of the `index` function. Use `time.time()` to get the current time in seconds at the start and end of the execution, calculate the duration, and print it.
• Ensure that the script follows Python's best practices for readability and efficiency.
- Running GitHub Actions for
python/mandelbrot/Simple.py
✓ Edit
Check python/mandelbrot/Simple.py with contents:Ran GitHub Actions for 5bbec6805368f6004915ec190c16acbd717bf3a0:
Modify python/benchmark.yml with contents:
• After the line mentioning `- primes/Simple.py`, add a new line to include the Mandelbrot benchmark script in the benchmark suite: `- mandelbrot/Simple.py`.
• This modification registers the new Python implementation of the Mandelbrot benchmark, allowing it to be executed as part of the suite's benchmarks.--- +++ @@ -20,3 +20,4 @@ - recursion/Tak.py - primes/Simple.py - collatz/MaxSequence.py + - mandelbrot/Simple.py
- Running GitHub Actions for
python/benchmark.yml
✓ Edit
Check python/benchmark.yml with contents:Ran GitHub Actions for 3607879ff8b92fa148d94f3f6ccf23757a8e07af:
Step 3: 🔁 Code Review
I have finished reviewing the code for completeness. I did not find errors for sweep/write_mandelbrotsimple_in_python
.
🎉 Latest improvements to Sweep:
- New dashboard launched for real-time tracking of Sweep issues, covering all stages from search to coding.
- Integration of OpenAI's latest Assistant API for more efficient and reliable code planning and editing, improving speed by 3x.
- Use the GitHub issues extension for creating Sweep issues directly from your editor.
💡 To recreate the pull request edit the issue title or description. To tweak the pull request, leave a comment on the pull request.Something wrong? Let us know.
This is an automated message generated by Sweep AI.
Details
Implement mandelbrot/Simple benchmark in Python, and put it into python/mandelbrot/Simple.py.
You MUST implement it exactly in the same way as in other languages examples: php/mandelbrot/Simple.php, javascript/mandelbrot/Simple.js, ruby/mandelbrot/Simple.rb. Add script to python/benchmark.yaml
Here are other examples of out Python code: python/primes/Atkin.py. Use it to se how collect and report execution time.
Checklist
python/mandelbrot/Simple.py
✓ 5bbec68 Editpython/mandelbrot/Simple.py
✓ Editpython/benchmark.yml
✓ 3607879 Editpython/benchmark.yml
✓ EditThe text was updated successfully, but these errors were encountered: