當前位置:
首頁 > 知識 > 面試題:布爾變數

面試題:布爾變數

點擊上方「

Python開發

」,選擇「置頂公眾號」


關鍵時刻,第一時間送達!






下面這篇文章是從StackOverflow來的。LZ面試的時候遇到了一道面試題:「如果有三個Bool型變數,請寫出一程序得知其中有2個以上變數的值是true」,於是LZ做了下面的這樣的程序:

boolean

atLeastTwo

(

boolean

a,

boolean

b,

boolean

c)

{
   

if

((a && b) || (b && c) || (a && c)) {
       

return

true

;
   }

else

{
       

return

false

;
   }
}

面試官接著問到,請對你的這個程序改進一下,但LZ不知道怎麼改進,於是上StackOverflow上問了一下,下面是StackOverflow上的眾網友的回答。再往下看的時候,希望你自己能先想一想怎麼改進。



有人說,如果你有下面這樣的代碼?

if

(someExpression) {
     

return

true

;
  }

else

{
     

return

false

;
}

你應該改成:

return

someExpression;

所以,LZ的代碼應該寫成:

return

((a && b) || (b && c) || (a && c));

當然,解法不單單只有一種,還有下面的這些解決:

1)使用

卡諾圖

return

a ? (b || c) : (b && c);

2)使用異或

return

a ^ b ? c : a

3)按照字面

(a?

1

:

0

)+(b?

1

:

0

)+(c?

1

:

0

) >=

2

a&&b || b&&c || a&&c

4)把Bool當成0和1

a&b | b&c | c&a

a + b + c <=

2


5)如果bool不能當成0和1,則:

int

howManyBooleansAreTrue =
(a ?

1

:

0

)
+ (b ?

1

:

0

)
+ (c ?

1

:

0

);

return

howManyBooleansAreTrue >=

2

;

歡迎你留下你的想法。





  • 來自:陳皓



  • https://coolshell.cn/articles/2514.html



  • Python開發整理髮布,轉載請聯繫作者獲得授權



【點擊成為程序員大咖】

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發 的精彩文章:

TAG:Python開發 |