Rumah > Soal Jawab > teks badan
Keperluan adalah untuk menukar 00:30 - 11:00 hari semasa kepada rentetan hanya 1 dan 0, dengan 1 bermakna termasuk dalam tempoh masa dan 0 bermakna tidak termasuk
Rentetan yang terhasil dari 00:30 - 11:00 ialah 01111111111111111111111000000000000000000000000
Masa mungkin berselerak dan tidak semestinya koheren Contohnya, 11:00-12:00 14:00-16:00
Sila beritahu saya apa yang perlu dilakukan. Terima kasih semua~
淡淡烟草味2017-05-16 13:05:25
Menulis versi js untuk konsol
let calcPos = arr=>arr[0]*2+(arr[1]===0?0:1);
([[0,30],[11,0]].reduce(
(a,b,i,arr)=>
a+= new Array(calcPos(b)+(i===0||i%2===0?0:1)-a.length)
.fill(i%2===0?"0":"1")
.join("")
, "")+new Array(48).fill("0").join(""))
.slice(0,48);
Masa digunakan[[0,30],[11,0]]
表示00:30 - 11:00
, jadi situasi kedua macam ni
([[0,30],[11,0],[14,0],[16,0]].reduce((a,b,i,arr)=>a+=new Array(calcPos(b)+(i===0||i%2===0?0:1)-a.length).fill(i%2===0?"0":"1").join(""), "")+new Array(48).fill("0").join("")).slice(0,48);
Berikut ialah penyahkodan
("0"+"011111111111111111111110000011111000000000000000")
.split("")
.reduce(
(a,b,i,arr)=>
i===0?a:b!==arr[i-1]?[...a, (b==="1"?i:(i-1)) -1]:a
, [])
.map(i=>[(i-(i%2===0?0:1))/2, i%2===0?0:30]);
黄舟2017-05-16 13:05:25
Tukar masa kepada saat, dan tidak mengapa untuk menukar saat kepada binari - sama ada anda boleh menggunakan format binari mengikut jadual pengekodan atau kaedah lain, terpulang kepada anda.
曾经蜡笔没有小新2017-05-16 13:05:25
Unit setengah jam membahagikan 1 hari kepada 48 segmen menunjukkan bahawa nombor segmen sepadan dengan setiap tempoh masa
Rentetan ke-i sepadan dengan nombor segmen i masa. 1 menunjukkan bahawa ia bukan pada masa ini
Program khusus tidak sukar untuk ditulis.
Hanya minta nombor segmen dan gantikan kandungan rentetan
Nombor segmen adalah untuk menukar masa kepada jam dan kemudian bahagikannya dengan 0.5 untuk dibundarkan.