pythonindexof
㈠ 什麼是36進制
三十六進制,是數據的一種表示方法。同我們日常生活中的表示法不一樣。它由0-9,A-Z組成,字母不區分大小寫。與10進制的對應關系是:0-9對應0-9;A-F對應10-35。
進制說明:
36進制是 0-F ()
㈡ 如何優雅地判斷N個布爾值是否全部相等
假設數組定義為 {a_i:0le i < n}。
用 Array.prototype.indexOf() 可以搜尋x是否存在於數組,即判斷 exists i(a_i=x)。如果 x 存在,返回該索引( i >= 0),如果不存在,該函數在返回 -1。
然後我們需要檢查所有元素是否相等,那麼等價於檢查所有元素是否等於第一個元素,取反一下:forall i (a_i=a_0)
Leftrightarrow eg eg forall i (a_i=a_0)\
Leftrightarrow eg exists i(a_i e a_0)
由於問題需求剛好是布爾數組,所以 a_i e a_0 Leftrightarrow a_i= eg a_0,那麼就可變換為: eg exists i (a_i= eg a_0)
用 Array.prototype.indexOf() 的好處是原生提供的,而且是很直接的做最多 n 次相等測試,所以應該比以腳本自行實現快。但這個解答僅限於布爾數組才能使用
一行(慢):return array.min() == array.max();
兩行(居中):long n = array.count(true);
return n == array.size() || n == 0;
三行(平均快):return adjacent_find(array.begin(), array.end()
[](bool lhs, bool rh{ return lhs != rhs; }) == array.end();Java 運行環境JDK8boolean a = true;
boolean b = true;
boolean c = true;
boolean d = true;
boolean e = true;
boolean f = true;
boolean g = true;
boolean h = false;
System.out.println(Stream.of(a,b,c,d,e,f,g).collect(Collectors.toSet()).size() == 1); // true
System.out.println(Stream.of(a,b,c,d,e,f,g,h).collect(Collectors.toSet()).size() == 1); // false
放棄用bool改用bit。。
bitmap==0||!(bitmap<<(32-N))>>(32-N)==0&vec == |vec如果vec全0,那麼得到0==0,表達式為真;如果vec全1,那麼得到1==1,表達式為真;如果vec有0有1,那麼得到0==1,表達式為假。另解(比較容易實現,但沒有上面那個優雅):sum = SUM(vec)return sum == 0 || sum == len(vec)來一個強行python版~return sum(mylist) % len(mylist) == 0解釋就是,求和時True為1,False為0,所以全部為false時sum為零,全部為True時sum等於list長度,只有在這兩種情況下sum除以len才能余數為0。如果list中有true有false,那得到的數肯定大於零、小於list長度。arr.every(b => b === arr[0]);