Maison > Questions et réponses > le corps du texte
L'exigence est de convertir 00h30 - 11h00 du jour en cours en une chaîne de seulement 1 et 0, où 1 signifie inclus dans la période et 0 signifie non inclus
La chaîne résultante de 00h30 à 11h00 est 0111111111111111111111000000000000000000000000000
Les horaires peuvent être dispersés et pas nécessairement cohérents. Par exemple, 11h00-12h00 et 14h00-16h00.
S'il vous plaît, dites-moi quoi faire. Merci les gars~
淡淡烟草味2017-05-16 13:05:25
Écrit une version js pour la console
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);
Le temps est utilisé[[0,30],[11,0]]
表示00:30 - 11:00
, donc la deuxième situation est comme ça
([[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);
Ce qui suit est le décodage
("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
Convertissez le temps en secondes, et vous pouvez changer les secondes en binaire. Quant à savoir si vous pouvez utiliser le format binaire selon la table de codage ou d'autres méthodes, c'est à vous de décider
.曾经蜡笔没有小新2017-05-16 13:05:25
L'unité d'une demi-heure divise 1 jour en 48 segments. 0-47 indique que le numéro de segment correspond à chaque période de temps.
La i-ième chaîne de chaîne correspond au numéro de segment i. time. 1 indique que ce n'est pas pendant cette période.
Le programme spécifique n'est pas difficile à écrire.
Demandez simplement le numéro de segment et remplacez le contenu de la chaîne.
Le numéro de segment permet de convertir le temps en heures, puis de le diviser par 0,5 pour arrondir.