令人困惑的數(shù)字:
如果數(shù)組中的一個(gè)數(shù)字在垂直和水平旋轉(zhuǎn) 180 度后變成了另一個(gè)也存在于數(shù)組中的數(shù)字,那么該數(shù)字就會(huì)令人困惑。例如,如果我們將 6 垂直和水平旋轉(zhuǎn) 180 度,它就會(huì)變成 9,反之亦然。
我們必須記住,只有 0、1、6、8、9 的旋轉(zhuǎn)才會(huì)產(chǎn)生有效的結(jié)果。
我們需要編寫一個(gè) JavaScript 函數(shù),該函數(shù)接受自然數(shù) num 作為第一個(gè)也是唯一的參數(shù)。該函數(shù)應(yīng)首先構(gòu)造一個(gè)包含 num 之前所有自然數(shù)的數(shù)組,包括 num。
例如,對(duì)于 num = 5,該數(shù)組應(yīng)為 –
[1, 2, 3, 4, 5]
登錄后復(fù)制
然后該函數(shù)應(yīng)該計(jì)算數(shù)組中存在多少個(gè)令人困惑的數(shù)字,并最終返回該計(jì)數(shù)。
例如 –
如果輸入是 –
const num = 10;
登錄后復(fù)制
那么輸出應(yīng)該是 –
const output = 5;
登錄后復(fù)制
因?yàn)閿?shù)組將是:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 并且令人困惑的數(shù)字是 –
1, 6, 8, 9, 10
登錄后復(fù)制
示例
其代碼為 –
?實(shí)時(shí)演示
const num = 10; const countConfusing = (num = 1) => { let count = 0; const valid = '01689'; const rotateMap = {'0': '0', '1': '1', '6': '9', '8': '8', '9': '6'}; const prepareRotation = num => { let res = ''; const numArr = String(num).split(''); if(numArr.some(el => !valid.includes(el))){ return false; }; numArr.map(el => { res = rotateMap[el] + res; }); return +res; }; for(let i = 1; i <= num; i++){ const rotated = prepareRotation(i); if(rotated && rotated > 0 && rotated <= num){ count++; }; }; return count; }; console.log(countConfusing(num));
登錄后復(fù)制
輸出
控制臺(tái)中的輸出將是 –
5
登錄后復(fù)制
以上就是在 JavaScript 中查找數(shù)組中令人困惑的數(shù)字的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!