2014-12-06 113 views
1

在處理谷歌foobar問題時,我遇到了一個提示如下的問題:這些測試用例是否正確?

布爾是一位臭名昭着的瘋狂科學家,剛剛發現他珍貴的兔子標本已經逃脫!他急於在實驗室電話上給他的安全部門打電話。然而,兔子逃離者破壞了電話以加速她的逃跑!她留下了一個帶有以下線索的標誌:每個被撥打的數字必須是一個數字,可以由最後一位撥號的騎士棋子到達 - 也就是說,您必須在一個方向上精確移動2個空格,然後按1在垂直方向上的空間撥打下一個正確的號碼。您可以撥打任何您想要開始的號碼,但後續號碼必須遵守騎士的移動規則。

實驗室電話的號碼排列方式如下:第一行1,2,3;第二行中的第4,5,6行;第三排中的7,8,9;空白,0,第四行空白。

1 2 3 
4 5 6 
7 8 9 
    0 

例如,如果你只是撥了一個1,你撥打的下一個號碼,必須爲6或8。如果你只是撥了一個如圖6所示,下一個數字必須是1或7

布爾教授希望你找出他可以在這些條件下撥打多少個不同的電話號碼。編寫一個稱爲answer(x,y,z)的函數來計算可以用數字x開始撥號的電話號碼數量,結束於數字y,並且總共由z個數字組成。將此數字輸出爲表示以10爲底數的字符串。

x和y將是從0到9的數字。z將在1和100之間(包括1和100)。

測試用例

輸入: (int)的X = 6 (INT)Y = 2 (INT)Z = 5 輸出: (字符串) 「6」

輸入: (INT)X = 1 (int)的Y = 5 (INT)Z = 100 輸出: (字符串) 「0」

輸入: (INT)X = 3 (INT)Y = 7 (int)的Z = 1 輸出: (字符串) 「0」


我覺得第一測試情況下,因爲拉出後是錯誤決策樹我發現的唯一數字是61672,67272,67292,67672,這隻有四個。 有什麼我誤解或錯過這個問題?

+2

您錯過了60492和60672 – adamdc78 2014-12-06 07:11:03

+0

我的印象是,既然問題中提到「如果您只是撥打了6,下一個數字必須是1或7」,那麼空白不會被認爲是有效的移動 – lying 2014-12-07 07:36:58

+1

問題描述包含錯誤。如果你剛剛撥6,下一個號碼可以是1,7或0。 – 6502 2014-12-07 08:13:37

回答

2

我不認爲測試用例是錯誤的,但聲明

如果你只是撥了一個6,未來數必須是1或7

是錯誤的。不能從6到0使問題沒有任何意義。至於你的評論,空白不是有效的動作,但是這與6 - > 0有效有什麼關係?

1 2 3 
4 5 6 
7 8 9 
    0 

顯然6→0是一個有效的舉動,不涉及空白。