2016-07-16 89 views
1

我最近在採訪時被問到了這個問題,但我無法解決這個問題。我想在這裏發佈,看看有沒有人可以給我一些關於如何解決這些問題的想法。訪談:繪製形狀(圓圈和正方形),直到面積小於X

問題:給定正X軸和Y軸...

  1. 開始通過繪製寬度的正方形= A(比如說A = 1000)
  2. 接着繪製的圓正方形內的最大可能半徑,以便圓形接觸正方形的所有四邊。
  3. 接下來在這個圓內畫一個正方形,使得正方形的所有4個頂點都接觸圓。
  4. 繼續重複上述過程,並不斷繪製圓和正方形,直到剛繪製的形狀的區域爲< B(比如B = 10)。

收件的僞代碼/邏輯來實現這一目標。

下面是一個示例圖,顯示面試官問什麼(原諒失真部分)。

Sample diagram, obviously, the question is theoretical, so don't read too much into the exact shape of my drawing

+1

廣場的面積是s^2。圓的面積是pi(s/2)^ 2。接下來的是s/sqrt(2)。爲了解決這種問題,您可以手動輕鬆地完成這項工作,我建議您手動完成並向您自己描述您正在執行的步驟。 – Ryan

+0

每個連續平方的面積減少2倍。因此,首先將第一個平方的面積除以2,直到面積小於B.然後檢查下一個更大的圓是否仍然小於B.該圓比對應的內切正方形大PI/2。 – user3386109

+0

具體你卡在哪裏?也許找到新形狀的半徑或寬度?還是更基本的東西? –

回答

0

你有2個的情況:你給定一個正方形的寬度則圓的面積將是 A =

  1. (寬度^ 2)* pi/4的

  2. 你給出的圓的半徑廣場面積然後是 A = 2 *(R^2)

在蟒蛇:

R=0 
width=1000 
result=1000000 
B=10 
square=True 

while result > B: 
    if square: 
     R=width/2 
     result=math.pi*(R*R) 
    else: 
     width=R*math.sqrt(2) 
result=2*R*R 
    square = not square 

print(result) 
0

這是一個非常簡單的數學問題。基本思想是通過了解方的邊和圓的直徑(或半徑)來始終計算表面。該公式是:

P = A^2爲方形

P =(d^2)/ 4對於其中d爲直徑(未半徑)的圓。

第一正方形的邊是a,那麼這意味着未來的圓的直徑也a,這反過來又意味着,對角線下一個正方形的是a。你可以使用畢達哥拉斯定理來計算正方形的邊,然後重複這個步驟,直到達到小於所要求的表面。

我沒有寫一行代碼,因爲沒有指定語言,我想你可以用我的想法來管理它。在這些採訪中,他們通常只是想看看你的思路。