数字的无限螺旋:打印邻居

时间:2016-11-15 15:11:46

标签: python python-3.x

我该如何开始?不知道怎么写这个,特别是因为我不明白“维度”是什么意思。非常感谢一些帮助。

考虑以方形螺旋布置的自然数,其中1代表螺旋的中心。该螺旋的中心11×11子集如下表所示。

111 112 113 114 115 116 117 118 119 120 121
110 73  74  75  76  77  78  79  80  81  82
109 72  43  44  45  46  47  48  49  50  83
108 71  42  21  22  23  24  25  26  51  84
107 70  41  20  7   8   9   10  27  52  85
106 69  40  19  6   1   2   11  28  53  86
105 68  39  18  5   4   3   12  29  54  87
104 67  38  17  16  15  14  13  30  55  88
103 66  37  36  35  34  33  32  31  56  89
102 65  64  63  62  61  60  59  58  57  90
101 100 99  98  97  96  95  94  93  92  91

这个螺旋有几个有趣的特征。东南对角线上有几个素数(3,13,31,57和91)。西南对角线上的素数(5,17,37)浓度较弱。

为了构建螺旋线,我们从中间的1开始,右边是2,右边是3,左边是4,依此类推。这项任务的一部分问题是找出填充螺旋尺寸的规则。获得该规则后,您可以完成剩下的任务。

您将提示用户输入以下信息:

输入维度:57 以螺旋形输入数字:42

第一行表示方形螺旋的尺寸。这个数字应该是一个奇数。如果不是,则选择维度为下一个更高的奇数。第二个数字必须在1的范围和维度的平方。如果第二个数字不在该范围内,则打印错误消息Number not in Range

您将在三行中写下第二个数字的neigboring数字。每行将有三个由一个空格分隔的整数。如果第二个数字是42,那么这应该是您的输出:

72 43 44
71 42 21
70 41 20

如果第二个数字是64,那么这应该是您的输出:

66 37 36
65 64 63
100 99 98

如果第二个数字位于螺旋的外边缘,那么打印Number on Outer Edge

1 个答案:

答案 0 :(得分:0)

尝试按照您认为需要做的步骤逐步分解:

       1) scan 2d array for your number
       2) do algorithm to print spiral
            -print x numbers on row -1, print x numbers on row + 1
            -print y numbers on col -1, print y numbers on col + 1
       3) then start checking for special cases, like if number was in outer edge