繁体   English   中英

需要帮助使用 Python 中的数字制作希尔伯特曲线

[英]Need help making a Hilbert Curve using numbers in Python

我想制作一个 function ,它将使用数字在 python 中创建希尔伯特曲线。 function 的参数将是一个数字,它将告诉 function 它应该重复多少次。 要制作希尔伯特曲线,您从“L”开始,然后变成“+RF-LFL-FR+”,然后“R”变成“-LF+RFR+FL-”我该怎么做?

#Here is what I've made so far
def hilbert(num):
  s = 'L'
  for i in range(num-1):
    s = s.replace('L','+RF-LFL-FR+')
    b = 'R'
    for i in range(num-1):
      b = b.replace('R','-LR+RFR+FL-')
      end = s + b
  return end

当您输入 1 时它完全崩溃,我尝试使用我为 Koch 雪花制作的代码,但我不确定如何使用这两个变量。

#Here is the results for when I use the function
hilbert(1)
#It returns
a crash bruh
hilbert()
#It returns 
'+RF-+RF-LFL-FR+F+RF-LFL-FR+-FR+-L-LR+RFR+FL-+-LR+RFR+FL-F-LR+RFR+FL-+FL-'


#Here is what I want it to return
hilbert(1)
'L'
hilbert(3)
'+-LF+RFR+FL-F-+RF-LFL-FR+F+RF-LFL-FR+-F-LF+RFR+FL-+'

我不擅长范围循环,我该怎么做?

在您提供的代码中,您正在使用 #1 作为输入进行测试。 在这种情况下:

for i in range(num-1):

未完成,并且您的 for 循环从未初始化,因为您的 i 已经超出了该范围。

您可以在下面看到一个示例代码,您可以在使用希尔伯特曲线时将其用作参考:

import turtle

turtle.speed(speed=10)  # Fastest

hilbert_seq = "a"

for _ in range(5):
    new_seq = ""
    for char in hilbert_seq:
        if char == "a":
            new_seq += "-bF+aFa+Fb-"
        elif char == "b":
            new_seq += "+aF-bFb-Fa+"
        else:
            new_seq += char
    hilbert_seq = new_seq

for char in hilbert_seq:
    if char == "F":
        turtle.forward(9)
    elif char == "+":
        turtle.right(90)
    elif char == "-":
        turtle.left(90)

上述示例代码的屏幕截图:

希尔伯特曲线运行乌龟图形实现截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM