一道邏輯題的程序翻譯

題面

1. 這道題的答案是():  A:A B:B C:C D:D
2. 第五題的答案是():  A:C B:D C:A D:B
3. 與其他三個答案不同的是():
  A: 第3題  B: 第6題  C: 第2題  D: 第4題
4. 以下選項兩題答案相同的是():
  A: 第1,5題  B: 第2,7題  C: 第1,9題  D: 第6,10題
5. 以下哪個答案與本題相同():
  A: 第8題  B: 第4題  C: 第9題  D: 第7題
6. 以下哪兩個答案與8題相同():
  A: 第2,4題  B: 第1,6題  C: 第3,10題  D: 第5,9題
7. 在此十題答案中被選中字母次數(shù)最少的是():
  A: C  B: B  C: A  D: D
8. 以下哪個答案與1題的答案在字母表中不相鄰():
  A: 第7題  B: 第5題  C: 第2題  D: 第10題
9. 已知 “第1題與第6題的答案相同” 與 “第X題與第5題的答案相同” 的真假性相反,那么X為():
  A: 6  B: 10  C: 2  D: 9
10. 在此十題答案中字母ABCD出現(xiàn)最多次數(shù)與最少者差():
  A: 3  B: 2  C: 4  D: 1

以下為JavaScript代碼翻譯

const valid = (a) => {
    const eq = (m, n, x, y) => a[m] === a[n] && (!x || a[n] === a[x]) && (!y || a[x] === a[y])
    const map = a.reduce((m, item) => {
        m[item] = (m[item] || 0) + 1
        return m
    }, {})
    const [min, middle1, middle2, max] = [1,2,3,4].sort((m, n) => map[m] - map[n])

    return true &&
    // 2 第二題和第五題答案存在映射關系
    [undefined, 3, 4, 1, 2][a[2]] === a[5] &&
    // 3 只有一個跟其它不一樣,可以解釋為有兩種值,(其實更嚴謹?shù)淖龇ㄐ枰偌由掀渲幸环N值的次數(shù)是奇數(shù))
    new Set([a[3], a[6], a[2], a[4]]).size === 2 &&
    // 4 只有一組相同
    [eq(1, 5), eq(2, 7), eq(1, 9), eq(6, 10)].filter(n => !n).length === 1  &&
    // 5 只有一個相同 同 4
    [8, 4, 9, 7].filter(n => a[n] === a[5]).length === 1 &&
    // 6 還是一樣的套路 同 4,5
    [eq(8, 2, 4), eq(8, 1, 6), eq(8, 3, 10), eq(8, 5, 9)].filter(n => n).length === 1 &&
    // 7 最小次數(shù)已經(jīng)算出,映射關系
    [undefined, 3, 2, 1, 4][a[7]] === min &&
    // 8 相鄰就是差值不大于1
    [7, 5, 2, 10].filter(n => Math.abs(a[1] - a[n]) > 1).length === 1 &&
    // 9 兩個條件結(jié)果取反, 也就是eq(1,6) != eq(x,5)
    [6, 10, 2, 9].filter(x => eq(1, 6) != eq(x, 5)).length === 1 &&
    // 10 同 7
    [undefined, 3, 2, 4, 1][a[10]] === map[max] - map[min] && 
    true
}


for (let i = 1; i < Math.pow(4, 10); i++) {
    let arr = Array(10).fill(0).map((n, index) => {
        if (index) {
            return Math.floor(i / Math.pow(4, index)) % 4 + 1
        } else {
            return i % 4 + 1
        }
    })
    if (valid([undefined].concat(arr))) {
        console.log(arr.map(i => 'ABCD'[i - 1]))
    }
}

Result: [ 'C', 'A', 'B', 'A', 'C', 'B', 'D', 'A', 'C', 'B' ]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 文|北左夏右 你聽說了嗎,無戒老師的三百六十五天極限挑戰(zhàn)營火熱報名進行中。熱愛文字的你,走過路過千萬別錯過喲! 記...
    北左夏右閱讀 367評論 8 6
  • h
    16de687f9f78閱讀 151評論 0 3
  • #30天意志力培養(yǎng)挑戰(zhàn)# 10/30天 挑戰(zhàn)內(nèi)容: 閱讀《如何閱讀一本書》,形成1-3張卡片 今日感受及收獲: 閱...
    左左沙洲閱讀 155評論 0 1
  • 淺灘上誰為你擱淺了一地的憂傷 回首前世 金戈鐵馬 誰又曾想輪回后你傾城的笑靨 落下了一地的繁華 秋去春來 雨雪霏霏...
    霽_閱讀 263評論 0 3

友情鏈接更多精彩內(nèi)容